IBM 5170 Technical Reference page 265

Hide thumbs Also See for 5170:
Table of Contents

Advertisement

TITLE 09/09/83 PRINT BIOS
• LIST
I NCLUDE SEGMENT. SRC
0000
CODE SEGMENT BYTE PUBLIC
EXTRN
DDS: NEAR
PUBLIC
PRINTER
10 1
; --­
I NT 17
---=---=-------- ---------- --------------------------­
PR I NTER
10
THIS ROUTINE PROVIDES COMMUNICATION WITH THE PRINTER
INPUT
{AH)=Q
PRINT THE CHARACTER
IN (AL)
ON RETURN,
AH=1
I F CHARACTER COULD NOT BE PR I NTED (T I ME OUT)
OTHER BITS SET AS ON NORMAL STATUS CALL
(AH)=l
INITIALIZE THE PRINTER PORT
RETURNS WITH (AHJ SET WITH PRINTER STATUS
(AH):::2
READ THE PRINTER STATUS INTO (AH)
7
6
5
4
3
2-1
0
I
I
I
I
I
l i T I ME OUT
I
I
I
I
I
I_UNUSEO­
I
I
I
I
I
I
I
I
1_
1
I/O ERROR
1 = SELECTED
I
I
1_1:::::0UTOFPAPER
I
I
1 '"
ACKNOWLEDGE
I
1 = NOT BUSY
(OX)
0::
PRINTER TO 8E USED (O,1,2) CORRESPONDING TO ACTUAL VALUES
IN PRINTER BASE AREA
DATA AREA PRINTER BASE CONTAINS THE BASE ADDRESS OF THE PRINTER CARD(S)
AVAILABLE (LOCATED AT BEGINNING OF DATA SEGMENT, 408H ABSOLUTE,
3
WORDS)
DATA AREA PRINT
TII~
OUT (BYTE) MAY BE CIIANGE TO CAUSE DIFFERENT
TIME OUT
WAITS.~OEFAULT=20
'II­
4
REGISTERS
AH
I S
MOD
I F I
ED
ALL OTHERS UNCHANGED
ASSUME
CS:CODE,DS:DATA
0000
aouO
0001
0002
F8
'E
52
PRINTER_IO_1
STI
PUSH
PUSH
PRoe
DS
DX
FAR
ENTRY PO I NT fOR ORG OEFD2H
I NTERRUPTS BACK ON
SAVE SEGMENT
0003
56
PUSH
51
OU04
0005
5'
53
PUSH
PUSH
CX
8X
0006
E8 0000 E
CALL
DDS
0009
OOOB
OOOF'
0011
88 F'2
8A 9C 0078 R
D'
E6
8B 94 0008 R
MOV
MOV
SHL
MOV
51,DX
BL,PRINT_TIM_OUT[SII
SI,l
OX, PR INTER_BASEl S I
1
GET PR INTER PARM
LOAD TIMEOUT VALUE
WORD OFFSET
INTO TABLE
GET BASE ADDRESS FOR PR I NTER CARD
0015
0017
0019
DB 02
-/4
DC
OA E4
OR
JZ
OR
OX,DX
8'
AH,AH
TEST OX FOR ZERO,
INDICATING NO PRINT[
RETURN
TEST FOR {AH)=O
0018
74 DE
JZ
B2
PRINT AL
0010
FE
CC
DEC
AH
TEST FOR {AH)=1
OOH
0021
0023
74
54
FE
CC
74
3C
JZ
DEC
JZ
B8
AH
B5
INIT PRT
TEST-FOR {AH)c=2
PR! NTER STATUS
0025
B1 :
RETURN
0025
58
POP
8X
0026
0027
59
5E
POP
POP
CX
51
RECOVER REG I STERS
~
0028
5A
POP
DX
RECOVER REG I STERS
0029
1F
POP
DS
002A
CF
IRET
PRINT THE CHARACTER IN (ALl
0028
B2:
0028
5D
PUSH
AX
SAVE VALUE TO PR
I
NT
002C
EE
OUT
DX,AL
OUTPUT CHAR TO PORT
0020
42
INC
DX
POINT TO STATUS PORT
;------- CHlCK FOR PRINTER BUSY
002E
53
PUSH
8X
002F
EC
IN
AL,DX
GET STATUS
0030
A8 80
TEST
AL, BaH
IS THE PRINTER CURRENTLY BUSY
0032
75 05
JNZ
B2_A
OUT~STROBE
;-------­ INT 15 DEVICE BUSY
0034
0037
B8 90FE
CD
15
MOV
INT
AX,90FEH
, 5H
FUNCT I ON 90 PR I NTER
10
i------ADJUST OUTTER LOOP COUNT
0039
0039
2A FF
SUB
BH, BH
CLEAR BH
0038
003D
D'
D3
D1
03
RCL
RCL
BX,1
BX,1
MULT BY 4
;------WAIT BUSY
003F
0041
2B C9
EC
83:
B3_' :
SUB
IN
ex,cx
AL, OX
INNER LOOP (64K)
GET
STATUS
0042
8A EO
MOV
AH,AL
STATUS TO AH ALSO
0044
A8 80
TEST
AL,80H
IS THE PRINTER CURRENTLY BUSY
U046
0048
75 OE
E2 F7
JNZ
LOOP
B4
83
,
-
OUT STROBE
LOOP
r
F NOT
004A
48
DEC
8X
DROP OUTER LOOP COUNT -----­
0048
75 F2
JNZ
83
MAKE ANOTHER PASS I F NOT ZERO
0040
58
POP
BX
RESTORE BX ------­
004E
80
CC
01
OR
AH,l
SET ERROR FLAG
0051
80 E4 F9
AND
AH,OF9H
TURN OFF THE UNUSED BITS
~
0054
0056
[8 17
58
B4:
JMP
POP
SHORT BI'
BX
RETURN WITH ERROR FLAG SET
RESTORE BX ------­
OUT STROBE
0057
BO
00
MOV
AL, DOH
SET-THE STROBE HIGH
0059
42
INC
DX
005A
EE
OUT
DX,AL
005B
BO
ac
MOV
AL,OCH
SET THE STROBE LOW
0050
EB 00
JMP
SHORT $+2
10 DELAY
005F
0060
EE
58
OUT
POP
OX,AL
AX
RECOVER THE OUTPUT eHAR
;------ PRINTER STATUS
0061
65:
0061
50
PUSH
;
SAVE AL REG
0062
B6:
0062
8B 94 0008 R
MOV
DX, PR I NTER_BASE( S I ]
Printer 5-123

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents