Commit | Line | Data |
---|---|---|
7af5ad59 PH |
1 | / LQP HANDLER FOR OS/8 |
2 | / | |
3 | / | |
4 | / THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE | |
5 | / AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT | |
6 | / CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY | |
7 | / FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT. | |
8 | / | |
9 | / THE SOFTWARE DESCRIBED HEREIN IS FURNISHED TO THE PURCHASER | |
10 | / UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED | |
11 | / (WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH | |
12 | / SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL. | |
13 | / | |
14 | / DIGITAL EQUIPMENT ASSUMES NO RESPONSIBILITY FOR THE USE | |
15 | / OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED | |
16 | / BY DIGITAL. | |
17 | / | |
18 | / COPYRIGHT (C) 1977 BY DIGITAL EQUIPMENT CORPORATION | |
19 | / | |
20 | ||
21 | PDMP=6502 | |
22 | PDMC=6503 | |
23 | PDPC=6504 | |
24 | PDRS=6505 | |
25 | PDWS=6506 | |
26 | PDRE=6507 | |
27 | ||
28 | LPVERSION="A&77 /VERSION A (MH) | |
29 | ||
30 | *0 /ORIGIN FOR BUILD INFO | |
31 | ||
32 | -1 /ONE ENTRY POINT | |
33 | DEVICE LQP /GROUP NAME | |
34 | DEVICE LPT /DEVICE NAME | |
35 | 1040 /DEVICE TYPE | |
36 | LQP&177+4000 /ENTRY POINT + TWO-PAGE FLAG | |
37 | 0 /REQUIRED ZEROES | |
38 | 0 | |
39 | ||
40 | PAGE | |
41 | ||
42 | LQPORG=. | |
43 | LQPCSV, 0 | |
44 | LQPBUF, 0 | |
45 | LQPDWC, 0 | |
46 | LQPDCY, 0 | |
47 | ||
48 | LQP, LPVERSION /ENTRY POINT (MH) | |
49 | CLA STL RTL /RAISE RIBBON | |
50 | PDWS | |
51 | ||
52 | PDRE /INIT PRINTER | |
53 | DCA .-1 /---FIRST TIME ONLY--- | |
54 | ||
55 | JMS LQPDCZ /INIT SECOND PAGE LINK | |
56 | ||
57 | RDF /GET RETURN CIF | |
58 | TAD (CIF CDF) | |
59 | DCA LQPRDF | |
60 | ||
61 | TAD I LQP /GET FUNCTION WORD | |
62 | AND (70) | |
63 | TAD (CDF) | |
64 | DCA LQPBDF /SET BUFFER CDF | |
65 | ||
66 | TAD I LQP | |
67 | AND (3700) | |
68 | CMA | |
69 | DCA LQPDWC /SET DOUBLE-WORD COUNT +1 | |
70 | ||
71 | ISZ LQP | |
72 | TAD I LQP | |
73 | DCA LQPBUF /SET BUFFER PTR | |
74 | ||
75 | ISZ LQP | |
76 | TAD I LQP | |
77 | LQPBDF, 0 /CDF TO BUFFER | |
78 | SZA CLA | |
79 | JMP LQPGO | |
80 | TAD (15);JMS LQPDOC /NEW PAGE ON BLOCK 0 | |
81 | TAD (14);JMS LQPDOC | |
82 | LQPGO, ISZ LQPDWC | |
83 | JMP LQPGO1 /LOOP IF MORE TO DO | |
84 | LQPCZ, | |
85 | TAD (13);JMS LQPDOC /CLEAR SPACE ACCUMULATORS | |
86 | LQPRDF, 0 /THEN RETURN TO CALLER | |
87 | ISZ LQP | |
88 | ISZ LQP | |
89 | JMP I LQP | |
90 | ||
91 | LQPGO1, | |
92 | TAD I LQPBUF /GET NEXT WORD | |
93 | AND (7400) | |
94 | CLL RTR | |
95 | DCA LQPCSV /SAVE PART OF THIRD CHAR | |
96 | ||
97 | TAD I LQPBUF | |
98 | JMS LQPDOC /OUTPUT FIRST CHAR | |
99 | ||
100 | ISZ LQPBUF | |
101 | TAD I LQPBUF | |
102 | JMS LQPDOC /OUTPUT SECOND CHAR | |
103 | ||
104 | TAD I LQPBUF | |
105 | AND (7400) /PUT THIRD CHAR TOGETHER | |
106 | BSW | |
107 | TAD LQPCSV | |
108 | CLL RTR | |
109 | JMS LQPDOC /OUTPUT THIRD CHAR | |
110 | ||
111 | ISZ LQPBUF | |
112 | JMP LQPGO /LOOP FOR DONE TEST | |
113 | ||
114 | LQPDCZ, 0 | |
115 | TAD LQPDCZ | |
116 | AND (7600) | |
117 | TAD (LQPDCX-LQPORG) | |
118 | DCA LQPDCY | |
119 | JMP I LQPDCZ | |
120 | ||
121 | LQPDOC, 0 | |
122 | JMS I LQPDCY | |
123 | JMP LQPCZ | |
124 | ||
125 | KRS /CHECK FOR CONTROL C AT CONSOLE | |
126 | AND (177) | |
127 | TAD (-3) | |
128 | SZA CLA /SKIP IF SO | |
129 | JMP I LQPDOC | |
130 | ||
131 | CIF CDF 0 /RETURN TO OS8 | |
132 | JMP I (7600) | |
133 | ||
134 | PAGE | |
135 | \fLQPTCH, 24 /2*NUMBER OF INCRS PER CHAR | |
136 | LQLINE, 20 /2*NUMBER OF INCRS PER LINE | |
137 | LQPAGE, -102 /-NUMBER OF LINES PER PAGE | |
138 | ||
139 | LQPDCX, 0 /OUTPUT ONE CHAR | |
140 | AND (177) | |
141 | TAD (-40) /TEST FOR SPECIAL OR BLANK | |
142 | SPA | |
143 | JMP LQPSPC /JUMP IF SPECIAL | |
144 | SNA | |
145 | JMP LQPIDX /JUMP IF BLANK | |
146 | ||
147 | TAD (40) | |
148 | LQPDC1, DCA LQPCTM /SAVE CHAR CODE | |
149 | ||
150 | LQPWLP, PDRS /LOOP TIL DEVICE READY | |
151 | BSW | |
152 | SMA CLA | |
153 | JMP .+5 /JUMP IF NO CHECK FLAG | |
154 | PDRE /ELSE RESET DEVICE | |
155 | DCA LQPX /AND HORIZONTAL POSITIONS | |
156 | DCA LQPDX | |
157 | ISZ LQPDY /ADVANCE A LINE, FOR CLARITY | |
158 | ||
159 | PDRS | |
160 | STL | |
161 | TAD (400) | |
162 | SZL CLA | |
163 | JMP LQPWLP /LOOP IF NOT READY | |
164 | ||
165 | TAD LQPDY /DO Y MOTION, IF NEEDED | |
166 | SNA | |
167 | JMP LQPNDY /JUMP IF NONE | |
168 | CIA | |
169 | DCA LQPMTM /SAVE -NUMBER LINES TO DO | |
170 | ||
171 | TAD LQLINE /SUM TOTAL INCRS TO DO | |
172 | ISZ LQPMTM | |
173 | JMP .-2 | |
174 | ||
175 | PDMP /MOVE PAPER | |
176 | ||
177 | TAD LQPY /COMPUTE NEW POSITION | |
178 | TAD LQPDY | |
179 | TAD LQPAGE /ON PAGE, PLEASE!! | |
180 | SMA | |
181 | JMP .-2 | |
182 | CIA | |
183 | TAD LQPAGE | |
184 | CIA | |
185 | DCA LQPY | |
186 | DCA LQPDY | |
187 | ||
188 | LQPNDY, TAD LQPDX /DO X MOTION, IF NEEDED | |
189 | SNA | |
190 | JMP LQPNDX /JUMP IF NONE | |
191 | ||
192 | STL | |
193 | SMA | |
194 | CLL CIA /ADJUST FOR -X MOTION | |
195 | DCA LQPMTM | |
196 | ||
197 | TAD LQPTCH /SUM TOTAL INCRS TO DO | |
198 | ISZ LQPMTM | |
199 | JMP .-2 | |
200 | ||
201 | RAR /GET DIRECTION INDICATOR BACK | |
202 | PDMC /MOVE CARRIAGE | |
203 | ||
204 | TAD LQPX /COMPUTE NEW POSITION | |
205 | TAD LQPDX | |
206 | DCA LQPX | |
207 | DCA LQPDX | |
208 | ||
209 | LQPNDX, TAD LQPCTM /RETRIEVE SAVED CHAR | |
210 | SNA | |
211 | JMP LQPDCR /JUMP IF NONE | |
212 | CLL RAL /ADJUST FOR OFFSET | |
213 | PDPC /PRINT CHAR | |
214 | ||
215 | LQPIDX, ISZ LQPDX /BUMP SPACE COUNTER | |
216 | JMP LQPDCR /RETURN TO CALLER | |
217 | JMP LQPDCR /...IN CASE ISZ SKIPPED... | |
218 | ||
219 | LQPSPC, /SPECIAL CHARACTER CHECKING | |
220 | TAD (40-32) /CONTROL Z? | |
221 | SNA | |
222 | JMP I LQPDCX /TAKE EOF RETURN IF SO | |
223 | ||
224 | TAD (32-15) /CARRIAGE RETURN? | |
225 | SNA | |
226 | JMP LQPCR /JUMP IF SO | |
227 | ||
228 | IAC /FORM FEED? | |
229 | SNA | |
230 | JMP LQPFF /JUMP IF SO | |
231 | ||
232 | IAC /VERTICAL TAB? | |
233 | SNA | |
234 | JMP LQPDC1 /CLEAR ACCUMULATORS, IF SO | |
235 | ||
236 | IAC /LINE FEED? | |
237 | SNA | |
238 | JMP LQPLF /BUMP LINE COUNTER IF SO | |
239 | ||
240 | IAC /TAB? | |
241 | SNA CLA | |
242 | JMP LQPDCR /RETURN IF NOT RECOGNIZED | |
243 | ||
244 | LQPTB, TAD LQPX /DO TAB | |
245 | TAD LQPDX | |
246 | TAD (10) | |
247 | AND (7770) | |
248 | CIA | |
249 | ||
250 | LQPCR, TAD LQPX | |
251 | CIA | |
252 | DCA LQPDX /SAVE CR OR TAB MOTION | |
253 | ||
254 | LQPDCR, ISZ LQPDCX /BUMP TO OK RETURN | |
255 | JMP I LQPDCX /AND TAKE IT | |
256 | ||
257 | LQPLF, ISZ LQPDY /BUMP LINE COUNTER | |
258 | TAD LQPY /CHECK FOR NEXT PAGE | |
259 | TAD LQPDY | |
260 | TAD LQPAGE | |
261 | SMA CLA | |
262 | JMP LQPDC1 /JUMP IF SO | |
263 | ||
264 | JMP LQPDCR /ELSE, JUST RETURN | |
265 | ||
266 | LQPFF, TAD LQPY /DO FORM FEED | |
267 | TAD LQPAGE | |
268 | CIA | |
269 | DCA LQPDY | |
270 | JMP LQPDC1 /DO PAGE EJECT NOW | |
271 | ||
272 | LQPX, 0 | |
273 | LQPDX, 0 | |
274 | LQPY, 0 | |
275 | LQPDY, 0 | |
276 | LQPMTM, 0 | |
277 | LQPCTM, 0 | |
278 | ||
279 | PAGE |