A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk4_5 / rka / paroff / lp11.pa
CommitLineData
81e70d48
PH
1/LP11 HANDLER\r
2 \r
3 LPVERSION="B&77\r
4 \r
5 *0\r
6 \r
7 -1\r
8 DEVICE LP11;DEVICE LP;1040;LPT&177+4000;ZBLOCK 2\r
9 \r
10/LP HANDLER FOR RT-11 LINE PRINTER.\r
11/The PDP-8 is connected to a RT-11 job via a seriell line.\r
12/This handler simply starts the RT-11 program RECVLP on SY:\r
13/which transfers all incomming characters to LP:.\r
14\r
15\r
16/ IOTs for communication interface:\r
17 DEVCOD= 31\r
18\r
19 VRSF= DEVCOD^10+6001\r
20 VRRB= DEVCOD^10+6006\r
21 VSF= DEVCOD^10+6011\r
22 VLS= DEVCOD^10+6016\r
23\r
24 FIXTAB\r
25\r
26\r
27/ special characters:\r
28 CTRLC= 3\r
29 TAB= 11\r
30 LF= 12\r
31 CR= 15\r
32 CTRLN= 16\r
33 CTRLZ= 32\r
34\r
35 \r
36 *200\r
37 \r
38PLINK, 0000\r
39 CLA STL RAR / handler actually starts here\r
40 TAD I LPT / R/W BIT TO LINK L\r
41 AND LP7700 / I\r
42 CMA /TREAT 0 PG CNT AS 0 WD CNT N\r
43 DCA LPTWC /SAVE -(DBLWD COUNT+1) K\r
44 RDF /\r
45 TAD LPTCIF / M\r
46 DCA LPTXIT /SAVE CIF CDF RETURN FIELD U\r
47 TAD I LPT / S\r
48 AND LPT70 / T\r
49 TAD LPCDF0 /\r
50 DCA LPTCDF / N\r
51 ISZ LPT /POINT TO BUFFER O\r
52 TAD I LPT /GET BUFFER ADDRESS T\r
53 DCA LPTCA /SAVE BUFFER PTR\r
54 ISZ LPT /PT TO BLOCK # C\r
55 TAD I LPT /GET IT H\r
56 ISZ LPT /POINT TO ERROR RETURN G\r
57LPTCDF, HLT / !\r
58 SNL\r
59 JMP LPTERR /CAN'T READ FROM LPT\r
60 SZA CLA\r
61 JMP LPT1\r
62\r
63\r
64/ Initialization - start RECVLP on '11\r
65\r
66 VLS /initialize\r
67 VRRB / communication interface\r
68 CLA\r
69 RDF\r
70 TAD LPCDF0\r
71 DCA RESFLD\r
72LPCDF0, CDF 0\r
73 JMS TRATXT\r
74 "R\r
75 40\r
76 "R\r
77 "E\r
78 "C\r
79 "V\r
80 "L\r
81 "P\r
82 CR\r
83 00\r
84RESFLD, HLT\r
85 JMP LPT1\r
86\r
87\f/UNPACKING LOOP - USES A SHIFT REGISTER METHOD TO GET THE\r
88/THIRD CHARACTER IN EACH DOUBLEWORD.\r
89 \r
90LPTLP, STL /GUARD BIT OF SHIFT REGISTER\r
91LPROTL, RTL\r
92 RTL\r
93 SPA /DO WE HAVE 8 BITS SHIFTED IN?\r
94 JMP LPTELP\r
95 DCA LPTCDF /SAVE SHIFT REGISTER\r
96 TAD I LPTCA\r
97 JMS I PLINK /PRINT A CHAR\r
98 SZA\r
99 JMP ERR\r
100 TAD I LPTCA\r
101 ISZ LPTCA /BUMP INPUT POINTER\r
102LP7400, 7400 /PROTECT ISZ\r
103 AND LP7400\r
104 CLL RAL\r
105 TAD LPTCDF /SHIFT HIGH 4 BITS INTO\r
106 JMP LPROTL /SHIFT REGISTER\r
107 \r
108LPTELP, JMS I PLINK /PRINT 3RD CHAR OF DOUBLEWORD\r
109 SZA\r
110 JMP ERR\r
111LPT1, ISZ LPTWC\r
112 JMP LPTLP /GET 3 MORE CHARS\r
113LPTCTZ, ISZ LPT /BUMP TO NORMAL RETURN\r
114LPTXIT, HLT /RESTORE FIELDS\r
115 JMP I LPT /EXIT\r
116 \r
117LPTERR, STL CLA RAR /PUT 4000 IN AC\r
118 JMP LPTXIT /AND TAKE ERROR RETURN\r
119 \r
120LPTWC, 0\r
121LPTCA, 0\r
122\r
123\r
124TRATXT, 0\r
125 TAD I TRATXT /get character\r
126 ISZ TRATXT /point to next\r
127 SNA /character zero?\r
128 JMP I TRATXT /yes - return\r
129 JMS I PLINK /no - transfer it\r
130 SNA\r
131 JMP TRATXT+1\r
132\r
133\r
134ERR, CLA CLL SNL\r
135 JMP LPTCTZ\r
136 TAD PLINK\r
137 TAD OFFSET\r
138 DCA PLINK\r
139 CLA IAC STL RAL /AC=CTRL/C\r
140 JMS I PLINK / send CTRL/C to abort job on '11\r
141LP7700, CLA SMA /never skips\r
142 JMP LPTERR\r
143\r
144\r
145LPT70, 70\r
146LPTCIF, CDF CIF 0\r
147OFFSET, VTYPE-LPTPCH\r
148\r
149 *376\r
150LPT, LPVERSION /NORMAL ENTRY POINT\r
151 JMS PLINK\r
152 IFNZRO LPT-376 <ENTERR.QQQQ>\r
153 PAGE\r
154\f\r
155/CHAR PRINT ROUTINE\r
156 \r
157LPTPCH, 0\r
158 IAC\r
159 AND (177 /7 bit\r
160 SNA\r
161 JMP I LPTPCH /don't transfer RUBOUTs\r
162 TAD (-1 /restore character\r
163 DCA CHAR /save it\r
164 TAD CHAR\r
165 AND (7770\r
166 SNA CLA\r
167 JMP I LPTPCH /Null - CTRL/G\r
168 TAD CHAR\r
169 TAD (-CTRLZ\r
170 SNA\r
171 JMP EOF\r
172 SMA\r
173 JMP NOCTRL\r
174 TAD (CTRLZ-CTRLN\r
175 SMA CLA\r
176 JMP I LPTPCH\r
177\r
178NOCTRL, ISZ COUNT2\r
179 JMP OUTB\r
180 CLA IAC\r
181 JMS VTYPE\r
182 JMS VREAD\r
183 JMS VREAD\r
184 CLA\r
185 TAD (CR\r
186 JMS VTYPE\r
187 JMS VREAD\r
188 JMS VREAD\r
189OUTB, CLA\r
190 TAD CHAR\r
191 JMS VTYPE /transfer it\r
192 TAD (-TAB\r
193 TAD CHAR\r
194 SZA CLA\r
195 JMP OUTA\r
196 TAD (40\r
197 DCA CHAR\r
198OUTA, JMS VREAD /read the echo\r
199 CIA\r
200 TAD CHAR /is it what we sent?\r
201 SZA CLA /yes\r
202 JMP LPERR /no - transfer error\r
203\r
204/Test for End Of Line\r
205 TAD (-CR\r
206 TAD CHAR\r
207 SZA CLA\r
208 JMP I LPTPCH\r
209 TAD (-113\r
210 DCA COUNT2\r
211 JMS VREAD /wait for the LF\r
212 CLA\r
213 JMP I LPTPCH\r
214\r
215\r
216EOF, TAD (CTRLZ\r
217 JMS VTYPE\r
218 JMS VREAD\r
219 JMS VREAD\r
220 JMS VREAD\r
221 JMS VREAD\r
222 JMS VREAD\r
223 CLA IAC CLL\r
224 JMP I LPTPCH\r
225LPERR, IAC STL\r
226 JMP I LPTPCH\r
227\r
228\r
229\r
230COUNT2, -113\r
231CHAR, 0\r
232\r
233\r
234/This routine reads one character from the serial line. The parity\r
235/bit is stripped off. It also checks for CTRL/C from\r
236/the terminal.\r
237\r
238VREAD, 0000\r
239 CLA\r
240VR1, JMS CINTER /abort if CTRL/C\r
241 VRSF\r
242 JMP VR1\r
243 VRRB /get the character\r
244 AND (177\r
245 JMP I VREAD /return\r
246\r
247\r
248VTYPE, 0000\r
249VWTF, JMS CINTER /abort if CTRL/C typed\r
250 VSF\r
251 JMP VWTF\r
252 VLS\r
253 CLA\r
254 JMP I VTYPE /return\r
255\r
256CINTER, 0000\r
257 KSF /is there a character?\r
258 JMP I CINTER /no - return\r
259 DCA AC /yes - save Accu\r
260 KRB /read character\r
261 AND (177 /no parity\r
262 TAD (-CTRLC /is it CTRL/C?\r
263 SZA CLA /skip if it is\r
264 JMP NOCC /no - return\r
265 CLA IAC STL RAL /send CTRL/C\r
266 JMS VTYPE / to host - this aborts host job\r
267 CDF CIF 0 /exit\r
268 JMP I (7600 / to OS/8\r
269\r
270NOCC, TAD AC /restore Accu\r
271 JMP I CINTER /return\r
272\r
273AC, 0\r
274\r
275\r
276 $\r
277\f\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