A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rka / paroff / hp7475.pa
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
9 /
10 / H.A. 3-MAY-85 REV 0.0
11 / H.A. 12-AUG-85 REV 0.1
12 /
13 HPVER="A&77 /VERSION 0
14 TTYDVC=03 / TTY
15 INDVC=33 / INPUT FROM PLOTTER
16 OUTDVC=34 / OUTPUT TO PLOTTER
17 XON=021 / BUFFER EMPTY MESSAGE
18 XOFF=23 / BUFFER FULL MESSAGE
19 /
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
26 /
27 /
28 *0 / 8 WORD HANDLER BLOCK
29 -1 / ONE UNIT
30 DEVICE HP74
31 DEVICE PLT
32 1040
33 PLT&177 / STARTING ADR.
34 0;0
35 /
36 /
37 *200 / START OF HANDLER
38 PLT, HPVER / ENTRY FOR PLOTTER HANDLER
39 DCA SAC
40 START,/
41 TAD SAC / RESTORE AC
42 CLL CML CLA RAR
43 TAD I PLT /LINK GOES ON HERE. IF NOT READ WAS REQUESTED
44 AND LP7700
45 CMA
46 DCA LPTWC
47 RDF
48 TAD LPTCIF
49 DCA LPTXIT /SAVE CALLING FIELD IN RETURN SEQUENCE
50 TAD I PLT
51 AND LPT70
52 TAD LPCDF0
53 DCA LPTCDF /GET BUFFER FIELD
54 ISZ PLT
55 TAD I PLT
56 DCA LPTCA /LPTCA GETS BUFFER ADDRESS
57 ISZ PLT
58 TAD I PLT
59 LPTCDF, HLT
60 ISZ PLT
61 SNL /IF LINK NOT SET,GIVE ERROR
62 JMP LPTERR
63 SZA CLA / INSERT FF IN FRONT OF THE FIRST DATA BLOCK TO PRINT
64 JMP LPT177
65 TAD ("O / COME HERE IF BLOCK# EQL 0
66 JMS LPTPCH
67 TAD ("E
68 JMS LPTPCH
69 TAD (";
70 JMS LPTPCH
71 TAD (15 / CR SINCE FORTRAN OUTPUT STARTS WITH LF SOMETIMES
72 JMS LPTPCH
73 JMP LPT177
74
75 \f/NOW PICK UP THE CHARACTERS, UNPACK THEM AND PRINT.
76 /
77 / LOOP TO PICK UP THE CHARACTERS
78 /
79 LPTLP, CLA
80 TAD I LPTCA
81 JMS LPTPCH
82 TAD I LPTCA
83 AND LP7400
84 DCA LPTCDF
85 ISZ LPTCA
86 LP7400, 7400
87 TAD I LPTCA
88 JMS LPTPCH
89 TAD I LPTCA
90 AND LP7400
91 CLL RTR
92 LPTLF, RTR
93 TAD LPTCDF
94 RTR
95 RTR
96 ISZ LPTCA
97 NOP /PROTECT ISZ
98 LPTKLG, JMS LPTPCH
99 LPT177, 177
100 ISZ LPTWC
101 JMP LPTLP
102 LPRTRN, ISZ PLT
103 LPTXIT, HLT
104 JMP I PLT
105 LPTWC, 0
106 LPTCA, 0
107 /
108 LPTERR, CLA CLL CML RAR / FATAL ERROR RETURN
109 JMP LPTXIT / HOME TO MAM
110 /
111 /
112 / HERE WE PRINT THE CHARACTERS
113 /
114 LPTPCH, 0
115 /
116 AND LPT177 / WE TRUNCATE TO SEVEN BITS CHARACTER
117 TAD (-134)
118 SNA / (0134) '\' --> ESC (033)
119 TAD (33-134)
120 TAD (134-174)
121 SNA / (0174) '|' --> ETX (03)
122 TAD (03-174)
123 TAD (174-32)
124 SNA / ^Z (SUB) TREAT AS END OF FILE
125 JMP LPRTRN
126 TAD (32)
127 L4,/
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
131 LP7600, 7600 / CLA
132 TAD LP7600 / THIS IS TO GET A NEGATIVE NUMBER
133
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
139 LPTCIF, CDF CIF 0
140 JMP I LP7600
141 LPISF,
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
146 JMP .+3
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
153 JMP .+3
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
157 /
158 /
159 SAC, 0 / ON ENTRY WE SAVE THE AC HERE
160 /
161 LP7700, 7700
162 LPT70, 70
163 LP21, XON
164 LP23, XOFF
165 LPOLD, XON
166 LPM23, -XOFF
167 LPOFON, XOFF-XON
168 LPT175, 175
169 LPCDF0, CDF 0
170 /
171 $$
172 \1a