Add README.md
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape3 / DUMP.PA
1 /8 DUMP LPT HANDLER FOR OS/8
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /COPYRIGHT (C) 1974,1977 BY DIGITAL EQUIPMENT CORPORATION
12 /
13 /
14 /
15 /
16 /
17 /
18 /
19 /
20 /
21 /
22 /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23 /AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24 /CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25 /FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
26 /
27 /THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28 /UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29 /(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30 /SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
31 /
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
34 /DIGITAL.
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45
46 / DEC-S8-UCASA-A-LA
47
48 / COPYRIGHT 1972
49
50 / DIGITAL EQUIPMENT CORPORATION
51
52 / MAYNARD MASSACHUSETTS 01754
53
54 / MOUTH/DORP
55
56 IFNDEF CODE <CODE=0>
57
58 KCLR=CODE^10+6700 /CLEAR ALL
59 KSDR=CODE^10+6701 /SKIP ON DATA FLAG
60 KSEN=CODE^10+6702 /SKIP ON ERROR
61 KSBF=CODE^10+6703 /SKIP ON READY FLAG
62 KLSA=CODE^10+6704 /LOAD STATUS A
63 KSAF=CODE^10+6705 /SKIP ON ANY FLAG OR ERROR
64 KGOA=CODE^10+6706 /ASSERT CONTENTS OF STATUS A AND XFER
65 KRSB=CODE^10+6707 /READ STATUS B
66
67 BSW=7002 /BYTE SWAP [8/E,F ONLY]
68
69 /REWIND=10
70 /BACKFIL=30
71 /WRGAP=40
72 /BACKBLOCK=50
73 /SKPFIL=70
74
75 /SPECIAL CODES
76
77 / 0 WRITE EOF
78 / 1 REWIND
79 / 2 BACKBLOCK
80 / 3 SKIPFILE/BACKFILE
81
82 / 4-7 UNUSED (TAKES LOW ORDER 2 BITS ONLY CURRENTLY)
83
84 \f/ EDIT HISTORY:
85
86 / 1976 S.R. ORIGINALLY WRITTEN
87 / 19-MAR-77 S.R. FIXED BUG WITH BUFFER ENDING AT 7777
88
89 *0
90
91 -1
92 DEVICE DUMP;DEVICE DUMP;1360;DUMP&177+4000;ZBLOCK 2
93
94 DMPVER="C&77
95 \f *200
96
97 LINK, 0 /POINTS TO 'LINC' ON NEXT PAGE
98 TAD I DUMP /GET FUNCTION CONTROL WORD
99 DCA FNWD
100 ISZ DUMP /POINT TO BUFFER STARTING ADDRESS
101 TAD I DUMP /GET BUFFER STARTING ADDRESS
102 DCA BUFFER
103 ISZ DUMP /POINT TO STARTING BLOCK #
104 TAD I DUMP /GET STARTING BLOCK NUMBER
105 DCA BLOCK /SAVE IT IN 'BLOCK'
106 ISZ DUMP /POINT TO USER'S ERROR RETURN
107 RDF
108 TAD KCIDF /FOR 'CIF CDF' TO USER'S FIELD
109 DCA DMPRET /NEED IT TO RETURN TO HIM LATER
110 TAD FNWD /LOOK AT FUNCTION WORD
111 SMA /BIT 0 IS READ/WRITE BIT
112 JMP ERRET /TAKE FATAL ERROR IF GUY TRIED TO
113 /READ FROM 'DUMP'
114 AND L3700
115 CLL RTR
116 SNA
117 JMP CLOSE /0 PAGES MEANS PERFORM CLOSE
118 /OPERATION, GO AWAY
119 CIA /STORE AWAY NEGATIVE OF
120 /NUMBER OF LINES TO DUMP
121 DCA KNT
122 TAD FNWD /LOOK SOME MORE AT ALL-IMPORTANT
123 /FUNCTION WORD
124 L374, AND L70 /ISOLATE FIELD OF BUFFER
125 TAD KCDF /FORM 'CDF' TO FLD OF BUFFER
126 DCA .+1 /STORE IT IN NEXT LOCATION
127 FNWD,
128 BPTR, HLT /CHANGE DATA FIELD TO FLD OF BUFFER
129 B, TAD M40
130 DCA RKNT
131 JMS I LINK
132 TAD LOW-200
133 CIA CLL
134 TAD BLOCK
135 SZL CLA
136 TAD KLLS
137 JMS I LINK
138 DCA LPUT+1-200
139 TAD BLOCK
140 JMS I LINK
141 JMP BLK-200
142 JMS I LINK
143 JMP CRLF-200
144 A, JMS INIT
145 TAD RKNT
146 TAD L40 /MUST BE REAL 40
147 JMS I LINK
148 JMS PRINT-200
149 TAD KSLASH
150 JMS I LINK
151 JMP SPACE-200
152 C, TAD I BPTR /GET WORD FROM BUFFER
153 JMS I LINK
154 JMS PRINT-200 /PRINT IT IN OCTAL ON LIST DEVICE
155 ISZ BPTR /POINT TO NEXT WORD IN BUFFER
156 NOP /V3D
157 ISZ CKNT /DONE WITH THIS ROW?
158 JMP C /NO, GO PRINT NEXT WORD
159 JMS I LINK
160 JMP SPACE-200
161 JMS INIT
162 D, TAD I BPTR
163 RTR
164 RTR
165 RTR
166 JMS I LINK
167 JMP PUT6-200
168 TAD I BPTR
169 JMS I LINK
170 JMP PUT6-200
171 ISZ BPTR /POINT TO NEXT WORD IN BUFFER
172 NOP /V3D
173 ISZ CKNT /DONE WITH THIS ROW?
174 JMP D /NO, GO ON TO NEXT WORD
175 JMS I LINK
176 JMP SPACE-200
177 JMS INIT
178 E, TAD I BUFFER /GET WORD 1 OF PAIR
179 JMS I LINK
180 JMP PUTSAV-200 /PUT OUT THE CHAR AND SAVE THE WORD
181 ISZ BUFFER /POINT TO WORD 2 OF PAIR
182 TAD I BUFFER /GET WORD 2 OF PAIR
183 JMS I LINK
184 JMP PUTSAV-200
185 ISZ BUFFER /POINT TO BEGIN OF NEXT PAIR
186 JMS I LINK
187 JMP THIRD-200 /PRINT THIRD CHAR FROM
188 /REMEMBRANCES OF LAST TWO
189 ISZ CKNT
190 ISZ CKNT /DONE WITH THIS ROW?
191 JMP E /NO, GO ON TO NEXT PAIR
192 JMS I LINK /YES
193 JMP CRLF-200 /PRINT CARRIAGE RETURN/LINE FEED
194 ISZ KNT /DONE WITH BUFFER YET?
195 SKP /NO
196 JMP OKRET /YES
197 ISZ RKNT /DONE WITH LAST ROW OF PAGE?
198 JMP A /NO, GO ON TO NEXT ROW IN SAME PAGE
199 ISZ BLOCK /BUMP BLOCK NUMBER BY 1
200 JMP B /GO DUMP THE NEXT PAGE
201 \fCLOSE, STA /-1 CHANGES CR TO FORM FEED
202 JMS I LINK
203 JMP CRLF-200
204 OKRET, ISZ DUMP /POINT TO NORMAL RETURN
205 M40, SMA SZA CLA /AC 0 SO ALWAYS SKIPS
206 ERRET, STL CLA RAR /FATAL ERROR HAS AC NEGATIVE
207 DMPRET, HLT /PERFORM 'CIF CDF' TO USER'S FIELD
208 JMP I DUMP /RETURN
209
210 INIT, 0
211 TAD M10
212 DCA CKNT
213 TAD BUFFER
214 DCA BPTR
215 JMP I INIT
216
217 KSLASH, 57-40
218 KCIDF, CIF CDF 0
219 KCDF, CDF 0
220 M10, -10
221 L40, 40 /MUST BE REAL 40
222 L3700, 3700
223 BUFFER, 0
224 RKNT, 0 /ROW COUNT
225 CKNT, 0 /COLUMN COUNT
226 BLOCK, 0 /CURRENT BLOCK NUMBER
227 KLLS, LLS
228 IFZERO .-375&4000 <ERROR>
229 *374
230 L70, 70 /MUST BE AT REL LOC 174
231 KNT, 0 /- NUMBER OF PAGES LEFT TO DUMP
232 IFNZRO L70-374 <ERROR>
233 DUMP, DMPVER
234 JMS LINK /GET ADDRESS OF NEXT PAGE INTO LINK
235 IFNZRO .-400 <ERROR>
236 PAGE
237 \f LSF=6661 /SLIP ON LPT FLAG
238 LLS=6666 /LOAD LPT BUFFER
239
240 IFDEF DMPTTY <
241 LSF=TSF
242 LLS=TLS
243 >
244
245 LINC, 0
246 DCA ARG
247 RDF
248 TAD HCDF
249 TTY12, DCA TEMP
250 HCDF, CDF 0
251 TAD I LINC
252 DCA DOIT
253 ISZ LINC
254 L77, 77
255 TEMP, 0
256 TAD ARG
257 CNT,
258 DOIT, HLT
259 POP, JMP I LINC /RETURN
260 L177, 177
261 IFNZRO POP&177-15 <ERROR> /MUST BE AT 15 IN PG
262 IFNZRO DOIT&177-14 <ERROR>
263 IFNZRO TEMP&177-12 <ERROR>
264
265 THIRD, TAD SAVE
266 DCA ARG
267 TAD ARG
268 PUTSAV, AND L7600
269 CLL RAL
270 TAD SAVE
271 RTL
272 RTL
273 AND L177
274 DCA SAVE
275 TAD ARG
276 AND L177 /FORCE 7-BIT
277 TAD M140 /DO RANGE CHECK
278 CLL
279 TAD (100 /FOR BETWEEN 40 AND 137
280 SNL /SKIP ON SUCCESS
281 TTY40,
282 M140, SZA CLA /NEVER SKIPS
283 PUTSPC, TAD TTY40 /RESTORE CHAR OR BLANK
284 PUTPOP, JMS LPUT
285 TTY215, JMP POP
286 \fLPUT, 0
287 NOP /THIS MAY BE AN 'LLS' OR 0
288 L7600, 7600 /CLA
289 KBD, KSF
290 JMP CHECKL
291 TAD L7600
292 KRS
293 TAD (-7603
294 SNA CLA
295 JMP CTRLC
296 KRB
297 TLS
298 AND L177
299 TAD (-15
300 SNA
301 JMP CR
302 TAD (15-70
303 CLL
304 TAD (10
305 DCA TEMP
306 SNL
307 JMP NOT /NOT A DIGIT
308 TAD NUM
309 CLL RAL
310 CLL RAL
311 CLL RAL
312 TAD TEMP
313 DCA NUM
314 JMP CHECKL
315 CTRLC, CIF CDF 0
316 JMP I L7600
317 CR, TAD NUM
318 DCA LOW
319 TAD (12-77
320 NOT, TAD L77
321 TSF
322 JMP .-1
323 XTRA, TLS
324 CLA
325 DCA NUM
326 CHECKL, LSF
327 JMP KBD
328 JMP I LPUT /YES, RETURN
329 NUM, 0
330 LOW, 0
331 \fPUT6, TAD TTY40
332 AND L77
333 JMP PUTSPC
334
335 PRINT, 0
336 DCA ARG
337 TAD TTY40
338 JMS LPUT
339 TAD (-4
340 DCA CNT
341 PRLUP, TAD ARG
342 AND L7600
343 CLL RTL
344 TAD L214 /14 SHIFTS TO 60
345 /AND L214 HAS AC0 = 0
346 RTL
347 JMS LPUT
348 TAD ARG
349 RTL
350 RAL
351 DCA ARG
352 ISZ CNT /BUG IF TRY TO USE AS L214
353 JMP PRLUP
354 JMP I PRINT
355 L214, 214 /COULD BE 'AND CNT'
356
357 SAVE, 0 /MUST BE DEDICATED. USED AS SHIFT
358 /REG AND MUST BE ALMOST 0 ON ENTRY
359 \fARG, 0
360
361 SPACE, TAD TTY40
362 JMS LPUT
363 JMP PUTSPC
364
365 BLK, SNA CLA
366 DCA LOW /BLOCK 0 INITIALIZATION
367 TAD L214 /FORM FEED
368 JMS LPUT
369 TAD ARG
370 JMS PRINT
371 / TAD (-10
372 / DCA TEMP
373 / TAD TTY3
374 / JMS SPACE
375 /LUP, TAD TEMP
376 / TAD (10 /MUST BE REAL 10
377 / JMS PRINT
378 / ISZ TEMP
379 / JMP LUP
380 CRLF, TAD TTY215
381 JMS LPUT
382 TAD TTY12
383 JMP PUTPOP
384 PAGE
385 \f