Add README.md
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape1 / LIBSET.PA
CommitLineData
7af5ad59
PH
1/LIBSET - LIBRARY BUILDER PROGRAM
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 MANUAL.
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\f FIELD 1
46 HILOC=20
47 INFPTR=21
48 IFPTR=22
49 TEMP=23
50 NAMPTR=24
51/VERSION=3
52/PATCH="A
53
54 *2600
55START, SKP
56 JMP .+4
57CALLCD, JMS I (200
58 5
59RL, 2214
60 0 /DON'T RESET OUTPUT FILES
61 ISZ FIRST
62 JMP NOTFST
63 TAD I (7604
64 SNA
65 TAD RL
66 DCA I (7604
67 TAD I (7600
68 SZA CLA /IS THERE AN OUTPUT FILE?
69 JMP OUTYES /YES
70 CLA IAC
71 DCA I (7600 /NO - MAKE SYS:LIB8.RL THE OUTPUT FILE
72 TAD (1411
73 DCA I (7601
74 TAD (0270
75 DCA I (7602
76 TAD I (7617
77 SNA CLA /HOW ABOUT INPUT FILES?
78 TAD I (MPARAM+1
79 AND (40 /IF NO INPUT FILES,
80 SNA CLA /AND /S OPTION IS ON,
81 JMP OUTYES
82 DCA PTRCOD /USE PTR: FOR INPUT
83 JMS I (200
84 12
85 4224
86PTRCOD, 0
87 0
88 JMP I PERROR /NO PTR - BAD
89 TAD PTRCOD
90 DCA I (7617
91OUTYES, JMS I (XOPEN
92 JMS I (OCHAR
93 JMS I (DMPREC /PUT OUT NOTHIN IN FIRST RECORD
94 TAD (7000
95 DCA NAMPTR
96 TAD (7376
97 DCA INFPTR
98NOTFST, TAD (7617
99 DCA IFPTR
100FILELP, TAD I IFPTR
101 SNA CLA
102 JMP NEXTCD
103 TAD IFPTR
104 JMS I (IOPEN
105READLP, CLA CMA
106 TAD I (OUCCNT
107 DCA FLEN
108 DCA HILOC
109 JMS I (IREAD /READ AND COPY A RELOCATABLE PROGRAM
110 SZA CLA /TEST CHECKSUM
111 JMP I PERROR
112 TAD HILOC
113 AND (7600
114 TAD FLEN
115 DCA I INFPTR
116 JMS I (DMPREC
117 ISZ INFPTR
118 DCA I INFPTR
119 CLA CLL CMA RTL
120 TAD INFPTR
121 DCA INFPTR
122 TAD I (MPARAM+1
123 AND (40
124 SZA CLA
125 JMP READLP /IF /S SWITCH ON , CONTINUE READING TAPES UNTIL A ^Z
126NXFIL, ISZ IFPTR
127 ISZ IFPTR
128 JMP FILELP
129NEXTCD, TAD I (MPARAM-1
130 SMA CLA
131 JMP CALLCD
132 DCA I NAMPTR
133 ISZ NAMPTR
134 ISZ NAMPTR
135 ISZ NAMPTR
136 DCA I NAMPTR
137 TAD NAMPTR
138 CMA IAC
139 TAD INFPTR
140 SMA CLA
141 JMP I (FINISH
142 JMP I .+1
143 TOOBIG
144
145FIRST, -1
146FLEN, 0
147
148JTABL, DATAWD
149 DATAWD
150 ERROR
151 SYMDEF
152 ORIGIN
153 DATAWD
154 DATAWD
155PERROR, ERROR
156 ENDTAP
157 ERROR
158 COMMON
159 ERROR
160 ERROR
161 ERROR
162 ERROR
163 TRANVC
164
165VERSON, 6301 /VERSION AND PATCH LEVEL
166\f *3000
167IREAD, 0
168 TAD (200
169 DCA LOC
170ILEADR, JMS I (ICHAR
171 DCA CKSM
172 TAD CKSM
173 AND (177
174 SNA CLA
175 JMP ILEADR
176 TAD CKSM
177 TAD (-232
178 SNA CLA
179 JMP I (NXFIL
180 TAD (200
181 JMS I (OCHAR
182 TAD CKSM
183 JMS I (OCHAR
184 TAD CKSM
185 SKP
186NXTFRM, JMS RCHAR
187 CLL RTR
188 RTR
189 RAR
190 DCA CHAR1
191 TAD CHAR1
192 RAL
193 AND (17
194 TAD JMPTAB
195 DCA BTMP
196 TAD I BTMP
197 DCA BTMP
198 JMP I BTMP
199JMPTAB, JTABL
200
201RCHAR, 0
202 JMS I (ICHAR
203 DCA CHAR
204 TAD CKSM
205 TAD CHAR
206 DCA CKSM
207 TAD CHAR
208 JMS I (OCHAR
209 TAD CHAR
210 JMP I RCHAR
211
212DATAWD, JMS RCHAR
213 CLA CLL
214 TAD LOC
215 CMA
216 TAD HILOC
217 SZL CLA
218 JMP .+3
219 TAD LOC
220 DCA HILOC
221 ISZ LOC
222 JMP NXTFRM
223
224SYMDEF, JMS RCHAR
225 CLA CLL CMA RTL
226 DCA CHAR1
227GTNMLP, JMS RCHAR
228 AND (77
229 CLL RTL
230 RTL
231 RTL
232 DCA BTMP
233 JMS RCHAR
234 AND (77
235 TAD BTMP
236 DCA I NAMPTR
237 ISZ NAMPTR
238 ISZ CHAR1
239 JMP GTNMLP
240 TAD INFPTR
241 AND (377
242 DCA I NAMPTR
243 ISZ NAMPTR
244 TAD NAMPTR
245 CIA
246 TAD INFPTR
247 SPA SNA CLA
248 JMP I (TOOBIG
249 JMP NXTFRM
250
251ORIGIN, JMS RCHAR
252 CLA
253 TAD CHAR1
254 AND (7400
255 TAD CHAR
256 DCA LOC
257 JMP NXTFRM
258
259COMMON, JMS RCHAR
260 CLA
261 JMP NXTFRM
262
263TRANVC, JMS RCHAR
264 CLL RAL
265 TAD CHAR
266 CLL RAL
267 CIA
268 DCA BTMP
269 JMS RCHAR
270 CLA
271 ISZ BTMP
272 JMP .-3
273 JMP NXTFRM
274
275ENDTAP, TAD CKSM
276 CIA
277 TAD CHAR
278 DCA BTMP
279 JMS RCHAR
280 CLA
281 TAD CHAR1
282 AND (7400
283 TAD CHAR
284 TAD BTMP
285 JMP I IREAD
286
287LOC, 0
288CHAR1, 0
289CHAR, 0
290BTMP, 0
291CKSM, 0
292
293\f *3200
294XOPEN, 0
295 TAD (7577
296 DCA 10
297 TAD (FILENM-1
298 DCA 11
299 TAD (-5
300 DCA 12
301 TAD I 10
302 DCA I 11
303 ISZ 12
304 JMP .-3
305 JMS I (OOPEN
306 TAD I (OUBLK
307 DCA CTLWRI
308 TAD I (OUHNDL
309 DCA ODVH
310 JMP I XOPEN
311
312DMPREC, 0
313 JMS I (OCHAR
314 JMS I (OCHAR
315 TAD I (OUDWCT
316 TAD (200
317 SZA CLA
318 JMP .-4
319 JMP I DMPREC
320
321FINISH, JMS I (OCLOSE
322 CIF 0
323 JMS I ODVH
324 4210
325 7000
326CTLWRI, 0
327 JMP OUTERR
328 CDF CIF 0
329 JMP I (7605
330FILENM, ZBLOCK 5
331ODVH, 0
332
333TOOBIG, ISZ ERRNO
334ERROR, ISZ ERRNO
335OUTERR, ISZ ERRNO
336INERR, ISZ ERRNO
337ERR, TAD ERRNO
338 TAD (ERR0
339 DCA EPCH
340 DCA ERRNO
341 TAD I EPCH
342 DCA ODVH
343ERRLP, TAD I ODVH
344 RTR
345 RTR
346 RTR
347 JMS EPCH
348 TAD I ODVH
349 JMS EPCH
350 ISZ ODVH
351 JMP ERRLP
352ERXIT, CDF CIF 0
353 JMP I .+1
354 7605
355
356EPCH, 0
357 AND (77
358 SNA
359 JMP ERXIT
360 TAD (-40
361 SPA
362 TAD (100
363 TAD (240
364 6046
365 6041
366 JMP .-1
367 CLA
368 JMP I EPCH
369
370ERRNO, 0
371\f *3400
372 /ERROR MESSAGES
373ERR0, HELP
374 INPER
375 OUPER
376 RELER
377 BIGER
378
379HELP, TEXT /HELP!/ /THIS ERROR CANNOT OCCUR
380INPER, TEXT /INPUT ERROR/
381OUPER, TEXT /ERROR WHILE WRITING OUTPUT FILE/
382RELER, TEXT /BAD FORMAT OR CHECKSUM - TRY AGAIN./
383BIGER, TEXT /LIBRARY DIRECTORY OVERFLOW - TOUGH/
384\f INBUF=0
385 INCTL=2400
386 OUBUF=6000
387 OUCTL=4200
388 INDEVH=6400
389 OUDEVH=7000
390 INRECS=12
391 MPARAM=7643
392 DCB=7760
393 INFLD=INCTL&70 /GET FIELD OF INPUT BUFFER
394 OUFLD=OUCTL&70 /DITTO OUTPUT BUFFER
395 *2000
396IN7400, 7400
397IOPEN, 0
398 DCA INXPTR
399 CLA CMA
400 DCA INCHCT /SET INCHCT TO FORCE A READ
401 ISZ INEOF /SET END-OF-FILE FLAG TO FORCE A NEW FILE
402 RDF
403 TAD INCDIF
404 DCA .+1
405INPTR, HLT /RESTORE CALLING FIELDS
406 JMP I IOPEN
407
408ICHAR, 0
409IN7600, 7600
410 RDF
411 TAD INCDIF
412 DCA INRTRN /SAVE CALLING FIELDS
413INCHAR, CDF INFLD
414 ISZ INJMP /BUMP THREE-WAY UNPACK SWITCH
415 ISZ INCHCT
416INJMPP, JMP INJMP
417 TAD INEOF
418 SNA CLA /DID LAST READ YIELD END-OF-FILE?
419 JMP INGBUF /NO - DO ANOTHER
420GETNEW, JMS INNEWF /OPEN A NEW INPUT FILE
421 JMP I (ERROR
422INGBUF, TAD INCTR
423 CLL
424 TAD (INRECS
425 SNL
426 DCA INCTR /RESTORE INCTR IF IT HASN'T OVERFLOWED
427 SZL /IS THIS THE LAST READ?
428 ISZ INEOF /YES - SET END-OF-FILE FLAG
429 CLL CML CMA RTR /CONSTRUCT A CONTROL WORD FOR THE READ
430 RTR /FROM THE AMOUNT OF THE OVERFLOW
431 RTR /(IF ANY) AND THE STANDARD CONTROL WORD
432 TAD (INCTL+1
433 DCA INCTLW
434INCDIF, CDF CIF 0
435 CDF 10
436 JMS I INHNDL /CALL THE DEVICE HANDLER
437INCTLW, 0
438INBUFP, INBUF
439INREC, 0
440 JMP INERRX /SOME KIND OF HANDLER ERROR
441INBREC, TAD INREC
442 TAD (INRECS
443 DCA INREC /UPDATE THE RECORD NUMBER
444 TAD INCTLW
445 AND IN7600
446 CLL RAL
447 TAD INCTLW
448 AND IN7600
449 CMA
450 DCA INCHCT /COMPUTE THE NEW CHARACTER COUNT
451 TAD INJMPP
452 DCA INJMP /RESET THE CHARACTER SWITCH
453 TAD INBUFP
454 DCA INPTR /AND THE WORD POINTER
455 JMP INCHAR /GO BACK AND MAKE BELIEVE THIS NEVER HAPPENED
456INERRX, ISZ INEOF /EITHER AN END-OF-FILE OR A BADDIE
457 SMA CLA /WHICH TYPE WAS IT?
458 JMP INBREC /END OF FILE - RESUME THY PROCESSING
459 JMP I (INERR
460INJMP, HLT /THIS IS THE THREE - WAY CHARACTER SWITCH
461 JMP ICHAR1
462 JMP ICHAR2
463ICHAR3, TAD INJMPP
464 DCA INJMP
465 TAD I INPTR
466IN200, AND IN7400
467 CLL RTR
468 RTR /COMBINE THE HIGH-ORDER FOUR BITS OF
469 TAD INCTLW
470 RTR /THE TWO WORD TO FORM THE THIRD CHARACTER
471 RTR
472 ISZ INPTR
473 JMP INCOMN
474ICHAR2, TAD I INPTR
475 AND IN7400
476 DCA INCTLW /SAVE THE HIGH-ORDER BITS FOR THE THIRD CHAR
477 ISZ INPTR /BUMP THE WORD POINTER
478ICHAR1, TAD I INPTR
479INCOMN, AND (377
480INRTRN, 0 /RESTORE CALLING FIELDS
481 JMP I ICHAR /AND RETURN
482INXPTR, 0
483INEOF, 1 /THESE PARAMETERS ARE SET UP SO THAT
484 /IOPEN IS UNNECESSARY.
485INNEWF, -1
486 INCHCT=INNEWF
487 CDF 10
488 TAD (INDEVH+1
489 DCA INHNDL /INITIALIZE HANDLER ADDRESS
490 TAD I INXPTR
491 SNA /ANY MORE?
492 JMP I INNEWF /NO - OUT OF INPUT
493 JMS I IN200
494 1 /ASSIGN, FETCH HANDLER
495INHNDL, 0
496 HLT /HUH?
497 TAD I INXPTR
498 AND (7760 /GET LENGTH PART OF WORD
499 SZA /LENGTH OF 0 MEANS LENGTH >=256
500 TAD (17 /ADD HIGH-ORDER BITS
501 CLL CML RTR
502 RTR
503 DCA INCTR /STORE LENGTH OF FILE
504 ISZ INXPTR
505 TAD I INXPTR
506 DCA INREC /STORE STARTING RECORD NUMBER OF FILE
507 ISZ INXPTR
508 DCA INEOF /ZERO END-OF-FILE FLAG
509 ISZ INNEWF
510 JMP I INNEWF
511 INCTR=IOPEN
512\fPTP=20
513 *2200
514OOPEN, 0
515OU7600, 7600
516 RDF
517 TAD OUCDIF
518 DCA OORETN
519 JMS OUASGN
520OUENTR, TAD I OU7600
521 JMS I (200
522 3 /ENTER OUTPUT FILE
523OUBLK, FILENM+1
524OUELEN, 0 /REPLACED WITH LENGTH OF HOLE
525 JMP OEFAIL /FAILED - MAYBE WE ASKED TOO MUCH
526 DCA OUCCNT
527 JMS I (OUSETP
528OORETN, HLT /RESTORE CALLING FIELDS
529 JMP I OOPEN
530OEFAIL, TAD I OU7600
531 AND (7760 /GET REQUESTED LENGTH
532 SNA CLA /WAS IT AN INDEFINITE REQUEST
533 JMP I (OUTERR
534 TAD I OU7600
535 AND (17 /MAKE THE REQUESTED LENGTH ZERO
536 DCA I OU7600
537 JMP OUENTR /TRY, TRY AGAIN
538OUASGN, 0
539 TAD (OUDEVH+1
540 DCA OUHNDL
541 CDF 10
542 TAD I (FILENM
543 AND (17 /STRIP OFF ANY LENGTH INFO
544 SNA /IS THERE AN OUTPUT DEVICE?
545 JMP I (OUTERR
546 JMS I (200
547 1 /ASSIGN, FETCH HANDLER
548OUHNDL, 0 /OUTPUT DEVICE HANDLER ENTRY
549 HLT /HUH?
550 JMP I OUASGN
551OUTDMP, 0
552 DCA OUCTLW /STORE THE CONTROL WORD
553 TAD OUCCNT
554 SNA
555 ISZ OUCTLW
556 TAD OUBLK
557 DCA OUREC /COMPUTE THE STARTING BLOCK NUMBER OF THIS TRANSFER
558 TAD OUCTLW
559 CLL RTL
560 RTL
561 RTL
562 AND (17 /COMPUTE THE NUMBER OF RECORDS
563 TAD OUCCNT /UPDATE THE NUMBER OF BLOCKS IN THE FILE
564 DCA OUCCNT
565 TAD OUCCNT
566 CLL CML
567 TAD OUELEN
568 SNL SZA CLA /DOES THE LENGTH EXCEED THE GIVEN LENGTH?
569 JMP I (OUTERR
570OUCDIF, CDF CIF 0
571 CDF 10
572 JMS I OUHNDL
573OUCTLW, 0
574 OUBUF
575OUREC, 0
576 JMP I (OUTERR
577 JMP I OUTDMP
578OCLOSE, 0
579 RDF
580 TAD OUCDIF
581 DCA OCRET
582 JMS I (OCHAR
583 JMS I (OCHAR
584FILLLP, JMS I (OCHAR
585 JMS I (OTYPE /GET TYPE OF OUTPUT DEVICE
586 SPA CLA
587 TAD (100 /IF ITS A DIRECTORY DEVICE FORCE A RECORD
588 TAD (77 /BOUNDARY - OTHERWISE A HALF-RECORD
589 AND I (OUDWCT
590 SZA CLA /UP TO THE BOUNDARY YET?
591 JMP FILLLP /NO - FILL WITH ZEROS
592 TAD I (OUDWCT /GET DOUBLEWORD COUNT LEFT
593 TAD (OUCTL&3700
594 SNA /A FULL WRITE LEFT?
595 JMP NODUMP /YES - DON'T DO IT - THE ^Z IS ALREADY OUT
596 TAD (4000+OUFLD /PUT IN THE FIELD BITS AND THE WRITE BIT
597 JMS OUTDMP
598NODUMP, JMS OUASGN /REASSIGN OUTPUT HANDLER
599 TAD I (FILENM
600 JMS I (200
601 4 /CLOSE THE OUTPUT FILE
602OU7601, FILENM+1
603OUCCNT, 0
604 JMP I (OUTERR
605OCRET, HLT /RESTORE CALLING FIELDS
606 JMP I OCLOSE
607\f *2400
608OUSETP, 0 /ROUTINE TO INITIALIZE CHARACTER POINTERS
609 TAD (OUCTL&3700 /GET SIZE OF BUFFER IN DOUBLEWORDS
610 CIA /NEGATE IT
611 DCA OUDWCT
612 TAD (OUBUF
613 DCA OUPTR /INITIALIZE WORD POINTER
614 TAD OUJMPE
615 DCA OUJMP /INITIALIZE THREE-WAY CHARACTER SWITCH
616 JMP I OUSETP
617
618OCHAR, 0
619 AND (377
620 DCA OUTEMP
621 RDF
622 TAD (CDF CIF 0
623 DCA OUCRET
624OUCHAR, CDF OUFLD /SET DATA FIELD TO BUFFER'S FIELD
625 ISZ OUJMP /BUMP THE CHARACTER SWITCH
626OUJMP, HLT /THREE WAY CHARACTER SWITCH
627 JMP OCHAR1
628 JMP OCHAR2
629OCHAR3, TAD OUTEMP
630 CLL RTL
631 RTL
632 AND (7400
633 TAD I OUPOLD
634 DCA I OUPOLD /UPDATE FIRST WORD OF TWO WITH HIGH
635 /ORDER 4 BITS OF THIRD CHAR
636 TAD OUTEMP
637 CLL RTR
638 RTR
639 RAR
640 AND (7400
641 TAD I OUPTR
642 DCA I OUPTR /UPDATE SECOND WORD FROM LOW ORDER 4 BITS
643 TAD OUJMPE
644 DCA OUJMP /RESET SWITCH
645 ISZ OUPTR
646 ISZ OUDWCT /BUMP DOUBLEWORD COUNTER EVERY 3 CHARS
647 JMP OUCOMN
648 TAD (OUCTL /LOAD CONTROL WORD FOR A FULL WRITE
649 JMS I (OUTDMP /DUMP THE BUFFER
650 JMS OUSETP /RE-INITIALIZE THE POINTERS
651 JMP OUCOMN
652OCHAR2, TAD OUPTR
653 DCA OUPOLD /SAVE POINTER TO FIRST WORD OF TWO
654 ISZ OUPTR /BUMP WORD POINTER TO SECOND WORD
655OCHAR1, TAD OUTEMP
656 DCA I OUPTR
657OUCOMN,
658OUCRET, HLT /RESTORE CALLING FIELDS
659 JMP I OCHAR
660OUTEMP, 0
661OUPOLD, 0
662OUPTR, 0
663OUJMPE, JMP OUJMP
664OUDWCT, 0
665OUTINH, 0
666
667OTYPE, 0
668 RDF
669 TAD (CDF CIF 0
670 DCA OTRTN
671 CDF 10
672 TAD I (7600
673 AND (17
674 TAD (DCB-1
675 DCA OUTEMP
676 TAD I OUTEMP
677OTRTN, HLT
678 JMP I OTYPE
679CTCTST, 0
680 KRS
681 TAD (-203
682 SNA CLA /IS THE TELETYPE BUFFER A ^C
683 KSF /WITH THE TELETYPE FLAG ON?
684 JMP I CTCTST /NO
685 CDF CIF 0 /YES - GO TO MONITOR
686 JMP I (7605 /THROUGH THE "DON'T SAVE CORE" RETURN
687 $
688\f