software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape4 / LQP.PA
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