Commit | Line | Data |
---|---|---|
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= 35\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 | |
47 | PLINK, 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 | |
66 | LPTCDF, 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 | |
80 | LPCDF0, 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 | |
92 | RESFLD, 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 | |
98 | LPTLP, STL /GUARD BIT OF SHIFT REGISTER\r | |
99 | LPROTL, 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 | |
110 | LP7400, 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 | |
116 | LPTELP, JMS I PLINK /PRINT 3RD CHAR OF DOUBLEWORD\r | |
117 | SZA\r | |
118 | JMP ERR\r | |
119 | LPT1, ISZ LPTWC\r | |
120 | JMP LPTLP /GET 3 MORE CHARS\r | |
121 | LPTCTZ, ISZ LPT /BUMP TO NORMAL RETURN\r | |
122 | LPTXIT, HLT /RESTORE FIELDS\r | |
123 | JMP I LPT /EXIT\r | |
124 | \r | |
125 | LPTERR, STL CLA RAR /PUT 4000 IN AC\r | |
126 | JMP LPTXIT /AND TAKE ERROR RETURN\r | |
127 | \r | |
128 | LPTWC, 0\r | |
129 | LPTCA, 0\r | |
130 | \r | |
131 | \r | |
132 | TRATXT, 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 | |
142 | ERR, 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 | |
149 | LP7700, CLA SMA /never skips\r | |
150 | JMP LPTERR\r | |
151 | \r | |
152 | \r | |
153 | LPT70, 70\r | |
154 | LPTCIF, CDF CIF 0\r | |
155 | OFFSET, VTYPE-LPTPCH\r | |
156 | \r | |
157 | *376\r | |
158 | LPT, 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 | |
166 | LPTPCH, 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 | |
180 | EOF, TAD (CTRLZ\r | |
181 | JMS VTYPE\r | |
182 | CLA IAC CLL\r | |
183 | JMP I LPTPCH\r | |
184 | LPERR, IAC STL\r | |
185 | JMP I LPTPCH\r | |
186 | \r | |
187 | \r | |
188 | \r | |
189 | COUNT2, -113\r | |
190 | CHAR, 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 | |
197 | VREAD, 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 | |
207 | VR1, 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 | |
216 | VTYPE, 0000\r | |
217 | VWTF, 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 | |
224 | CINTER, 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 | |
239 | NOCC, TAD AC /restore Accu\r | |
240 | JMP I CINTER /return\r | |
241 | \r | |
242 | AC, 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 |