IBM 5150 Hardware Reference Manual page 235

Hide thumbs Also See for 5150:
Table of Contents

Advertisement

LOC (lBJ
LINE
SOURCE
3007
j - - -
INT 17 --------------------------------­
3006
; PRIfHER_IO
3009
TliIS ROUTINE PROVIDES COMMUNICATION WITH THE PRINTER
3010
(AH)=O
F'RIHT THE CHARACTER IN (All
3011
ON RETUIHI, AH=1 IF CHARACTER COULD NOT BE PRINTED (TIME OUT)
3012
OTHER BITS SET AS
ON
NORMAL STATUS CALL
3013
(AH)=1
INITIALIZE THE PRunER PORT
3014
RETURNS WITH (AH) SET WITH PRINTER STATUS
3015
(AH)=2
READ THE PRINTER STATUS INTO UH)
3016
3017
TIME OUT
3018
51
i
t
1. ,::1
~~~~:D
3019
3020
_ 1 ::.
SElECTED
3021
1 '"
OUT OF PAPER
3022
1
= ACKNOWLEDGE
'3023
1
= BUSY
3024
3025
(OX)
=
PRINTER TO BE USED (0.1.2) CORRESPONDING TO ACTUAL VALUES
3026
I
IN PRINTER_BASE AREA
3027
; DATA AREA PRINTER_BASE CONTAItIS THE BASE ADDRESS OF THE PRINTER CAROlS)
3028
AVAILABLE (LOCATED AT BEGINNWG OF DATA SEGMENT, 408H ABSOLUTE, 3 WORDS)
3029
;REGISTER5
AH IS MODIfIED
3030
ALL OTHERS UNCHANGED
3031
;
----
------ --
-------------------------------­
3032
ASSUME
CS: CODE ,DS:DATA
EF02
3033
PRINTER
_10
PROC
fAR
EFOZ Fe
3034
STI
INTERRUPTS BACK ON
EF03 IE
3035
PUSH
os
j
SAVE SEGMENT
EFD4 52
3036
PUSH
OX
EFOS 56
3037
PUSH
5'
EF06 51
3038
PUSH
CX
HD7 53
3039
PUSH
ex
EFDB 8E4000
3040
NOV
51
,DATA
EFDB BEDE
3041
NOV
DS,SI
; ESTABLISH PRINTER SEGMENT
£FDD BaFl
3042-
HOV
SI,DX
; GET PRINTER PARM
EFOF 01E6
3043
5HL
51,1
; WORD OFFSET INTO TABLE
EFEl 88940800
3044
HOV
OX,PRINTER_BASE[SI)
; GET BASE ADDRESS FOR PRINTER CARD
EFES 0802
3045
OR
OX,OX
j
TEST OX FOR ZERO, INDICATING NO PRINTER
EFE7 740C
3046
JZ
Bl
j
RETURN
EFE9
0.6.£4
3047
OR
AH,AH
TEST FOR {AH )=0
EFEB 740£
3048
JZ
e.
PRINT_AL
£FED FEee
3049
DEC
AH
TEST FOR CAH)=1
.B
EFEF 7442
3050
JZ
INIT_PRT
EFFl FEee
3051
DEC
AH
TEST FOR (AH
)::.2
EFF3 742.6.
3052-
JZ
6S
PR INTER STATUS
£FFS
3053
Bl :
RETURN
EFF5 58
3054
POP
ex
EFF6
S9
3055
POP
ex
EfF7 5£
3056
POP
j
RECOVER REGISTERS
5'
EFFS 5A
3057
POP
ox
j
RECOVER REGISTERS
EFF9 IF
3058
POP
Os
EFFA CF
3059
IRET
3060
3061
j------
PRINT THE CHARACTER IN (ALI
3062­
EFF6
3063
82:
EFFB 50
3064
PUSH
AX
SAVE VALUe TO PRINT
EFfC 830A
3065
HOV
st.IO
TIME OUT VALUE
EFFE 33C9
3066
XOR
ex,Cx
ESTABLISH SHIFT COUNT
FOOD EE
3067
OUT
DX,AL
; OUTPUT CHAR TO PORT
FOOl 42
3068
we
ox
; PorNT
TO STATUS PORT
FOOl
3069
83:
; WAIT_BUSY
FOOZ EC
3070
AL,DX
; GET STATUS
'"
F003 8AEO
3071
r.OV
AH,AL
j
STATUS TO AH ALSO
Foes A880
3072
TEST
At,SOH
; IS TtfE PRINTER CURRENTLY BUSY
F007 750E
3073
Jt~Z
6.
j
OUT_STrlOBE
F009 EZF]
3074
LOOP
63
; DECREMENT COUNT ON TIME OUT
FODe FEee
3075
DEC
6L
FOOD 75F3
3076
JHZ
63
; WAIT
FOR NOT BUSY
FOOF BOCCOI
3077
OR
AH,l
; SET EPROR FLAG
FOl2 80E4F9
3078
Arm
AH,OF9H
; TURN OFF THE OTHER BITS
Fots EBI4
3079
JHP
5HORT
87
; RETUPtl WITli ERROR
flAG
SET
FOl7
30BO
84:
; OUT_STReBE
FOl7 BOOO
3081
HOV
AL,OOH
j
SET THE STROBE HIGH
F019 42
3082
we
DX
; STROBE IS BIT 0 OF PORT C OF 8255
A-42

Hide quick links:

Advertisement

Table of Contents
loading

Table of Contents