IBM AT 5170 Technical Reference page 310

Table of Contents

Advertisement

10
20
30
40
50
60
70
80
90
100
110
IBM Personal COlllputer MACRO Assembler
Version 2.00
I-I
PRT ------ 06/10/55
PRINTER ADAPTER 810S
06-10-85
I
PAGE
118,121
2
TITLE PRT -----
06/10/85
PRINTER ADAPTER BIOS
3
.286C
4
.LlST
5
0000
CODE
SEGMENT 8YTE PUBL I C
1
PUBLIC
PRINTER
10 1
EXTRN
ODS: NEAR
­
,
INT
17 H --------------------------------------- ----------------------- ­
II
PRINTER
10
12
THIS ROUTINE PROVIDES COMMUNICATION WITH THE PRINTER
"
INPUT
14
(AH): OOH
PRINT THE CHARACTER IN (ALI
15
ON RETURN,
(AH) = I
I F CHARACTER NOT BE PR I NTED (TIME OUT)
I.
OTHER BITS SET AS ON NORMAL STATUS CALL
11
(AH)=OIH
I N I TI ALI ZE THE PR I NTER PORT
I.
RETURNS WITH
IAHI
SET WITH PRINTER STATUS
{AH): OZH
READ THE PRINTER STATUS
INTO
IAH)
"
7
6
5
4
3
2-1
o
21
I
I
I
I
I
I
I
TIME OUT
23
I
UNUSED
2.
22
i i i
i
i
I
25
I
I
I
I
I_
I/O ERROR
2.
I
I
I
I
21
28
I
I
r
L
I
= SELECTED
2'
II
I
1-
I
= OUT OF PAPER
I
1 : ACKNOWLEDGE
"
32
I
­
33
I
I
=
NOT BUSY
34
35
lOX)
= PRINTER TO BE USED (0.1,2)
CORRESPONDING TO ACTUAL VALUES
3.
IN
""PRINTER 8ASE AREA
31
OAT A AREA ¢lPR I NTER BASE CaNT A I NS THE BASE ADDRESS OF THE PR I NTER CARD I S I
38
AVAILABLE
(LOCATED-AT BEGINNING OF DATA SEGMENT, 408H ABSOLUTE,
3 WORDS)
39
OAT A AREA ¢lPR I NT TIM OUT
(BYTE) MAYBE CHANGE TO CAUSE 0 I FFERENT
41
TIME OUT WAITS. DEFAULT=20 • 4
.2
'3
REG I STERS
(AHI
IS MODIFIED WITH STATUS
INFORMATION
..
ALL OTHERS UNCHANGED
.5
:----------- ­
4 •
ASSUME
CS:CODE,DS:OATA
.
,
48
0000
PRINTER 10 I
PRDC
FAR
ENTRY PO I NT FOR DRG OEFD2H
49
0000 F8
-sTT
INTERRUPTS BACK ON
000 l i E
PUSH
OS
SAVE SEGMENT
51
0002 56
PUSH
51
52
0003 52
PUSH
ox
53
0004 51
PUSH
ex
54
0005 53
PUSH
BX
55
0006 E8 0000 E
CALL
ODS
ADDRESS DATA SEGMENT
56
0009 88 F2
"OV
SI,OX
GET PR I NTER PARAMETER
51
0008 8A 9C 0078 R
"OV
BL .¢lPR INT_T I M_OUT[S 11
LOAD TIMEOUT VALUE
58
OOOF 01
E6
SHL
S I, I
WORD OFFSET
INTO TABLE INTO
(51)
59
0011
88 94 0008 R
MOV
DX.@PRINTER BASE[SI
J
GET BASE ADDRESS FOR PR I NTER CARD
0015 0802
OR
ox
.DX
-
TEST OX = ZERO.
INDICATING NO PRINTER
61
0017HOC
JZ
B"
EXIT,
NO PRINTER ADAPTER AT OFFSET
62
0019 OA E4
OR
AH,AH
TEST FOR
(AH) = OOH
63
0018 74 OE
JZ
B20
PRINT CHARACTER IN [ALI
64
0010 FE CC
DEC
AH
TEST FOR
{AHI: OIH
65
001F
14
58
JZ
B80
INITIALIZE PRINTER
66
0021 FE CC
DEC
AH
TEST FOR
(AH): 02H
67
0023
14
3F
JZ
B50
GET PR INTER STATUS
68
0025
810:
69
0025 5B
PDP
BX
RETURN
0026 59
POP
ex
7 I
0021 SA
PDP
ox
72
0028 5E
PDP
51
J RECOVER REGISTERS
73
0029 IF
POP
OS
74
002A CF
IRET
RETURN TO CALLING PROGRAM
15
,.
:-----
PRINT THE CHARACTER
IN IALl
11
78
0028
820:
79
0028 50
PUSH
SAVE VALUE TO PRINT
002C EE
OUT
DX,AL
OUTPUT CHARACTER TO DATA PORT
81
0020 42
INC
ox
POINT TO STATUS PORT
82
83
CHECK FOR PR INTER BU S
Y
8.
85
002E 53
PUSH
BX
SAVE TIMEOUT BASE COUNT
86
002F EC
IN
AL,DX
GET STATUS PORT VALUE
81
0030 A8 80
TEST
AL,60H
IS THE PRINTER CURRENTLY BUSY
88
0032 75 05
JNZ
B25
SKIP SYSTEM DEVICE BUSY CALL IF NOT
89
;-----
INT 15
H --
DEVICE 8USY
91
92
0034 88 90FE
"OV
AX.90FEH
FUNCT I ON 90 PR I NTER 10
93
0037 CD
15
IN1
ISH
SYSTEM CALL
94
'5
;
-----
WAIT BUSY
9.
97
0039
825:
ADJUST OUTER LOOP COUNT
98
0039 2A FF
SUB
BH,BH
CLEAR
I BH)
99
0038 CI
0302
RCL
BX ,2
MULTIPLY 8Y 4
003E
B30:
10!
003E 2B C9
SUB
CX,CX
INNER LOOP
164K)
102
0040
B35:
103
0040 EC
IN
AL,DX
GET STATUS
104
0041
5A EO
NOV
AH.AL
STATUS TO I AHJ
ALSO
105
0043 A8 80
TEST
AL.80H
IS THE PRINTER CURRENTLY BUSY
106
0045 15 OE
JNZ
B.O
GO TO OUTPUT STROBE
101
0047 E2 F1
LOOP
B35
LOOP IF NOT
108
0049 4B
DEC
BX
DECREMENT OUTER LOOP COUNT
109
004A 15 F2
JNZ
B30
MAKE ANOTHER PASS
I F NOT ZERO
111
004C 58
POP
BX
CLEAR
IBX) FROM STACK
112
004080 CC 01
OR
AH,l
SET ERROR FLAG
113
0050 80 E4 F9
AND
AH.OF9H
TURN OFF THE UNUSED BITS
1 14
0053 E8
I C
J"P
SHORT B10
RETURN WITH ERROR FLAG SET
5-138
PRT

Advertisement

Table of Contents
loading

Table of Contents