Add README.md
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape4 / LQP.PA
CommitLineData
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
21PDMP=6502
22PDMC=6503
23PDPC=6504
24PDRS=6505
25PDWS=6506
26PDRE=6507
27
28LPVERSION="A&77 /VERSION A (MH)
29
30*0 /ORIGIN FOR BUILD INFO
31
32-1 /ONE ENTRY POINT
33DEVICE LQP /GROUP NAME
34DEVICE LPT /DEVICE NAME
351040 /DEVICE TYPE
36LQP&177+4000 /ENTRY POINT + TWO-PAGE FLAG
370 /REQUIRED ZEROES
380
39
40PAGE
41
42LQPORG=.
43LQPCSV, 0
44LQPBUF, 0
45LQPDWC, 0
46LQPDCY, 0
47
48LQP, 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
77LQPBDF, 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
82LQPGO, ISZ LQPDWC
83 JMP LQPGO1 /LOOP IF MORE TO DO
84LQPCZ,
85 TAD (13);JMS LQPDOC /CLEAR SPACE ACCUMULATORS
86LQPRDF, 0 /THEN RETURN TO CALLER
87 ISZ LQP
88 ISZ LQP
89 JMP I LQP
90
91LQPGO1,
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
114LQPDCZ, 0
115 TAD LQPDCZ
116 AND (7600)
117 TAD (LQPDCX-LQPORG)
118 DCA LQPDCY
119 JMP I LQPDCZ
120
121LQPDOC, 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
134PAGE
135\fLQPTCH, 24 /2*NUMBER OF INCRS PER CHAR
136LQLINE, 20 /2*NUMBER OF INCRS PER LINE
137LQPAGE, -102 /-NUMBER OF LINES PER PAGE
138
139LQPDCX, 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)
148LQPDC1, DCA LQPCTM /SAVE CHAR CODE
149
150LQPWLP, 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
188LQPNDY, 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
209LQPNDX, TAD LQPCTM /RETRIEVE SAVED CHAR
210 SNA
211 JMP LQPDCR /JUMP IF NONE
212 CLL RAL /ADJUST FOR OFFSET
213 PDPC /PRINT CHAR
214
215LQPIDX, ISZ LQPDX /BUMP SPACE COUNTER
216 JMP LQPDCR /RETURN TO CALLER
217 JMP LQPDCR /...IN CASE ISZ SKIPPED...
218
219LQPSPC, /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
244LQPTB, TAD LQPX /DO TAB
245 TAD LQPDX
246 TAD (10)
247 AND (7770)
248 CIA
249
250LQPCR, TAD LQPX
251 CIA
252 DCA LQPDX /SAVE CR OR TAB MOTION
253
254LQPDCR, ISZ LQPDCX /BUMP TO OK RETURN
255 JMP I LQPDCX /AND TAKE IT
256
257LQPLF, 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
266LQPFF, TAD LQPY /DO FORM FEED
267 TAD LQPAGE
268 CIA
269 DCA LQPDY
270 JMP LQPDC1 /DO PAGE EJECT NOW
271
272LQPX, 0
273LQPDX, 0
274LQPY, 0
275LQPDY, 0
276LQPMTM, 0
277LQPCTM, 0
278
279PAGE