A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk1_im6100 / rka / paroff / x80sp.pa
CommitLineData
81e70d48
PH
1/PRINTER & PLOTTER HANDLER ADCOM X80SP\r
2/ PLOTTER HANDLER CONVERTS [ INTO DC3 AND ] INTO DC1\r
3/ X80SP HANDLES HT,VT,CR,LF,FF\r
4/ HANDLER SUPPORTS DC3 (XOFF) - DC1 (XON) COMMANDS FROM X80SP.\r
5/ SYSTEM TTY INPUT ETX (^C) CAUSES RETURN FROM THE HANDLER.\r
6/ ALL CONTROL CHARACTERS SEND TO THE HANDLER ARE DIRECTED TO THE X80SP.\r
7/ JOHANN J. ANDRES UNIVERSITY GOETTINGEN\r
8/\r
9/ H.A. 10.DEC.1981 REV 0.0\r
10/ H.A. 4. APR.1982 REV 1.0 INSERTS [ --> DC3 AND ] --> DC1\r
11/ H.A. 5. OCT.1982 REV 1.1 LITTLE CHANGES SAVE 2 WORDS OF MEMORY\r
12/ H.A. 10.OCT.82 REV 1.2 REMOVES POSSIBLE LISF/LIRB TIMING PROBLEMS \r
13/ H.A. 26.OCT.82 REV 1.3 REMOVES FRTS PROBLEM: SOME CHARS WERE LOST\r
14/\r
15 TTYDVC=03 / TTY\r
16 INDVC=31 / LPT RS-232C INTERFACE\r
17 OUTDVC=32 / LPT\r
18/\r
19 LSF=10^OUTDVC+6001 / SKIP ON LPT FLAG\r
20 LLS=10^OUTDVC+6006 / CLEAR FLAG & PRINT CHARACTER\r
21 LISF=10^INDVC+6001 / SKIP ON LPT FLAG\r
22 LIRB=10^INDVC+6006 / CLEAR FLAG & READ STATUS \r
23 KSF=10^TTYDVC+6001 / SKIP ON TTY FLAG\r
24 KRS=10^TTYDVC+6004 / OR TTY KBD CHARACTER INTO AC\r
25/ ACL=7701 / PAL8 DOESN'T KNOW HIS COMPUTER!\r
26/ MQL=7421\r
27/\r
28/\r
29 *0 / 8 WORD HANDLER BLOCK\r
30 -2 / TWO UNITS\r
31 DEVICE X80S\r
32 DEVICE LP1\r
33 1040\r
34 LPT&177 / STARTING ADR.\r
35 0;0\r
36 DEVICE X80S\r
37 DEVICE PLT\r
38 1040 / WRITE ONLY LINE PRINTER\r
39 PLT&177 / STARTING ADR.\r
40 0;0 / 2 WORDS MUST BE ZERO\r
41/\r
42/\r
43 *200 / START OF HANDLER\r
44PLT, 0 / ENTRY FOR PLOTTER HANDLER\r
45 DCA SAC\r
46 TAD PLT / HERE WE SAVE THE RETURN ADR.\r
47 DCA LPT / INTO THE LPT RETURN POINT\r
48 TAD TPLT / INSERT PLOTTER CALL CMD\r
49 DCA TYPE\r
50 JMP START\r
51LPT, 0\r
52 DCA SAC / SAVE AC\r
53 TAD TLPT / INSERT LPT CALL CMD\r
54 DCA TYPE\r
55 TAD LP23 / SWITCH OFF THE \r
56 JMS LPTPCH / PLOTTER MODE\r
57START,/\r
58 TAD SAC / RESTORE AC\r
59 CLL CML CLA RAR\r
60 TAD I LPT /LINK GOES ON HERE. IF NOT READ WAS REQUESTED\r
61 AND LP7700\r
62 CMA\r
63 DCA LPTWC\r
64LPT214, RDF / FF CONSTANT\r
65 TAD LPTCIF\r
66 DCA LPTXIT /SAVE CALLING FIELD IN RETURN SEQUENCE\r
67 TAD I LPT\r
68 AND LPT70\r
69 TAD LPCDF0\r
70 DCA LPTCDF /GET BUFFER FIELD\r
71 ISZ LPT\r
72 TAD I LPT\r
73 DCA LPTCA /LPTCA GETS BUFFER ADDRESS\r
74 ISZ LPT\r
75 TAD I LPT\r
76LPTCDF, HLT\r
77 ISZ LPT\r
78 SNL /IF LINK NOT SET,GIVE ERROR\r
79 JMP LPTERR\r
80 SZA CLA / INSERT FF IN FRONT OF THE FIRST DATA BLOCK TO PRINT\r
81 JMP LPT177\r
82 TAD LPT214 / FF --> AC\r
83 JMP LPTKLG\r
84\r
85\f/NOW PICK UP THE CHARACTERS, UNPACK THEM AND PRINT.\r
86/\r
87/ LOOP TO PICK UP THE CHARACTERS\r
88/\r
89LPTLP, CLA\r
90 TAD I LPTCA\r
91 JMS LPTPCH\r
92 TAD I LPTCA\r
93 AND LP7400\r
94 DCA LPTCDF\r
95 ISZ LPTCA\r
96LP7400, 7400\r
97 TAD I LPTCA\r
98 JMS LPTPCH\r
99 TAD I LPTCA\r
100 AND LP7400\r
101 CLL RTR\r
102LPTLF, RTR\r
103 TAD LPTCDF\r
104 RTR\r
105 RTR\r
106 ISZ LPTCA\r
107 NOP / BUFFER MAY BE AT FIELD BOUNDARY\r
108LPTKLG, JMS LPTPCH\r
109LPT177, 177\r
110 ISZ LPTWC\r
111 JMP LPTLP\r
112LPRTRN, ISZ LPT\r
113LPTXIT, HLT\r
114 JMP I LPT\r
115LPTWC, 0\r
116LPTCA, 0\r
117/\r
118LPTERR, CLA CLL CML RAR / FATAL ERROR RETURN\r
119 JMP LPTXIT / HOME TO MAM\r
120/\r
121/\r
122/ HERE WE PRINT THE CHARACTERS\r
123/\r
124LPTPCH, 0\r
125/\r
126 AND LPT177 / WE TRUNCATE TO SEVEN BITS CHARACTER\r
127TYPE, 0 / CHANGED AT EXECUTION TIME SEE TPLT & TLPT\r
128 TAD SAC / RELOAD CHARACTER TO PRINT\r
129 TAD LPM135 / TEST FOR ]\r
130 SZA\r
131 JMP L2 / IF ] THEN\r
132 TAD LP23 / WE PRINT A DC1\r
133 JMP L4 / CONVERSION ] INTO DC3 DONE\r
134L2, TAD LPT02\r
135 SZA CLA\r
136 JMP L3 / TEST [\r
137 TAD LP21\r
138 JMP L4\r
139L3, TAD SAC / RESTORE AC\r
140L4,/\r
141 LLS / CLEAR FLAG LOAD CHARACTER & PRINT\r
142 LSF / IF PRINTER DONE FLAG SET, THEN WE CONTINUE\r
143 JMP .-1 / ELSE WE WAIT FOR DONE FLAG\r
144LP7600, 7600 / CLA\r
145 TAD LP7600 / THIS IS TO GET A NEGATIVE NUMBER\r
146\r
147 KRS / OR TTY KBD INTO AC\r
148 TAD LPT175 / TEST FOR ETX (^C)\r
149 SNA CLA / IF NO ETX THEN GO AND WAIT FOR LP FLAG\r
150 KSF / ETX ENTERED, TTY KBD ACTIVE THEN JMP INTO MONITOR\r
151 JMP LPISF / TEST INPUT FROM PRINTER\r
152LPTCIF, CDF CIF 0\r
153 JMP I LP7600\r
154LPISF,\r
155 TAD LPOLD / LOAD THE LAST STATUS WORD\r
156 LISF / IS THERE ANY NEW STATUS?\r
157 SKP\r
158 LIRB / IF THERE IS A NEW STATUS THEN WE READ ELSE WE TAKE THE OLD ONE\r
159 DCA LPOLD / SAVE THE ACTUAL STATUS WORD\r
160 TAD LPOLD / RESTORE STATUS --> AC\r
161 AND LPT177 / MASK OUT 7 BITS\r
162 TAD LPM23 / TEST DC3 (^S)\r
163 SNA CLA\r
164 JMP LP7600 / DC3 ENTERED WAIT FOR DC1\r
165 JMP I LPTPCH / DC1 OR MEANINGLESS INPUT, SO WE CONTINUE PRINTING\r
166/\r
167/\r
168TLPT, JMP L4 / LINE PRINTER HANDLER\r
169TPLT, DCA SAC / SAVE AC\r
170/\r
171SAC, 0 / ON ENTRY WE SAVE THE AC\r
172/\r
173LP7700, 7700\r
174LPM06, -06\r
175LP21, 21\r
176LP23, 23\r
177LPOLD, 1\r
178LPM23, -23\r
179LPT02, 02\r
180LPWISZ, ISZ LPLPTR\r
181 JMP I LPTPCH\r
182LPFLSH,\r
183LPT70, 70\r
184LPM135, -135\r
185LPT175, 175\r
186LPCDF0, CDF 0\r
187LPLPTR, 0\r
188/\r
189$$\r
190\1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0