1 /LIBSET - LIBRARY BUILDER PROGRAM
11 /COPYRIGHT (C) 1974,1977 BY DIGITAL EQUIPMENT CORPORATION
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.
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.
32 /DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33 /OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
60 0 /DON'T RESET OUTPUT FILES
68 SZA CLA /IS THERE AN OUTPUT FILE?
71 DCA I (7600 /NO - MAKE SYS:LIB8.RL THE OUTPUT FILE
77 SNA CLA /HOW ABOUT INPUT FILES?
79 AND (40 /IF NO INPUT FILES,
80 SNA CLA /AND /S OPTION IS ON,
82 DCA PTRCOD /USE PTR: FOR INPUT
88 JMP I PERROR /NO PTR - BAD
93 JMS I (DMPREC /PUT OUT NOTHIN IN FIRST RECORD
109 JMS I (IREAD /READ AND COPY A RELOCATABLE PROGRAM
110 SZA CLA /TEST CHECKSUM
125 JMP READLP /IF /S SWITCH ON , CONTINUE READING TAPES UNTIL A ^Z
129 NEXTCD, TAD I (MPARAM-1
165 VERSON, 6301 /VERSION AND PATCH LEVEL
321 FINISH, JMS I (OCLOSE
379 HELP, TEXT /HELP!/ /THIS ERROR CANNOT OCCUR
380 INPER, TEXT /INPUT ERROR/
381 OUPER, TEXT /ERROR WHILE WRITING OUTPUT FILE/
382 RELER, TEXT /BAD FORMAT OR CHECKSUM - TRY AGAIN./
383 BIGER, TEXT /LIBRARY DIRECTORY OVERFLOW - TOUGH/
393 INFLD=INCTL&70 /GET FIELD OF INPUT BUFFER
394 OUFLD=OUCTL&70 /DITTO OUTPUT BUFFER
400 DCA INCHCT /SET INCHCT TO FORCE A READ
401 ISZ INEOF /SET END-OF-FILE FLAG TO FORCE A NEW FILE
405 INPTR, HLT /RESTORE CALLING FIELDS
412 DCA INRTRN /SAVE CALLING FIELDS
414 ISZ INJMP /BUMP THREE-WAY UNPACK SWITCH
418 SNA CLA /DID LAST READ YIELD END-OF-FILE?
419 JMP INGBUF /NO - DO ANOTHER
420 GETNEW, JMS INNEWF /OPEN A NEW INPUT FILE
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
436 JMS I INHNDL /CALL THE DEVICE HANDLER
440 JMP INERRX /SOME KIND OF HANDLER ERROR
443 DCA INREC /UPDATE THE RECORD NUMBER
450 DCA INCHCT /COMPUTE THE NEW CHARACTER COUNT
452 DCA INJMP /RESET THE CHARACTER SWITCH
454 DCA INPTR /AND THE WORD POINTER
455 JMP INCHAR /GO BACK AND MAKE BELIEVE THIS NEVER HAPPENED
456 INERRX, 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
460 INJMP, HLT /THIS IS THE THREE - WAY CHARACTER SWITCH
468 RTR /COMBINE THE HIGH-ORDER FOUR BITS OF
470 RTR /THE TWO WORD TO FORM THE THIRD CHARACTER
476 DCA INCTLW /SAVE THE HIGH-ORDER BITS FOR THE THIRD CHAR
477 ISZ INPTR /BUMP THE WORD POINTER
480 INRTRN, 0 /RESTORE CALLING FIELDS
481 JMP I ICHAR /AND RETURN
483 INEOF, 1 /THESE PARAMETERS ARE SET UP SO THAT
484 /IOPEN IS UNNECESSARY.
489 DCA INHNDL /INITIALIZE HANDLER ADDRESS
492 JMP I INNEWF /NO - OUT OF INPUT
494 1 /ASSIGN, FETCH HANDLER
498 AND (7760 /GET LENGTH PART OF WORD
499 SZA /LENGTH OF 0 MEANS LENGTH >=256
500 TAD (17 /ADD HIGH-ORDER BITS
503 DCA INCTR /STORE LENGTH OF FILE
506 DCA INREC /STORE STARTING RECORD NUMBER OF FILE
508 DCA INEOF /ZERO END-OF-FILE FLAG
524 OUELEN, 0 /REPLACED WITH LENGTH OF HOLE
525 JMP OEFAIL /FAILED - MAYBE WE ASKED TOO MUCH
528 OORETN, HLT /RESTORE CALLING FIELDS
531 AND (7760 /GET REQUESTED LENGTH
532 SNA CLA /WAS IT AN INDEFINITE REQUEST
535 AND (17 /MAKE THE REQUESTED LENGTH ZERO
537 JMP OUENTR /TRY, TRY AGAIN
543 AND (17 /STRIP OFF ANY LENGTH INFO
544 SNA /IS THERE AN OUTPUT DEVICE?
547 1 /ASSIGN, FETCH HANDLER
548 OUHNDL, 0 /OUTPUT DEVICE HANDLER ENTRY
552 DCA OUCTLW /STORE THE CONTROL WORD
557 DCA OUREC /COMPUTE THE STARTING BLOCK NUMBER OF THIS TRANSFER
562 AND (17 /COMPUTE THE NUMBER OF RECORDS
563 TAD OUCCNT /UPDATE THE NUMBER OF BLOCKS IN THE FILE
568 SNL SZA CLA /DOES THE LENGTH EXCEED THE GIVEN LENGTH?
585 JMS I (OTYPE /GET TYPE OF OUTPUT DEVICE
587 TAD (100 /IF ITS A DIRECTORY DEVICE FORCE A RECORD
588 TAD (77 /BOUNDARY - OTHERWISE A HALF-RECORD
590 SZA CLA /UP TO THE BOUNDARY YET?
591 JMP FILLLP /NO - FILL WITH ZEROS
592 TAD I (OUDWCT /GET DOUBLEWORD COUNT LEFT
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
598 NODUMP, JMS OUASGN /REASSIGN OUTPUT HANDLER
601 4 /CLOSE THE OUTPUT FILE
605 OCRET, HLT /RESTORE CALLING FIELDS
608 OUSETP, 0 /ROUTINE TO INITIALIZE CHARACTER POINTERS
609 TAD (OUCTL&3700 /GET SIZE OF BUFFER IN DOUBLEWORDS
613 DCA OUPTR /INITIALIZE WORD POINTER
615 DCA OUJMP /INITIALIZE THREE-WAY CHARACTER SWITCH
624 OUCHAR, CDF OUFLD /SET DATA FIELD TO BUFFER'S FIELD
625 ISZ OUJMP /BUMP THE CHARACTER SWITCH
626 OUJMP, HLT /THREE WAY CHARACTER SWITCH
634 DCA I OUPOLD /UPDATE FIRST WORD OF TWO WITH HIGH
635 /ORDER 4 BITS OF THIRD CHAR
642 DCA I OUPTR /UPDATE SECOND WORD FROM LOW ORDER 4 BITS
644 DCA OUJMP /RESET SWITCH
646 ISZ OUDWCT /BUMP DOUBLEWORD COUNTER EVERY 3 CHARS
648 TAD (OUCTL /LOAD CONTROL WORD FOR A FULL WRITE
649 JMS I (OUTDMP /DUMP THE BUFFER
650 JMS OUSETP /RE-INITIALIZE THE POINTERS
653 DCA OUPOLD /SAVE POINTER TO FIRST WORD OF TWO
654 ISZ OUPTR /BUMP WORD POINTER TO SECOND WORD
658 OUCRET, HLT /RESTORE CALLING FIELDS
682 SNA CLA /IS THE TELETYPE BUFFER A ^C
683 KSF /WITH THE TELETYPE FLAG ON?
685 CDF CIF 0 /YES - GO TO MONITOR
686 JMP I (7605 /THROUGH THE "DON'T SAVE CORE" RETURN