8 DEVICE LP11;DEVICE LP;1040;LPT&177+4000;ZBLOCK 2
10 /LP HANDLER FOR RT-11 LINE PRINTER.
11 /The PDP-8 is connected to a RT-11 job via a seriell line.
12 /This handler simply starts the RT-11 program RECVLP on SY:
13 /which transfers all incomming characters to LP:.
16 / IOTs for communication interface:
39 CLA STL RAR / handler actually starts here
40 TAD I LPT / R/W BIT TO LINK L
42 CMA /TREAT 0 PG CNT AS 0 WD CNT N
43 DCA LPTWC /SAVE -(DBLWD COUNT+1) K
46 DCA LPTXIT /SAVE CIF CDF RETURN FIELD U
51 ISZ LPT /POINT TO BUFFER O
52 TAD I LPT /GET BUFFER ADDRESS T
53 DCA LPTCA /SAVE BUFFER PTR
54 ISZ LPT /PT TO BLOCK # C
56 ISZ LPT /POINT TO ERROR RETURN G
59 JMP LPTERR /CAN'T READ FROM LPT
64 / Initialization - start RECVLP on '11
67 VRRB / communication interface
87 \f/UNPACKING LOOP - USES A SHIFT REGISTER METHOD TO GET THE
88 /THIRD CHARACTER IN EACH DOUBLEWORD.
90 LPTLP, STL /GUARD BIT OF SHIFT REGISTER
93 SPA /DO WE HAVE 8 BITS SHIFTED IN?
95 DCA LPTCDF /SAVE SHIFT REGISTER
97 JMS I PLINK /PRINT A CHAR
101 ISZ LPTCA /BUMP INPUT POINTER
102 LP7400, 7400 /PROTECT ISZ
105 TAD LPTCDF /SHIFT HIGH 4 BITS INTO
106 JMP LPROTL /SHIFT REGISTER
108 LPTELP, JMS I PLINK /PRINT 3RD CHAR OF DOUBLEWORD
112 JMP LPTLP /GET 3 MORE CHARS
113 LPTCTZ, ISZ LPT /BUMP TO NORMAL RETURN
114 LPTXIT, HLT /RESTORE FIELDS
117 LPTERR, STL CLA RAR /PUT 4000 IN AC
118 JMP LPTXIT /AND TAKE ERROR RETURN
125 TAD I TRATXT /get character
126 ISZ TRATXT /point to next
128 JMP I TRATXT /yes - return
129 JMS I PLINK /no - transfer it
139 CLA IAC STL RAL /AC=CTRL/C
140 JMS I PLINK / send CTRL/C to abort job on '11
141 LP7700, CLA SMA /never skips
150 LPT, LPVERSION /NORMAL ENTRY POINT
152 IFNZRO LPT-376 <ENTERR.QQQQ>
161 JMP I LPTPCH /don't transfer RUBOUTs
162 TAD (-1 /restore character
167 JMP I LPTPCH /Null - CTRL/G
191 JMS VTYPE /transfer it
198 OUTA, JMS VREAD /read the echo
200 TAD CHAR /is it what we sent?
202 JMP LPERR /no - transfer error
204 /Test for End Of Line
211 JMS VREAD /wait for the LF
234 /This routine reads one character from the serial line. The parity
235 /bit is stripped off. It also checks for CTRL/C from
240 VR1, JMS CINTER /abort if CTRL/C
243 VRRB /get the character
249 VWTF, JMS CINTER /abort if CTRL/C typed
257 KSF /is there a character?
258 JMP I CINTER /no - return
259 DCA AC /yes - save Accu
262 TAD (-CTRLC /is it CTRL/C?
263 SZA CLA /skip if it is
264 JMP NOCC /no - return
265 CLA IAC STL RAL /send CTRL/C
266 JMS VTYPE / to host - this aborts host job
268 JMP I (7600 / to OS/8
270 NOCC, TAD AC /restore Accu