A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk4_5 / rkb / paroff / lp86.bk
CommitLineData
81e70d48
PH
1/LP86 HANDLER\r
2 \r
3 LPVERSION="A&77\r
4 \r
5 *0\r
6 \r
7 -1\r
8 DEVICE LP86;DEVICE LP;1040;LPT&177+4000;ZBLOCK 2\r
9 \r
10/LP HANDLER FOR IBM PC XT/AT V24 AUX LINE.\r
11/ THE PDP-8 IS CONNECTED TO THE PC VIA V24 LINE.\r
12/ THIS HANDLER TRANSMITTS ALL DATA VIA THE V24 LINE.\r
13/ NO ANSWER BACK. THE HANDSHAKE IS DONE WITH CTRL S (XOFF) AND\r
14/ CTRL Q (XON).\r
15/ THE PC HAS TO FETCH ALL DATA FROM THE LINE. NO ERROR RETRIES\r
16/ OR CHECKS ARE MADE.\r
17/\r
18/ REV 0.0 10-MAY-88 H.A.\r
19/ REV 0.1 11-MAY-88 H.A.\r
20/ REV 0.2 5-AUG-88 H.A. PHOENIX OUT OF WASTE PAPER\r
21\r
22/ IOTs for communication interface:\r
23 DEVCOD= 33\r
24\r
25 VRSF= DEVCOD^10+6001\r
26 VROB= DEVCOD^10+6004\r
27 VRRB= DEVCOD^10+6006\r
28 VSF= DEVCOD^10+6011\r
29 VLS= DEVCOD^10+6016\r
30\r
31 FIXTAB\r
32\r
33\r
34/ special characters:\r
35 XON= 21\r
36 XOFF= 23\r
37 CTRLC= 3\r
38 TAB= 11\r
39 LF= 12\r
40 CR= 15\r
41 CTRLN= 16\r
42 CTRLZ= 32\r
43\r
44 \r
45 *200\r
46 \r
47PLINK, 0000\r
48 CLA STL RAR / handler actually starts here\r
49 TAD I LPT / R/W BIT TO LINK L\r
50 AND LP7700 / I\r
51 CMA /TREAT 0 PG CNT AS 0 WD CNT N\r
52 DCA LPTWC /SAVE -(DBLWD COUNT+1) K\r
53 RDF /\r
54 TAD LPTCIF / M\r
55 DCA LPTXIT /SAVE CIF CDF RETURN FIELD U\r
56 TAD I LPT / S\r
57 AND LPT70 / T\r
58 TAD LPCDF0 /\r
59 DCA LPTCDF / N\r
60 ISZ LPT /POINT TO BUFFER O\r
61 TAD I LPT /GET BUFFER ADDRESS T\r
62 DCA LPTCA /SAVE BUFFER PTR\r
63 ISZ LPT /PT TO BLOCK # C\r
64 TAD I LPT /GET IT H\r
65 ISZ LPT /POINT TO ERROR RETURN G\r
66LPTCDF, HLT / !\r
67 SNL\r
68 JMP LPTERR /CAN'T READ FROM LPT\r
69 SZA CLA\r
70 JMP LPT1\r
71\r
72\r
73/ Initialization \r
74\r
75 VLS /initialize\r
76 CLA\r
77 RDF\r
78 TAD LPCDF0\r
79 DCA RESFLD\r
80LPCDF0, CDF 0\r
81 JMP RESFLD / NO INIT SEQUENCE SEND TO HOST\r
82 "R\r
83 40\r
84 "R\r
85 "E\r
86 "C\r
87 "V\r
88 "L\r
89 "P\r
90 CR\r
91 00\r
92RESFLD, HLT\r
93 JMP LPT1\r
94\r
95\f/UNPACKING LOOP - USES A SHIFT REGISTER METHOD TO GET THE\r
96/THIRD CHARACTER IN EACH DOUBLEWORD.\r
97 \r
98LPTLP, STL /GUARD BIT OF SHIFT REGISTER\r
99LPROTL, RTL\r
100 RTL\r
101 SPA /DO WE HAVE 8 BITS SHIFTED IN?\r
102 JMP LPTELP\r
103 DCA LPTCDF /SAVE SHIFT REGISTER\r
104 TAD I LPTCA\r
105 JMS I PLINK /PRINT A CHAR\r
106 SZA\r
107 JMP ERR\r
108 TAD I LPTCA\r
109 ISZ LPTCA /BUMP INPUT POINTER\r
110LP7400, 7400 /PROTECT ISZ\r
111 AND LP7400\r
112 CLL RAL\r
113 TAD LPTCDF /SHIFT HIGH 4 BITS INTO\r
114 JMP LPROTL /SHIFT REGISTER\r
115 \r
116LPTELP, JMS I PLINK /PRINT 3RD CHAR OF DOUBLEWORD\r
117 SZA\r
118 JMP ERR\r
119LPT1, ISZ LPTWC\r
120 JMP LPTLP /GET 3 MORE CHARS\r
121LPTCTZ, ISZ LPT /BUMP TO NORMAL RETURN\r
122LPTXIT, HLT /RESTORE FIELDS\r
123 JMP I LPT /EXIT\r
124 \r
125LPTERR, STL CLA RAR /PUT 4000 IN AC\r
126 JMP LPTXIT /AND TAKE ERROR RETURN\r
127 \r
128LPTWC, 0\r
129LPTCA, 0\r
130\r
131\r
132TRATXT, 0\r
133 TAD I TRATXT /get character\r
134 ISZ TRATXT /point to next\r
135 SNA /character zero?\r
136 JMP I TRATXT /yes - return\r
137 JMS I PLINK /no - transfer it\r
138 SNA\r
139 JMP TRATXT+1\r
140\r
141\r
142ERR, CLA CLL SNL\r
143 JMP LPTCTZ\r
144 TAD PLINK\r
145 TAD OFFSET\r
146 DCA PLINK\r
147 CLA IAC STL RAL /AC=CTRL/C\r
148 JMS I PLINK / send CTRL/C to abort job on '11\r
149LP7700, CLA SMA /never skips\r
150 JMP LPTERR\r
151\r
152\r
153LPT70, 70\r
154LPTCIF, CDF CIF 0\r
155OFFSET, VTYPE-LPTPCH\r
156\r
157 *376\r
158LPT, LPVERSION /NORMAL ENTRY POINT\r
159 JMS PLINK\r
160 IFNZRO LPT-376 <ENTERR.QQQQ>\r
161 PAGE\r
162\f\r
163/OUTPUT ANY CHARACTER ONTO THE OUTPUT LINE (8 DATA BITS)\r
164/CTRL Z IS TREATED AS END OF INPUT FILE.\r
165 \r
166LPTPCH, 0\r
167 DCA CHAR /save it\r
168 TAD CHAR\r
169 TAD (-CTRLZ\r
170 SNA\r
171 JMP EOF\r
172 JMS VREAD / CHECK XON/ XOFF\r
173 CLA\r
174 TAD CHAR\r
175 JMS VTYPE /transfer it\r
176 CLA\r
177 JMP I LPTPCH\r
178\r
179\r
180EOF, TAD (CTRLZ\r
181 JMS VTYPE\r
182 CLA IAC CLL\r
183 JMP I LPTPCH\r
184LPERR, IAC STL\r
185 JMP I LPTPCH\r
186\r
187\r
188\r
189COUNT2, -113\r
190CHAR, 0\r
191\r
192\r
193/THIS ROUTINE CHECKS THE SERIELL INPUT LINE FOR XON/ XOFF\r
194/ IT 8 IS STRIPPED OFF. IT ALSO CHECKS FOR CTRL C FROM\r
195/the terminal.\r
196\r
197VREAD, 0000\r
198 CLA\r
199 VRSF\r
200 JMP I VREAD /NO INPUT, RETURN\r
201 CLA\r
202 VRRB /INPUT BYTE --> AC\r
203 AND (177\r
204 TAD (-XOFF /IS IT XOFF CHAR?\r
205 SZA CLA\r
206 JMP I VREAD /NO XOFF, RETURN\r
207VR1, JMS CINTER /TEST FOR TERMINAL INTERRUPT\r
208 CLA\r
209 VROB /INPUT --> AC\r
210 AND (177 /STRIP OFF PARITY BIT\r
211 TAD (-XON /TEST FOR XON CHARACTER\r
212 SZA CLA\r
213 JMP VR1 /NO XON, WAIT\r
214 JMP I VREAD /XON, RETURN\r
215\r
216VTYPE, 0000\r
217VWTF, JMS CINTER /abort if CTRL/C typed\r
218 VSF\r
219 JMP VWTF\r
220 VLS\r
221 CLA\r
222 JMP I VTYPE /return\r
223\r
224CINTER, 0000\r
225 KSF /is there a character?\r
226 JMP I CINTER /no - return\r
227 DCA AC /yes - save Accu\r
228 KRB /read character\r
229 AND (177 /no parity\r
230 TAD (-CTRLC /is it CTRL/C?\r
231 SZA CLA /skip if it is\r
232 JMP NOCC /no - return\r
233 CLA /SEND CTRL Z\r
234 TAD (CTRLZ /TO LINE\r
235 JMS VTYPE /TO HOST - THIS ABORTS HOST JOB\r
236 CDF CIF 0 /exit\r
237 JMP I (7600 / to OS/8\r
238\r
239NOCC, TAD AC /restore Accu\r
240 JMP I CINTER /return\r
241\r
242AC, 0\r
243\r
244\r
245 $\r
246\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\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0