IBM PC CONVERTIBLE Technical Reference page 142

Table of Contents

Advertisement

OA60
OA61
OA62
OA63
OA64
OA65
OA68
OA6A
OA70
OA72
OA75
OA7B
OA7E
OA80
OA85
OA87
OA8A
OA8C
OA8E
OA90
OA92
OA95
OA98
OA9A
OA9B
OA9D
OA9F
OAAO
OAAI
OAA3
OAA3
OAA8
OAAA
OAAF
OABI
OABI
OAB3
OAB5
OAB7
OAB9
OABB
OABD
OABF
OABF
OACO
OAC2
OAC4
OAC6
OAC7
OACA
OACC
OACE
OADO
OAD2
OAD4
OAD6
OAD7
IE
PUSH
OS
MUST USE 40:0 FOR DATA AREA
50
PUSH
AX
53
PUSH
BX
51
PUSH
CX
FOR CURSOR LIMITS
52
PUSH
OX
CURRENT CURSOR POSITION
B8 ----
MOV
AX,XXDATA
HEX 50
8E CO
MOV
ES,AX
26: 80 3E 0000 R 01
CMP
STATUS_BYTE,PRTSLJlCTIVE; PRINT IN PROGRESS?
JFZ
EXIT
; YES, JUMP TO END
75 03
JNZ
$+5
; I F NOT ZERO JUMP AROUND JUMP
E9 OB07 R
JMP
EXIT
; ELSE TAKE A LONG JUMP
26: C6 06 0000 R 01
MOV
STATUS_BYTE,PRTSLJlCTIVE; SHOW PRNT IN PROGRESS
B8 ---- R
MOV
AX,DATA
HEX 40
8E 08
MOV
DS,AX
83 3E 0008 R 00
CMP
PRI NTER_BASE [OJ, 0
IS PRINTER ATTACHED?
JFZ
ERR20
NO, ERROR EX IT
75 03
JNZ
$+5
I F NOT ZERO JUMP AROUND JUMP
EB 6F 90
JMP
ERR20
ELSE TAKE A LONG JUMP
B4 OF
MOV
AH ,GELVIDEO_STATE
REQUEST CURRENT SCREEN MODE
CD 10
INT
VIDEO_FN
ON RETURN
[ALJ = MODE,
[AHJ=NUMBER COLUMNS/LINE,
;
-
---
----
--
--
- --
-
- - - - - -- - - - - - -- - - -
-
- -- -- - - -
- - -
-
- -
- - -- - - - -
--
- - --
--
8A CC
B5 19
E8 OBOE R
F6 C4 29
75 5E
51
B4 03
CD 10
59
52
33 02
F6 06 0071 R 80
74 07
80 26 0071 R 7F
EB 35
B4 02
CD 10
B4 08
CD 10
OA CO
75 02
BO 20
52
33 02
32 E4
CD 17
5A
F6 C4 29
75 27
FE C2
3A CA
75 01
32 02
8A E2
52
E8 OBOE R
AT THIS POINT WE KNOW THE COLUMNS/LINE ARE IN
[AXJ AND THE PAGE IF APPLICABLE IS IN -BH-. THE STACK
HAS DS,AX,BX,CX,DX PUSHED. -AL- HAS VIDEO MODE
MOV
MOV
CALL
TEST
JNZ
PUSH
MOV
INT
POP
PUSH
XOR
CL,AH
CH,25
CRLF
AH,29H
ERR20
CX
AH,GELCURSOR_INFO
VIDEO_FN
CX
OX
DX,DX
USE OF -CX- REGISTER TO
CONTROL ROW
&
COLUMNS
CR LF ROUTINE
TEST FOR PRINTER ERRORS
OUT OF PAPER, I/O & TIME OUT
JUMP I F ERROR DETECTED
SAVE SCREEN BOUNDS
WILL NOW READ THE CURSOR.
ON RETURN: CX=CRNT CRSR MODE,
OX = ROW, COL OF CRNT CURSOR
RECALL SCREEN BOUNDS
SAVE CURRENT CURSOR POSITION
WILL SET CURSOR POS TO -0,0-
THE LOOP FROM PRII0 TO THE INSTRUCTION PRIOR TO PRI20
IS THE LOOP TO READ EACH CURSOR POSITION FROM THE
SCREEN AND PRINT.
PRIlO:
TEST
BIOS_BREAK, BREAK-HIT ; HAS BREAK KEY BEEN PRESSED?
JZ
PRIl2
; NO KEY, JUMP AROUND
AND
BIOS_BREAK,NOT BREAK-HIT; YES, TURN 8REAK KEY OFF
JMP
SHORT
PRI20
; JUMP TO END
PRI 12:
MOV
AH, SELCURSOR_POS
TO SHOW CURSOR SET REQUEST
INT
VIDEOJN
NEW CURSOR POSITION
MOV
AH, READ--.ATLCHAR
TO INDICATE READ CHARACTER
INT
VIDEO_FN
CHARACTER NOW IN [ALJ
OR
AL,AL
SEE IF VALID CHAR
JNZ
PRIl5
JUMP IF VALID CHAR
MOV
AL,' ,
MAKE A BLANK
PRIl5 :
PUSH
OX
SAVE CURSOR POSITION
XOR
DX,DX
INDICATE PRINTER 1
XOR
AH,AH
TO SHOW PRINT CHAR IN -AL-
INT
PRINTERJN
PRINT THE CHARACTER
POP
OX
RECALL CURSOR POSITION
TEST
AH, 29H
TEST FOR PRINTER ERRORS
OUT OT PAPER, I/O & TIME OUT
JNZ
ERRI0
JUMP I F ERROR DETECTED
INC
DL
ADVANCE TO NEXT COLUMN
CMP
CL,DL
SEE IF AT END OF LINE
JNE
PRII0
I F NOT PROCEED
XOR
DL,DL
BACK TO COLUMN 0
MOV
AH,DL
[AHJ =0
PUSH
OX
SAVE NEW CURSOR POSITION
CALL
CRLF
LINE FEED CARRIAGE RETURN
ROM BIOS 2-117

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents