1 /PLOTTER HANDLER FOR HP 7475A
2 / HANDLER CONVERTS \ (=0134) INTO ESC (=033)
3 / | (=0174) INTO ETX (=03)
4 / SUB (=032, CNTRL Z) IS TREATED AS END OF FILE
5 / ALL OTHER CHARACTERS SEND TO THE HANDLER ARE DIRECTED TO THE PLOTTER.
6 / HANDLER SUPPORTS DC3 (XOFF) - DC1 (XON) HANDSHAKE PROCEDURE WITH HP 7475A.
7 / SYSTEM TTY INPUT ETX (^C) CAUSES RETURN FROM THE HANDLER TO THE MONITOR.
8 / JOHANN J. ANDRES FOR UNIVERSITY GOETTINGEN
10 / H.A. 3-MAY-85 REV 0.0
11 / H.A. 12-AUG-85 REV 0.1
13 HPVER="A&77 /VERSION 0
15 INDVC=33 / INPUT FROM PLOTTER
16 OUTDVC=34 / OUTPUT TO PLOTTER
17 XON=021 / BUFFER EMPTY MESSAGE
18 XOFF=23 / BUFFER FULL MESSAGE
20 LSF=10^OUTDVC+6001 / SKIP ON LPT FLAG
21 LLS=10^OUTDVC+6006 / CLEAR FLAG & PRINT CHARACTER
22 LISF=10^INDVC+6001 / SKIP ON LPT FLAG
23 LIRB=10^INDVC+6006 / CLEAR FLAG & READ STATUS
24 KSF=10^TTYDVC+6001 / SKIP ON TTY FLAG
25 KRS=10^TTYDVC+6004 / OR TTY KBD CHARACTER INTO AC
28 *0 / 8 WORD HANDLER BLOCK
33 PLT&177 / STARTING ADR.
37 *200 / START OF HANDLER
38 PLT, HPVER / ENTRY FOR PLOTTER HANDLER
43 TAD I PLT /LINK GOES ON HERE. IF NOT READ WAS REQUESTED
49 DCA LPTXIT /SAVE CALLING FIELD IN RETURN SEQUENCE
53 DCA LPTCDF /GET BUFFER FIELD
56 DCA LPTCA /LPTCA GETS BUFFER ADDRESS
61 SNL /IF LINK NOT SET,GIVE ERROR
63 SZA CLA / INSERT FF IN FRONT OF THE FIRST DATA BLOCK TO PRINT
65 TAD ("O / COME HERE IF BLOCK# EQL 0
71 TAD (15 / CR SINCE FORTRAN OUTPUT STARTS WITH LF SOMETIMES
75 \f/NOW PICK UP THE CHARACTERS, UNPACK THEM AND PRINT.
77 / LOOP TO PICK UP THE CHARACTERS
108 LPTERR, CLA CLL CML RAR / FATAL ERROR RETURN
109 JMP LPTXIT / HOME TO MAM
112 / HERE WE PRINT THE CHARACTERS
116 AND LPT177 / WE TRUNCATE TO SEVEN BITS CHARACTER
118 SNA / (0134) '\' --> ESC (033)
121 SNA / (0174) '|' --> ETX (03)
124 SNA / ^Z (SUB) TREAT AS END OF FILE
128 LLS / CLEAR FLAG LOAD CHARACTER & PRINT
129 LSF / IF PRINTER DONE FLAG SET, THEN WE CONTINUE
130 JMP .-1 / ELSE WE WAIT FOR DONE FLAG
132 TAD LP7600 / THIS IS TO GET A NEGATIVE NUMBER
134 KRS / OR TTY KBD INTO AC
135 TAD LPT175 / TEST FOR ETX (^C)
136 SNA CLA / IF NO ETX THEN GO AND WAIT FOR LP FLAG
137 KSF / ETX ENTERED, TTY KBD ACTIVE THEN JMP INTO MONITOR
138 JMP LPISF / TEST INPUT FROM PRINTER
142 LIRB / READ ACTUAL LPT STATUS WORD
143 AND LPT177 / MASK OUT 7 BITS
144 TAD LPM23 / TEST FOR XOFF CHARACTER
145 SZA / ZERO IF XOFF CHARACTER ENCOUNTERED
147 DCA LPOLD / XOFF CLEARS LPOLD FLAG: 0--> LPOLD
148 JMP LP7600 / WAIT FOR XON CHARACTER
149 CLL / CLEAR LINK FOR TAD INSTR. INSTEAD OF OR INSTRUCTION
150 TAD LPOFON / TEST FOR XON CHARACTER
151 TAD LPOLD / OR WITH LEADING XOFF CHARACTER
152 SZA SZL CLA / ZERO ONLY: XON FOLLOWS XOFF CHARACTER
154 ISZ LPOLD / WE CLEAR THE XOFF FLAG 1 --> LPOLD
155 JMP I LPTPCH / AND CONTINUE PRINTING
156 JMP I LPTPCH / MEANINGLESS INPUT, CONTINUE PRINTING
159 SAC, 0 / ON ENTRY WE SAVE THE AC HERE