1 /PRINTER & PLOTTER HANDLER ADCOM X80SP
2 / PLOTTER HANDLER CONVERTS [ INTO DC3 AND ] INTO DC1
3 / X80SP HANDLES HT,VT,CR,LF,FF
4 / HANDLER SUPPORTS DC3 (XOFF) - DC1 (XON) COMMANDS FROM X80SP.
5 / SYSTEM TTY INPUT ETX (^C) CAUSES RETURN FROM THE HANDLER.
6 / ALL CONTROL CHARACTERS SEND TO THE HANDLER ARE DIRECTED TO THE X80SP.
7 / JOHANN J. ANDRES UNIVERSITY GOETTINGEN
9 / H.A. 10.DEC.1981 REV 0.0
10 / H.A. 4. APR.1982 REV 1.0 INSERTS [ --> DC3 AND ] --> DC1
11 / H.A. 5. OCT.1982 REV 1.1 LITTLE CHANGES SAVE 2 WORDS OF MEMORY
12 / H.A. 10.OCT.82 REV 1.2 REMOVES POSSIBLE LISF/LIRB TIMING PROBLEMS
13 / H.A. 26.OCT.82 REV 1.3 REMOVES FRTS PROBLEM: SOME CHARS WERE LOST
14 / H.A. 17.DEC.82 NON VALID STATUS INPUT CAUSE: HLT
15 / H.A. 5.JAN.83 REMOVES RANDOM DATA ERROR INSERTED ON 17.DEC.82
16 / H.A. 27.JAN.83 XON/XOFF CHARACTER CHANGED, '['&']' CONVERSION ROUTINE IMPROVED
18 X80VER="E&77 /VERSION 4
20 INDVC=31 / LPT INTERFACE DEVICE CODE
22 XON=021 / BUFFER EMPTY MESSAGE
23 XOFF=23 / BUFFER FULL MESSAGE
25 LSF=10^OUTDVC+6001 / SKIP ON LPT FLAG
26 LLS=10^OUTDVC+6006 / CLEAR FLAG & PRINT CHARACTER
27 LISF=10^INDVC+6001 / SKIP ON LPT FLAG
28 LIRB=10^INDVC+6006 / CLEAR FLAG & READ STATUS
29 KSF=10^TTYDVC+6001 / SKIP ON TTY FLAG
30 KRS=10^TTYDVC+6004 / OR TTY KBD CHARACTER INTO AC
31 / ACL=7701 / PAL8 DOESN'T KNOW HIS COMPUTER!
35 *0 / 8 WORD HANDLER BLOCK
40 LPT&177 / STARTING ADR.
44 1040 / WRITE ONLY LINE PRINTER
45 PLT&177 / STARTING ADR.
46 0;0 / 2 WORDS MUST BE ZERO
49 *200 / START OF HANDLER
50 PLT, X80VER / ENTRY FOR PLOTTER HANDLER
52 TAD PLT / HERE WE SAVE THE RETURN ADR.
53 DCA LPT / INTO THE LPT RETURN POINT
54 TAD TPLT / INSERT PLOTTER CALL CMD
59 TAD TLPT / INSERT LPT CALL CMD
61 TAD (23) / SWITCH OFF THE
62 JMS LPTPCH / PLOTTER MODE
66 TAD I LPT /LINK GOES ON HERE. IF NOT READ WAS REQUESTED
70 LPT214, RDF / FF CONSTANT
72 DCA LPTXIT /SAVE CALLING FIELD IN RETURN SEQUENCE
76 DCA LPTCDF /GET BUFFER FIELD
79 DCA LPTCA /LPTCA GETS BUFFER ADDRESS
84 SNL /IF LINK NOT SET,GIVE ERROR
86 SZA CLA / INSERT FF IN FRONT OF THE FIRST DATA BLOCK TO PRINT
88 TAD LPT214 / FF --> AC
91 \f/NOW PICK UP THE CHARACTERS, UNPACK THEM AND PRINT.
93 / LOOP TO PICK UP THE CHARACTERS
124 LPTERR, CLA CLL CML RAR / FATAL ERROR RETURN
125 JMP LPTXIT / HOME TO MAM
128 / HERE WE PRINT THE CHARACTERS
132 AND LPT177 / WE TRUNCATE TO SEVEN BITS CHARACTER
133 TYPE, 0 / CHANGED AT EXECUTION TIME SEE TPLT & TLPT
141 SNA / ^Z (SUB) TREAT AS END OF FILE
145 LLS / CLEAR FLAG LOAD CHARACTER & PRINT
146 LSF / IF PRINTER DONE FLAG SET, THEN WE CONTINUE
147 JMP .-1 / ELSE WE WAIT FOR DONE FLAG
149 TAD LP7600 / THIS IS TO GET A NEGATIVE NUMBER
151 KRS / OR TTY KBD INTO AC
152 TAD LPT175 / TEST FOR ETX (^C)
153 SNA CLA / IF NO ETX THEN GO AND WAIT FOR LP FLAG
154 KSF / ETX ENTERED, TTY KBD ACTIVE THEN JMP INTO MONITOR
155 JMP LPISF / TEST INPUT FROM PRINTER
159 LIRB / READ ACTUAL LPT STATUS WORD
160 DCA LPOLD / SAVE THE ACTUAL STATUS WORD
161 TAD LPOLD / RESTORE STATUS --> AC
162 AND LPT177 / MASK OUT 7 BITS
163 TAD LPM23 / TEST DC3 (^S)
165 JMP LP7600 / DC3 ENTERED WAIT FOR DC1
166 TAD LPOFON / TEST FOR DC1 (^Q)
168 JMP I LPTPCH / DC1 OR MEANINGLESS INPUT, SO WE CONTINUE PRINTING
173 TLPT, JMP L4 / LINE PRINTER HANDLER
176 SAC, 0 / ON ENTRY WE SAVE THE AC