IBM Pereonet COMpute,.. MACRO Assembler
Ver.ion 02.00
1-16
VIDEOI
--- 06/10/85
VIDEO DISPLAY BIOS
06-10-85
1637
;
SI,OS
=
POINTER TO REGEN AREA OF
INTEREST
1636
;
BX
=
EXPANDED FOREGROUND COLOR
1639
,
BP
=
POINTER TO SAVE AREA
1640
I
EXIT -
1641
;
SIANO BP ARE
INCREMENTED
1642
~~;-
--
- -
;~~;
- - --
~~~~
-------
- - -
----
- - - - - - - - - -- -- - - - -
-
1643 06BC
1644 06BC AD
LODSW
GET F[RST BYTE AND SECOND BYTES
1645 0680
86
C4
XCHG
AL, AH
SWAP FOR COMPARE
1646 06BF B9 COOO
MOV
CX.OCOOOH
2
BIT MASK TO TEST THE ENTRIES
1647 06C2 B2 00
MOV
DL, 0
RESULT REG I S TER
1648 ObC4
S24
~
1649 06C4 85 CI
TEST
AX,CX
IS THI S SECTI ON BACKGROUND?
1650 06C6
74
01
52.
IF ZERO.
IT IS BACKGROUND
(CARRY.,O)
1651
06C8 F9
5TC
WASN'T.
SO SET CARRY
"Z
1652 06C9
S25:
1653 06C9 DO 02
RCL
DL,I
MOVE THAT BIT I NTO THE RESULT
'654
06C8 CI E9
02
5HR
CX.2
MOVE THE MASK TO THE RIGHT BY
2
81TS
1655 06CE 13 F4
"NC
52.
DO IT AGAIN IF MASK DIDN'T FALL OUT
1656 0600 88 56 00
MOV
[8Pj.OL
STORE RESULT
IN SAVE AREA
1657 0603 45
INC
BP
ADJUST POINTER
1658 0604 C3
RET
ALL DONE
1659 0605
523
ENDP
1660
;
---- ----- - -
-
-
---
- - -
----------------
- - - -
-
1661
V4 POSITION
166,2
TR [S ROUT I NE TAKES THE CURSOR POS [T I ON CONT A I NED
1 N
1663
THE MEMORY LOCATION, AND CONVERTS IT
INTO AN OFFSET
1664
INTO THE REGEN BUFFER,
ASSUMING ONE BYTE/CHAR.
1665
FOR MEDIUM RESOLUTION GRAPHICS. THE NUMBER MUST
1666
BE DOUBLED.
1661
ENTRY --
NO
REGISTERS,MEMORY LOCATION .CURSOR POSN IS USED
1668
EXIT--
1669
AX CONTAINS OFFSET INTO REGEN BUFFER
1610
;~~
--
---PR~
--
--~~;R-
--------------------
1611
0605
1612 0605 AI
0050 R
MOV
AX ,.CURSOR POSN
GET CURRENT CURSOR
1673 0608
GRAPH POSN
LABEL
NEAR
1674 0608 53
-
PUSH
BX
SAVE REGI STER
1675 0609 88 08
MOV
BX,AX
SAVE A COPY OF CURRENT CURSOR
1676 060B 8A C4
MOV
AL.AH
GET ROWS TO AL
1677 0600 F6 26 004A R
MUL
BYTE PTR OCRT COLS
MULTIPLY BY BYTES/COLUMN
1678 06EI CI EO 02
SHL
AX.2
-
MULTIPLY· 4 SINCE 4 ROWS/BYTE
1619 06E4
2A FF
SU8
BH,BH
I SOLATE COLUMN VALUE
1680 06E6 03 C3
ADD
AX,BX
DETERM I NE OFFSET
1681
06E8 58
POP
BX
RECOVER POINTER
1682 06E9 C3
RET
ALL DONE
1683 06EA
S26
ENOP
1684
; --- WR I TE_TTY ----- - --------------------------------- -- -----------------------
1685
I
I
1686
THIS INTERFACE PROVIDES A TELETYPE LIKE INTERFACE TO THE
1687
V IDEO CARDS.
THE I NPUT CHARACTER IS WR I TTEN TO THE CURRENT
1688
CURSOR POSITION,
AND THE CURSOR IS MOVED TO THE NEXT POSITION.
1689
IF THE CURSOR LEAVES THE LAST COLUMN OF THE FIELD, THE COLUMN
1690
I S SET TO ZERO, AND THE ROW VALUE I S INCREMENTED.
I
F THE ROW
1691
ROW VALUE LEAVES THE FIELD. THE CURSOR
IS PLACED ON THE LAST ROW,
1692
FIRST COLUMN.
AND THE ENTIRE SCREEN
[S SCROLLED UP ONE LINE.
1693
WHEN THE SCREEN IS SCROLLED UP,
THE ATTR[8UTE FOR FILLING THE
1694
NEWL Y 8LANKED LINE
IS READ FROM THE CURSOR
pas
I T I ON ON THE PREV 10US
1695
LINE BEFORE THE SCROLL.
IN CHARACTER MODE.
IN GRAPHICS MODE,
1696
THE 0 COLOR
[S USED.
1697
ENTRY -
1698
(AH)
=
CURRENT CRT MODE
1699
(ALl
=
CHARACTER TO BE WR ITTEN
1100
NOTE THAT BACK SPACE. CARRIAGE RETURN, BELL AND LINE FEED ARE
1101
HANDLED AS COMMANDS RATHER THAN AS DISPLAY GRAPHICS CHARACTERS
110,2
fBU
•
FOREGROUND COLOR FOR CHAR WRITE IF CURRENTLY
IN
A GRAPHICS MODE
1103
EXIT -
1104
ALL REGISTERS SAVED
1105
1106
ASSUME
DSIOATA
1101 06EA
WRITE TTY
PROC
NEAR
1108 06EA 50
-
PUSH
AX
SAVE REGI STERS
1109 06EB 50
PUSH
AX
SAVE CHARACTER TO WRITE
1110 06EC 84 03
MOV
AH,03H
1711
O&EE 8A 3E 0062 R
NOV
BH,.ACTiVE PAGE
GET CURRENT PAGE SETTi NG
1112 06F2 CO
10
INT
IOH
-
READ THE CURRENT CURSOR POS I T I ON
1113 06F4 58
POP
AX
RECOVER CHARACTER
1114
11 IS
1-----
OX NOW HAS THE CURRENT CURSOR POSITION
1116
1111 0&F5 3C 00
COP
AL.CR
1SIT CARR
I
AGE RETURN OR CONTROL
1118 06Fl 164&
"BE
U8
GO TO CONTROL CHECKS
IF
[T
[S
1119
1120
1-----
WRITE THE CHAR TO THE SCREEN
1121
06F.
UOI
1122 06F. B4 OA
MOV
AH,OAH
WR I TE CHARACTER ONLY COr.tMAND
1123 06FB B9 0001
MOV
CX,I
ONLY ONE CHARACTER
1124 06FE CO
I
0
INT
10H
WR I TE THE CHARACTER
1125
1126
POS I T I ON THE CURSOR FOR NEXT CHAR
1121
1128 0100 FE C2
INC
DL
112' 0102 3A
16 004A R
CMP
OL,BYTE PTR OCRT COLS
TEST FOR COLUMN OVERFLOW
1130 0106 15 33
JNZ
U1
-
SET CURSOR
1131
01088200
NOV
DL,O
COLUMN FOR CURSOR
1132 010A 80 FE
18
COP
OH,25-1
CHECK FOR LAST ROW
1133 0100 15 2A
"NZ
Ub
SET_CURSOR_'NC
1134
1135
SCROLL REQU [RED
1136 010F
1131 OlaF 84 02
MOV
AH,02H
11380111 CD 10
INT
10H
;
SET THE CUR SOR
1139
1140
1-----
DETERMINE VALUE TO FILL WITH DURING SCROLL
1141
1142 0113 AD 004' R
MOV
AL ,OCRT_MODE
; GET THE CURRENT MODE
11430116 3C 04
CMP
AL.4
1144 0718 102 06
"C
U2
;
READ-CURSOR
1145 aliA 3C 07
CMP
AL,T
1146 011C B7 00
MOV
BH,O
FILL WITH BACKGROUND
IT41 011E 15 06
"NE
U3
SCROLL-UP
1148 01.20
READ-CURSOR
U"
1149 01.20 84 08
MOV
AH,08H
GET READ CURSOR COMMAND
1150 012,2 CD
10
INT
, OH
READ CHARIATTR AT CURRENT CURSOR
5-158
VIDEO1