8 DEVICE LP86;DEVICE LP;1040;LPT&177+4000;ZBLOCK 2
10 /LP HANDLER FOR IBM PC XT/AT V24 AUX LINE.
11 / THE PDP-8 IS CONNECTED TO THE PC VIA V24 LINE.
12 / THIS HANDLER TRANSMITTS ALL DATA VIA THE V24 LINE.
13 / NO ANSWER BACK. THE HANDSHAKE IS DONE WITH CTRL S (XOFF) AND
15 / THE PC HAS TO FETCH ALL DATA FROM THE LINE. NO ERROR RETRIES
18 / REV 0.0 10-MAY-88 H.A.
19 / REV 0.1 11-MAY-88 H.A.
20 / REV 0.2 5-AUG-88 H.A. PHOENIX OUT OF WASTE PAPER
22 / IOTs for communication interface:
48 CLA STL RAR / handler actually starts here
49 TAD I LPT / R/W BIT TO LINK L
51 CMA /TREAT 0 PG CNT AS 0 WD CNT N
52 DCA LPTWC /SAVE -(DBLWD COUNT+1) K
55 DCA LPTXIT /SAVE CIF CDF RETURN FIELD U
60 ISZ LPT /POINT TO BUFFER O
61 TAD I LPT /GET BUFFER ADDRESS T
62 DCA LPTCA /SAVE BUFFER PTR
63 ISZ LPT /PT TO BLOCK # C
65 ISZ LPT /POINT TO ERROR RETURN G
68 JMP LPTERR /CAN'T READ FROM LPT
81 JMP RESFLD / NO INIT SEQUENCE SEND TO HOST
95 \f/UNPACKING LOOP - USES A SHIFT REGISTER METHOD TO GET THE
96 /THIRD CHARACTER IN EACH DOUBLEWORD.
98 LPTLP, STL /GUARD BIT OF SHIFT REGISTER
101 SPA /DO WE HAVE 8 BITS SHIFTED IN?
103 DCA LPTCDF /SAVE SHIFT REGISTER
105 JMS I PLINK /PRINT A CHAR
109 ISZ LPTCA /BUMP INPUT POINTER
110 LP7400, 7400 /PROTECT ISZ
113 TAD LPTCDF /SHIFT HIGH 4 BITS INTO
114 JMP LPROTL /SHIFT REGISTER
116 LPTELP, JMS I PLINK /PRINT 3RD CHAR OF DOUBLEWORD
120 JMP LPTLP /GET 3 MORE CHARS
121 LPTCTZ, ISZ LPT /BUMP TO NORMAL RETURN
122 LPTXIT, HLT /RESTORE FIELDS
125 LPTERR, STL CLA RAR /PUT 4000 IN AC
126 JMP LPTXIT /AND TAKE ERROR RETURN
133 TAD I TRATXT /get character
134 ISZ TRATXT /point to next
136 JMP I TRATXT /yes - return
137 JMS I PLINK /no - transfer it
147 CLA IAC STL RAL /AC=CTRL/C
148 JMS I PLINK / send CTRL/C to abort job on '11
149 LP7700, CLA SMA /never skips
158 LPT, LPVERSION /NORMAL ENTRY POINT
160 IFNZRO LPT-376 <ENTERR.QQQQ>
163 /OUTPUT ANY CHARACTER ONTO THE OUTPUT LINE (8 DATA BITS)
164 /CTRL Z IS TREATED AS END OF INPUT FILE.
172 JMS VREAD / CHECK XON/ XOFF
175 JMS VTYPE /transfer it
193 /THIS ROUTINE CHECKS THE SERIELL INPUT LINE FOR XON/ XOFF
194 / IT 8 IS STRIPPED OFF. IT ALSO CHECKS FOR CTRL C FROM
200 JMP I VREAD /NO INPUT, RETURN
202 VRRB /INPUT BYTE --> AC
204 TAD (-XOFF /IS IT XOFF CHAR?
206 JMP I VREAD /NO XOFF, RETURN
207 VR1, JMS CINTER /TEST FOR TERMINAL INTERRUPT
210 AND (177 /STRIP OFF PARITY BIT
211 TAD (-XON /TEST FOR XON CHARACTER
213 JMP VR1 /NO XON, WAIT
214 JMP I VREAD /XON, RETURN
217 VWTF, JMS CINTER /abort if CTRL/C typed
225 KSF /is there a character?
226 JMP I CINTER /no - return
227 DCA AC /yes - save Accu
230 TAD (-CTRLC /is it CTRL/C?
231 SZA CLA /skip if it is
232 JMP NOCC /no - return
235 JMS VTYPE /TO HOST - THIS ABORTS HOST JOB
237 JMP I (7600 / to OS/8
239 NOCC, TAD AC /restore Accu