IBM PC CONVERTIBLE Technical Reference page 176

Table of Contents

Advertisement

0195
B4 01
0197
5B
0198
59
0199
5E
019A
5A
019B
IF
019C
CF
019D
019D
50
019E
42
019F
EC
01AO
A8 80
01A2
75 23
01A4
F8
01A5
B8 90FE
01A8
CD 15
01AA
72 13
01AC
01AC
2B C9
01AE
01AE
EC
OlAF
8A EO
01B1
A8 80
01B3
75 12
01B5
E2 F7
01B7
A8 08
01B9
74 07
01BB
FE CB
01BD
75 ED
01BF
01BF
80 CC 01
01C2
01C2
80 E4 F9
01C5
EB 19
01C7
58
01C8
4A
01C9
EE
01CA
42
01CB
50
01CC
BO OD
01CE
42
01CF
EE
01DO
24 FE
0102
EE
01D3
58
01D4
01D4
50
0105
BO:
MOV
AH,OlH
COMMON EXIT FOR ALL PRINTER FUNCTIONS
B1 :
POP
POP
POP
POP
IRET
POP
CX
SI
DX
DS
BX
PRINT THE CHARACTER IN (AL)
B2 :
PUSH
INC
AX
DX
CHECK FOR PRINTER BUSY
IN
TEST
JNZ
AL,DX
AL,NOLBUSY
B4
NO, RETURN TIMEOUT STATUS
RECOVER REGISTERS
RECOVER REGISTERS
SAVE VALUE TO PRINT
POINT TO STATUS PORT
GET STATUS
IS PRINTER CURRENTLY BUSY?
NO THEN OULSTROBE
NOTIFY OPERATING SYSTEM THAT A PRINTER BUSY WAIT IS IN AFFECT
B3 :
CLC
MOV
INT
JC
SUB
BL1:
IN
MOV
TEST
JNZ
LOOP
TEST
JZ
DEC
JNZ
AX,90FEH
15H
B3_2
CX, CX
AL,DX
AH,AL
AL,NOLBUSY
B4
B3_1
AL, NOLERROR
B3_3
BL
B3
***INT 15 DEVICE BUSY
FUNCTION 90 PRINTER ID
JUMP I F TIMEOUT OCCURRED
WAIT_BUSY
GET STATUS
STATUS TO AH ALSO
IS PRINTER CURRENTLY BUSY
NO, OULSTROBE
YES, TRY AGAIN
CHECK FOR I (0 ERROR
YES, JUMP
FINISHED 500 MS DELAY?
NO, DO AGAIN
BUSY TIMEOUT OCCURRED
YES, TIMEOUT
BL2:
OR
B3_3:
AND
JMP
AH,l
AH,OF9H
SHORT B7
SET ERROR FLAG
TURN OFF THE OTHER BITS
RETURN WITH ERROR FLAG SET
PRINTER IS NOT BUSY SO STROBE OUT CHARACTER
B4 :
DEC
OUT
INC
PUSH
MOV
INC
OUT
AND
OUT
POP
POP
AX
DX
DX,AL
DX
AX
GET VALUE TO PRINT
POINT TO DATA REG
OUTPUT VALUE TO DATA REG
POINT TO STATUS PORT
SAVE VALUE TO PRINT
; OULSTROBE
AL,SELECT+NO_INIT+STROBE ; SET THE STROBE HIGH
OX
STRB IS BIT 0 OF PORT C
DX,AL
AL,NOT STROBE
SET THE STROBE LOW
DX,AL
AX
RECOVER THE OUTPUT CHAR
PRINTER STATUS
B5:
PUSH
B6:
01D5
8B 94 0008 R
MOV
INC
DX, PRINTEILBASE [S I]
OX
0109
42
ROM BIOS 2-151

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents