.SYSID < .TITLE UPDATE >,<000> / /COPYRIGHT (C) 1975 /DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. / /THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY /ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH /THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS /SOFTWARE, OR ANY OTHER COPIES THEREOF, MAY NOT BE PRO- /VIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON /EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO /THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE /SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC. / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE /WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS A COM- /MITMENT BY DIGITAL EQUIPMENT CORPORATION. / /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY /OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. .EJECT /PDP-9/15 ADVANCED SOFTWARE SYSTEMS /LIBRARY FILE UPDATE PROGRAM / /EDIT #001 XX 29-JUN-73 V10A ?? / 002 XX 1-DEC-71 ?? / 003 SK 13-NOV-73 PR SECOND. INP. EOF/EOM BUG FIX / 004 SK 10-DEC-73 REMOVE BOSS PATCH PROGRAM / 005 EK 15-JUL-74 CHANGE SIGNON NUMBER / 105 30-JUL-75 (RCHM) CHANGE SIGNON MESSAGE TO XVM STYLE. / /ED MARISON / /COPYRIGHT 1971, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. / /ASSEMBLY PARAMETERS ---- THE PROGRAM CAN BE ASSEMBLED /FOR EITHER .ABS OR RELOCATABLE FORM. /FOR .ABS NO PARAMETERS NEEDED FOR THE DOS-15 VERSION /FOR THE V5A KEYBOARD MONITOR DEFINE ** KMV5A=0 *** /OR ** ADSS=0 ** /FOR RELOCATABLE VERSION DEFINE--- RELOC=0 OR BIN=0 / .IFDEF BIN RELOC=0 .ENDC .IFDEF ADSS KMV5A=0 .ENDC .IFUND KMV5A DOS15=0 .ENDC .IFUND RELOC .ABS .IFUND DOS15 .LOC 12450 .ENDC .IFDEF DOS15 .LOC 12370 .ENDC .ENDC .IFDEF RELOC .IODEV -2,-3,-10,-12,-14,-15 .ENDC .SCOM=100 SIZE1=6 BSIZE=2000*SIZE1+1000 LISTBF 32002 /LISTING BUFFER INSN=LISTBF+64 COMAND=LISTBF+67 BUFFER=LISTBF+72 .EJECT / /ROUTINE TO BANK RELOCATE UPDATE /THIS AREA IS USED FOR DATA STOREAGE /AFTER INITIAL PASS. /DATA AREAS CONTAINED HERE ARE AS FOLLOWS /LISTBF -- LISTING BUFFER FOR (L) OPTION /INSN -- COMMAND UNIT AFTER PUSH /COMAND -- CURRENT COMMAND UNIT /BUFFER -- COMMAND STRING IN FROM TTY /MISC. DATA STORAGE AND SWITCHS .IFUND RELOC START LAC* (.SCOM .ENDC .IFDEF RELOC START JMP BEGIN .ENDC AND (60000 DAC BANKBT CNTR ADCT LAC (ADF-1 XOR BANKBT DAC* (10 DAC* (11 LOOP LAC* 10 XOR BANKBT DAC* 11 ISZ CNTR JMP LOOP CTR MODCT LAC AD00 DAC CNTR LOOP1 LAC* CNTR XOR BANKBT DAC TMP LAC* TMP XOR BANKBT DAC* TMP ISZ CNTR ISZ CTR JMP LOOP1 DZM CPSW .IFDEF DOS15 LAC* (.SCOM+52 /CHECK FOR BOSS MODE SMA .ENDC JMP BEGIN .IFDEF DOS15 LAC (NOP /SET BOSS SWTICH DAC BOSSW JMP BEGIN .ENDC TMP 0 .EJECT MODF=. MOD01 MOD02 MOD03 MOD03A MOD04 MOD05 MOD06 MOD07 MOD10 MOD11 MOD12 MOD13 MOD14 MOD15 MOD16 MOD17 MOD20 MOD21 MOD22 MOD23 MOD24 MOD25 MOD26 MOD27 MOD30 MOD31 MOD32 MOD33 MOD34 MOD35 MOD36 MOD37 MOD40 MOD41 MOD42 MOD43 MOD44 MOD45 MOD46 MOD47 MOD50 MOD51 MOD52 MOD53 MOD54 MOD55 MOD56 MOD57 MOD60 MOD61 MOD62 MOD63 MOD64 MOD65 MOD66 MOD67 MOD70 MOD71 MOD72 MOD73 MOD74 MOD75 MOD76 MOD77 MOD100 MOD101 MOD102 R.DAT MOD103 /READ .DAT SLOT CONTLP MOD104 /CONTROL WORD POINTER DATAP MOD105 /DATA WORD POINTER SIZE MOD106 /BIN PROG. SIZE DATASV MOD107 /TEMP. STOREAGE FOR PROGN LASTCH MOD110 /LAST CHARACTER ADNAME MOD111 /ADD INFOMATION STOREAGE MOD112 / " ADEXT MOD113 /ADD EXTENSION STOREAGE SRCEXT MOD114 /SOURCE PROGRAM EXTENSION SECDSW MOD115 /SECONDARY INPUT SWITCH INFSW MOD116 /ADD INFORMATION SWITCH PGMNSW MOD117 /PROGRAM NAME SWITCH R50SX MOD120 /SIXBIT SAVE MOD121 / " F57C MOD122 /FROM 5/7 COUNTER F57P MOD123 /FROM 5/7 POINTER GETOP MOD124 /GET OPTION SWITCH TABLEC MOD125 /TABLE COUNTER TABLEP MOD126 /TABLE POINTER INFSW1 MOD127 /PROG NAME ADD INFORMATION SWITCH PAGECT MOD130 /NO OF PAGES LINECT MOD131 /NO OF LINES PER PAGE MODL=. MODCT=MODL-MODF\777777+1 .TITLE LIBRARY UPDATE INITIALIZATION AND FILE SPEC COMMAND / BOSS1 LAC (JMP CONT /ASSUME CONTINUE ON NAMED FILE DAC FERPCH /ALREADY ON OUTPUT DEVICE LAC (JMP NAMOK /CONTINUE ON FILE NAME DISCREPANCY DAC NAMDIF+1 LAC (NOP /FORGET ASKING USER ON FILE NAME DISCREPANCY DAC MOD111+1 DAC MOD111+2 JMP AGAIN / CPINT LAC CPSW /COME HERE ON ^P SZA JMP CPNTP BEGIN CAL+776 /.INIT TYPE OUT PROGRAM NAME 1 MOD01 CPINT 0 DZM CPSW .IFDEF DOS15 XCT BOSSW JMP BOSS1 .ENDC JMS TYPE /.WRITE MOD02 MS01 AGAIN LAC (NOP /INITIALIZE SWITCHES TO NOP DAC LIST DAC UPDATE DAC NEW DAC ENDSW DAC FINIS DAC LSTACT DAC CRUNCH DAC SECDSW DAC INFSW DAC INFSW1 DAC PGMNSW DAC GETOP DZM SRCEXT /RESET SRCEXT JMS GETCMD /GET COMMAND STRING PROPTS JMS GET /CHECK OPTIONS SAD (12 /LINE FEED JMP PROPTS /IGNORED SAD (137 /_ JMP ENDOPT /END OF OPTIONS SAD (15 /RETURN JMP QUEST SAD (175 /ALTMODE JMP QUEST-2 SAD (114 /L JMP LISTOP /LISTING WANTED SAD (125 /U JMP UPDTMD /UPDATE MODE SAD (116 /N JMP NEWOPT /NEW FILE MODE SAD (123 /S - SHORTEN BY ELIMINATING LOCAL SYMBOLS JMP CRUN0 SAD (107 /G-GET UNIT OPTION JMP GETOPT JMP QUEST /OPTION NOT LEGAL CAL+775 / FOR ALTMODE TERMINATOR 6 QUEST JMS TYPE /.WRITE TELL MOD07 MS03 /USER NOT A COMMAND JMP AGAIN /GO BACK AND START OVER LISTOP LAC (SKP DAC LIST /SET LISTING SWITCH JMP PROPTS UPDTMD LAC (SKP SAD NEW /HAS NEW OPTION BEEN GIVEN JMP QUEST /YES SAD GETOP /HAS GET OPTION BEEN GIVEN JMP QUEST /YES DAC UPDATE /NO -- SET UPDATE SWITCH JMP PROPTS NEWOPT LAC (SKP SAD UPDATE /HAS UPDATE OPTION BEEN GIVEN JMP QUEST /YES SAD GETOP /HAS GET OPTION BEEN GIVEN JMP QUEST /YES DAC NEW /NO -- SET NEW FILE SWITCH JMP PROPTS CRUN0 LAC (SKP DAC CRUNCH /SET CRUNCH SWITCH JMP PROPTS GETOPT LAC (SKP /HAS NEW OR UPDATE SAD NEW /OPTION BEEN GIVEN JMP QUEST /YES -- ILLEGAL SAD UPDATE JMP QUEST /YES DAC GETOP /NO -SET GET SWITCH JMP PROPTS ENDOPT JMS SCAN /FOR FILE NAME LAC LASTCH SAD (15 /RETURN JMP SCANOK LAC COMAND /FILE NAME SNA JMP ENDOPT /IGNORE LEADING BLANKS JMP .+5 SCANOK LAC CHARL /SEE IF RETURN OR ALTMODE SNA LAC (15 DAC LASTCH LAC COMAND /CHECK FOR DEFAULT SZA /NAME FOR FILE JMP .+6 /USER SPECIFIED NAME LAC .LIBRN /.LIBR BY DEFAULT DAC COMAND LAC .LIBRN+1 DAC COMAND+1 DZM COMAND+2 LAC LASTCH SAD (15 /RETURN JMP CONVRT SAD (175 /ALTMODE JMP ALTFIN JMS GET /UNTIL RETURN OR ALTMODE JMP .-5 ALTFIN LAC (SKP DAC FINIS /SET EXIT SWITCH CONVRT JMS SIXF57 /CONVERT FILE NAME MOD27 FILE XCT NEW /IS THIS A NEW LIBRARY SKP /NO JMP .+5 /YES -- NO INPUT FILE CAL+764 /.INIT - INPUT 1 MOD03 CPINT 0 XCT UPDATE /IS THIS EITHER AN UPDATE SKP /OR NEW LIBRARY JMP .+3 XCT NEW JMP NOTFST CAL+1763 /YES -- .INIT OUTPUT 1 MOD05 CPINT 0 CAL+770 /.INIT TO -10 1 /SECONDARY INPUT MOD115 CPINT FSTD 0 LAC FSTD /IS DEVICE FILE STRUCTURED AND (700 /YES IF > 63(10)=77(8) SNA JMP NOTFST FILSTD LAC (SKP /SET SWITCH DAC SECDSW NOTFST XCT NEW /IS THIS A NEW LIBRARY SKP /DON'T .SEEK INPUT LIBRARY JMP NOINP CAL+764 /.SEEK 3 MOD10 FILE XCT GETOP /IS THIS A GET JMP NOGET .INIT -15,1,CPINT MOD123=.-2 NOGET .WAIT -14 /FOR .SEEK BEFORE CHANGING FILE+2 NOINP LAC WRKEXT /WORK FILE TYPE DAC FILE+2 XCT UPDATE /IF THIS IS AN UPDATE SKP /OR NEW LIBRARY JMP .+3 /.ENTER WORK FILE ON OUTPUT XCT NEW JMP NOENTR /NO OUTPUT FILE .IFDEF DOS15 / /DELETE ALL FILES ON OUTPUT DEVICE /THAT HAVE THE NAME (FILEMANE) WITH /THE EXTENSION OF (WRK) IF THE OUTPUT /DEVICE IS DISK OR DISK PACK / FSTBGN .FSTAT -15,FILE MOD130=.-1 SNA JMP ENTOUT LAC FSTBGN+2 AND (700000 SAD (200000 JMP FILDEL SAD (300000 JMP FILDEL JMP ENTOUT FILDEL .DLETE -15,FILE MOD131=.-1 JMP FSTBGN / / .ENDC ENTOUT CAL+763 /.ENTER 4 MOD15 FILE .WAIT -15 /FOR .ENTR BEFORE CHANGING FILE+2 NOENTR LAC LSTEXT /GIVE LST EXTENSION TO LISTING FILE DAC FILE+2 /IF A FILE ORIENTED DEVICE LAC COMAND /SAVE LIBRARY FILE NAME DAC ENAMEL LAC COMAND+1 DAC ENAMEL+1 LAC COMAND+2 DAC ENAMEL+2 XCT LIST /IF LISTING WANTED DO .INIT FOR IT JMP .+13 /NO LISTING FILE CAL+1766 /.INIT - LISTING 1 MOD04 CPINT 0 CAL+766 /AND .ENTER FOR IT 4 MOD14 FILE DZM PAGECT LAW -1 DAC LINECT .TITLE LIBRARY UPDATE BUFFER INIT,CMD DECODE,DISPATCH&ERRORS LAC* (.SCOM+2 /LOWEST FREE LOC DAC LB1ST /SET UP BUFFER AREA IN FREE CORE DAC LBLAST DAC LBNEXT LAC* (.SCOM+3 /HIGHEST FREE LOC DAC LBFULL DZM NSYMF /INITIALIZE VARIABLES IN DZM F /WRITE OUT ROUTINE JMS INOUT LAC MOD62 DAC TBP LAW -3 DAC B DZM TO NXTCMD DZM SRCEXT /RESET SOURCE EXT JMS GETCMD /BRING IN COMMAND STRING JMS SCAN /GET 1ST UNIT JMS TABLE /SEARCH TABLE JMP WHAT /ILLEGAL LAC* TABLEP /MAKE UP JMP ADDRESS XOR BANKBT /PUT ON BANK BITS IF .ABS DAC TABLEP /STORE IT JMP* TABLEP /DISPATCH / WHAT JMS TYPE /.WRITE NOT A COMMAND MOD17 MS03 WHATEX JMP NXTCMD /GO GET NEXT COMMAND / INOUT 0 LAC (BSIZE /INITIALIZE OUTPUT BUFFER HEADER WORD DAC OUTBUF LAC MOD61 /INITIALIZE OUTPUT BUFFER NEXT WORD POINTER TAD (2 DAC Q LAW -SIZE1 /INITIALIZE 4 WORD GROUPING COUNT DAC OC DAC OC1 JMP* INOUT /ERROR MESSAGES NOUPD JMS TYPE /VALID ONLY IN U MODE MOD36 MS06 JMP COMIGN ILLCS JMS TYPE /ILLEGAL COMMAND STRUCTURE MOD37 MS07 JMP COMIGN NOUORN JMS TYPE /VALID ONLY IN U OR N MODE MOD40 MS10 JMP COMIGN NOPGNM JMS TYPE /PROGRAM NAME MISSING - DYNAMIC KILL MOD41 MS11 JMP BEGIN OVERFO JMS TYPE /BUFFER OVERFLOW - DYNAMIC KILL MOD42 MS12 JMP BEGIN BADINP JMS TYPE /BAD SECONDARY INPUT - DYNAMIC KILL MOD57 MS17 JMP BEGIN BADEOF JMS TYPE /END OF FILE REACHED BY SEARCH MOD43 MS13 LAC (SKP /SET END SWITCH DAC ENDSW JMP COMIGN CDIGNR .CLOSE -10 /REJECT COMMAND COMIGN JMS TYPE /COMMAND IGNORED MOD63 MS22 JMP NXTCMD INPTCH JMS TYPE /CHANGE INPUT AND ^P MOD44 MS14 JMS SWCMDI LAW -1 /SET ^P SWITCH DAC CPSW JMP . /WAIT FOR ^P EOFERR JMS TYPE /END OF FILE FOUND MOD64 MS33 JMS TYPE MOD116 MS34 /FILE POSITIONING COMPLET, UNIT NOT INSERTED JMP NXTCMD EOFER1 JMS TYPE /END OF FILE FOUND MOD65 MS33 JMP CDIGNR NOPGN1 JMS TYPE /BAD DATA - NO PROGRAM NAME MOD66 MS35 JMP CDIGNR FILNFD JMS TYPE /FILE NOT FOUND MOD67 MS36 JMP CDIGNR NOGOPT JMS TYPE /VALID ONLY IN GET MODE MOD124 MS40 JMP COMIGN / READER LAC R.DAT /READ ERROR XOR (777000 /PUT .DAT SLOT TAD (-1 /IN MESSAGE CMA RTL RTL AND (160 XOR (1400 DAC DATMSG JMS TYPE /UNRECOVERABLE READ ERROR ON .DAT -1X - DYNAMIC KILL MOD06 MS16 JMP BEGIN .TITLE LIBRARY UPDATE COMMAND PROCESSING / /DELETE PROCESSING / DELETE XCT UPDATE /MUST BE IN UPDATE MODE JMP NOUPD JMS SCAN /GET NAME 2 LAC LASTCH SAD (15 /RETURN JMP DELOK LAC COMAND /SUPPRESS LEADING SPACES SNA JMP DELETE+2 /GO BACK AND SCAN DELOK LAC COMAND /SEE IF GOOD COMMAND SNA JMP ILLCS /NOTHING TO DELETE INFORM USER LAC GETP /SAVE POINTERS DAC GETPT LAC GETC DAC GETCT LAC GET1 DAC GET1T LAC GET2 DAC GET2T JMS R50F57 /CONVERT NAME TO RADIX 50(8) MOD21 NAME2 JMS DELUNT /GO DELETE UNIT NAMED LAC LIST /SAVE OPTIONS FOR LATER DAC SLIST LAC UPDATE DAC SUPDAT LAC (NOP /SET OPTION SWITCH TO OFF(NOP) DAC LIST /DELETE WITHOUT LIST OR COPY DAC UPDATE LAC LASTCH /CHECK TO SEE IF MORE THAN SAD (15 /ONE FILE IS TO BE DELETED JMP DELDON /NO MORE LAC GETPT /RESTORE POINTERS DAC GETP LAC GETCT DAC GETC LAC GET1T DAC GET1 LAC GET2T DAC GET2 DELOOK JMS SCAN /GET NAME OF LAST FILE TO BE DELETED LAC COMAND SZA JMP MOD60-1 LAC LASTCH SAD (15 JMP DELDON JMP DELOOK JMS R50F57 /CONVERT IT TO RADIX 50(8) MOD60 NAME2 /GO AND POSITION FILE WITHOUT WRITING TO OUTPUT FILE JMS POSUNT /ACTUALLY DELETES BLOCK DELDON LAC SLIST /RESTORE OPTIONS DAC LIST LAC SUPDAT DAC UPDATE DZM PROGN /CLEAR OUT PROG NAME DZM PROGN+1 DZM SRCEXT /RESET SOURCE ETENSION DZM LSTACT /PRINT ACTION DZM SIZE XCT LIST SKP JMS LINEB /BUILD LINE + PRINT JMP NXTCMD /ALL DONE ACTION GO GET NEXT COMMAND .EJECT / /REPLACE PROCESSING / REPLAC XCT UPDATE /MUST BE IN UPDATE MODE JMP NOUPD JMS SCAN /GET NAME 2 & DEFAULT NAME 1 LAC LASTCH SAD (15 /RETURN JMP REPLOK LAC COMAND /SUPPRESS LEADING BLANKS SNA JMP REPLAC+2 REPLOK LAC COMAND /SEE IF GOOD NAME SNA JMP ILLCS /NOTHING TO REPLACE JMS R50F57 /GIVE IN RADIX 50(8) TO NAME 1 AND NAME 2 MOD22 NAME1 JMS R50F57 MOD23 NAME2 JMS PUSH /SAVE COMMAND NAME REPAGN JMS SCAN /GET NAME 1 LAC LASTCH SAD (15 /RETURN JMP REPOK LAC COMAND SNA JMP REPAGN /SUPPRESS LEADING BLANKS REPOK LAC COMAND /SEE IF NAME THERE SNA JMP PROC /NO OTHER NAME -USE SAME AS NAME 2 JMS R50F57 /GIVE NAME TO NAME 1 MOD24 NAME1 JMS PUSH PROC JMS NAMCHK /GO MAKE NAME CHECK JMS DELUNT /DELETE OLD JMS INSUNT /INSERT NEW JMP NXTCMD /DONE - GET NEXT COMMAND .EJECT /INSERT PROCESSING / INSERT JMS SCAN /GET NAME 1 LAC LASTCH SAD (15 /RETURN JMP INSOK LAC COMAND SNA JMP INSERT INSOK LAC COMAND /SEE IF GOOD NAME SNA JMP ILLCS /NOTHING TO INSERT JMS R50F57 /GIVE NAME TO NAME 1 MOD25 NAME1 JMS PUSH /SAVE COMMAND NAME LAC LASTCH SAD (15 JMP INSNAF INSAGN JMS SCAN /GET NAME 2 LAC LASTCH SAD (15 /RETURN JMP INSTOK LAC COMAND SNA JMP INSAGN /SUPPRESS LEADING SPACES INSTOK LAC COMAND /SEE IF NAME THERE SZA JMP INSAFT /INSERT AFTER INSNAF XCT NEW /NO NAME THERE SKP JMP .+3 XCT UPDATE JMP NOUORN /ILLEGAL COMMAND -- MUST BE IN EITHER U OR N MODE JMS NAMCHK /CHECK NAMES JMS INSUNT /INSERT UNIT JMP NXTCMD /ALL DONE ACTION - GO GET NEXT COMMAND INSAFT JMS R50F57 /SECOND NAME PRESENT GIVE TO MOD26 NAME2 /NAME2 XCT UPDATE /MUST BE IN UPDATE MODE JMP NOUPD /ILLEGAL COMMAND JMS NAMCHK /CHECK NAMES JMS POSUNT /POSITION FILE JMS INSUNT /INSERT UNIT JMP NXTCMD /ALL DONE ACTION - GET NEXT COMMAND .EJECT /END PROCESSING / END XCT NEW /MUST NOT BE IN NEW MODE SKP JMP NOUPD XCT ENDSW /SKIP IF AT END JMS POSEOF /POSITION FILE AT END OF FILE JMP NXTCMD /DONE - GET NEXT COMMAND / /KILL PROCESSING KILL JMP BEGIN /START OVER / / /CLOSE PROCESSING / CLOSE JMS SCAN /GO GET NEXT UNIT IN COMMAND STRING LAC LASTCH SAD (15 JMP .+4 LAC COMAND /IS IT A GOOD UNIT SNA JMP CLOSE /NO - IGNORE SPACES XCT NEW /IF NEW OPTION DO NOT HAVE TO SKP /CHECK FOR EOF - WE ARE ALREADY THERE JMP .+3 XCT ENDSW /ARE WE AT END OF FILE JMS POSEOF /NO - GO POSITION AT EOF CLOSOK LAC COMAND /SEE IF DEFAULT FILE SZA JMP .+7 /USER SPECIFIED NAME LAC ENAMEL /DEFAULT FILE WANTED DAC COMAND /GO RETRIVE IT FROM ENAMEL LAC ENAMEL+1 DAC COMAND+1 LAC ENAMEL+2 DAC COMAND+2 JMS SIXF57 /MAKE SIXBIT DEB MOD33 FILE+3 XCT NEW /IF NEW OR UPDATE GO SKP /AND CLOSE WORK FILE JMP .+3 XCT UPDATE JMP NOCLOS /NO OUTPUT FILE TO CLOSE CAL+763 /.CLOSE 6 LAC BINEXT /GIVE BIN EXT TO WANTED NAME DAC FILE+5 CAL+3763 /DO .FSTAT FOR CLOSE NAME 2 MOD34 FILE+3 SZA /SKP IF NOT FOUND JMS FILERR /FILE FOUND -- INFORM USER NOTSFL LAC WRKEXT /PUT WORK EXT IN DEB DAC FILE+2 CAL+2763 /.RENAM - ON WORK FILE 2 MOD35 FILE NOCLOS XCT LIST /IF LISTING GO CLOSE FILE JMP .+3 /NO LISTING CAL+766 /.CLOSE 6 XCT NEW /IF NEW THERE WAS NO PRIMARY INPUT SKP /TO CLOSE JMP .+3 /NO PRIMARY INPUT CAL+764 /.CLOSE 6 XCT FINIS /SHOULD WE GO BACK TO MONITOR JMP BEGIN /NO EXIT CAL /.EXIT BACK TO MONITOR 15 .EJECT / /PROCESSING TO FREE A PROGRAM FROM /THE LIBRABY FILE / FREE XCT GETOP /MUST BE IN GET MODE JMP NOGOPT /INFORM USER OF TROUBLE CMDNG JMS SCAN /GO GET PROGRAM NAME WANTED LAC LASTCH /IS IT A GOOD NAME SAD (15 JMP CMDGD /MAYBE LAC COMAND SNA JMP CMDNG /IGNORE SPACERS CMDGD LAC COMAND /MUST BE NON-ZERO SNA JMP ILLCS /TELL USER OF TROUBLE JMS R50F57 /CONVERT NAME TO RADIX 50 AND MOD120 NAME1 /MAKEUP DEB IN R50SX,+1&F57C JMS SIXF57 MOD72 R50SX LAC BINEXT /PUT BIN EXTENSION DAC F57C /IN DEB .FSTAT -15,R50SX /CHECK FOR FILE MOD121=.-1 /ALREADY ON OUTPUT DEVICE SZA JMS FILERR /IT IS -INFORM USER LAC (764 /SETUP TO READ LIBRARY DAC R.DAT /FILE ON DAT -14 READCT DZM READSW /DOUBLED BUFFERED READ DZM SRCEXT /CLEAR SOURCE EXTENSION WORD READBK JMS READ /READ IN A BUFFER JMP BADEOF /END OF LIBRARY FOUND JMS SEARCH /SEARCH THE BUFFER JMP READBK /FOR A PROGRAM NAME--READ ANOTHER BUFFER JMP READCT /NONE FOUND--GO INIT READ AND START ON NEW PGM UNIT LAC NAME1 /IS NAME FOUND SAD PROGN /THE SAME AS NAME WANTED SKP /MAYBE JMP RDLTCT /NO--GO BACK FOR MORE SMA JMP NAMCH1 /ITS A MATCH LAC NAME1+1 /TEST PART 2 SAD PROGN+1 JMP NAMCH1 /ITS A MATCH RDLTCT XCT LIST /IS A LISTING WANTED SKP JMS LINEB /YES - GO PRINT LINE JMP READCT /NO MATCH-GO BACK FOR MORE / /A NAME FOUND AND MATCHED COMES HERE / NAMCH1 XCT LIST /IS A LISTING WANTED JMP NAMCH /NO DZM LSTACT /YES - PRINT ACTION JMS LINEB /GO PRINT LINE NAMCH .ENTER -15,R50SX /ENTER FILE ON OUTPUT DEVICE MOD122=.-1 JMS WAIT /WAIT FOR LAST BUFFER DZM SHRTPG /IF EOF FOUND LAC SHRTPG /DID WE FIND EOF SNA JMP GETDON /YES JMS SEARCH /THE LAST BUFFER SKP JMP GETDON /END CODE FOUND MATCT JMS WRITE /WRITE OUT THE BUFFER LAC (15 /SINGLE BUFFERED READ DAC READSW JMS READ /READ IN A NEW BUFFER JMP GETEOF /PREMATURE END OF FILE FOUND JMS SEARCH /SEARCH BUFFER FOR END OF UNIT JMP MATCT /GO WRITE THIS ONE OUT JMP GETDON /END OF UNIT FOUND JMP MATCT /PROG NAME FOUND ??? SHOULD NOT HAPPEN GETDON JMS WRITE /FINISH WRITING OUT THIS UNIT .CLOSE -15 /CLOSE OUTPUT FILE JMP NXTCMD /GO GET NEXT COMMAND / GETEOF JMS TYPE /TELL USER ABOUT END OF FILE MOD127 MS33 JMP GETDON+1 /GO CLOSE OUTPUT FILE .TITLE LIBRARY UPDATE SUBR FILERR,PUT,GET,&TYPE /SUBROUTINE FILERR HANDLES ERROR CONDITION /WHERE A FILE EXIST ON THE OUTPUT DEVICE /WITH THE SAME NAME AS THE ONE BEING WRITTEN /CALL JMS FILERR / RETURN WITH FILE DELETED IF ANS. IS YES / FILERR 0 .WAIT -3 /IN CASE TTY IS TYPING JMS SWCMDO /SAVE COMMAND STRING FERPCH JMS TYPE /TELL USER ABOUT FILE MOD70 MS20 JMS TYPE MOD101 MS37 JMS TYPE /ASK USER IF HE WANTS MOD71 MS21 /TO CONTINUE JMS GETCMD /GET HIS ANSWER JMS SCAN /PUT IT IN COMAND LAC COMAND /WHAT IS ANS?--IF Y OK FOR YES SAD YES /IF ANYTHING ELSE IT IS NO JMP CONT /GO AND COMPLET CLOSE SAD YES1 /TRY AGAIN JMP CONT JMP COMIGN /ANS. IS NO CONT LAW -3 /CALCULATE POINTER TAD FILERR /ADDRESS TO DEB DAC DATASV /STORE IT LAC* DATASV /GET ADDR OF DEB DAC MOD73 /GIVE IT TO DELET CAL CAL+1763 /.DELET FILE 2 MOD73 FILE+3 JMS SWCMDI /RESTORE COMMAND STRING JMP* FILERR /RETURN TO CALLER YES .ASCII !Y! YES1 .ASCII !YES! /IOPS 5/7 ASCII PACKING ROUTINE /PACKS 7 BIT ASCII CHARACTER AN /ACCUMULATOR INTO BUFFER POINTED /TO BY PUTP. /INITIALIZE: / PUTC TO 0 /COUNTER / PUTP TO 1ST WORD /POINTER PUT 0 AND (177 DAC PUT1 CLL LAC PUTC /CHAR POSITION TAD (JMP* PUTJ DAC .+2 LAC PUT1 XX /MODIFIED JMP MOD52=. PUTJ PUT571 /CHAR 1 MOD53 PUT572 /CHAR 2 MOD54 PUT573 /CHAR 3 MOD55 PUT574 /CHAR 4 MOD56 PUT575 /CHAR 5 PUT571 JMS SUBS8 /8 RIGHT RTR PUT57A DZM* PUTP /CLEAR DATA WORD JMP PUTEND PUT572 RTL /4 LEFT RTL JMP PUTEND PUT573 RTR /3 RIGHT - 1ST HALF RAR AND (17 XOR* PUTP DAC* PUTP ISZ PUTP /LAST WORD OF PAIR LAC PUT1 RTR /4 RIGHT - 2ND HALF RTR AND (700000 JMP PUT57A PUT574 JMS SUBS8 /8 LEFT RTL JMP PUTEND PUT575 RAL /1 LEFT DZM PUTC /RESET 5/7 COUNTER SKP PUTEND ISZ PUTC XOR* PUTP DAC* PUTP LAC PUTC SNA ISZ PUTP /2ND WD COMPLETE LAC PUT1 JMP* PUT /RETURN /IOPS 5/7 ASCII UNPACKING ROUTINE /EXIT WITH 7 BIT ASCII CHARACTER /IN ACCUMULATOR /INITIALIZE: / GETC TO LAW -1 / GETP TO 1ST WORD GET 0 ISZ GETC JMP GETS /WORD PAIR STARTED LAC* GETP ISZ GETP DAC GET1 /FIRST PART LAC* GETP ISZ GETP DAC GET2 /LAST PART LAW -5 DAC GETC /RESET 5/7 COUNTER GETS LAW -10 DAC GET3 /SHIFT LOOP 7+1/2 TIMES GETL LAC GET2 RAL ISZ GET3 JMP .+3 AND (177 /GOT CHARACTER JMP* GET /RETURN DAC GET2 LAC GET1 RAL DAC GET1 JMP GETL /BACK TO LOOP / /TYPE ROUTINE /TYPES OUT 5/7 ASCII MESSAGES /CALL JMS TYPE / .DSA ADDR /ADDRESS OF MESSAGE / RETURN TYPE 0 LAC* TYPE /GET ADDRESS OF DAC .+3 /MESSAGE AND GIVE TO CAL CAL+2775 /.WRITE 11 XX -60 ISZ TYPE /BUMP TO RETURN JMP* TYPE /EXIT / .TITLE LIBRARY UPDATE SUBR GETCMD,PUSH,POP,SCAN,&TABLE /GET COMMAND STRING FROM TTY /AND STORE 5/7 DATA IN BUFFER GETCMD 0 .IFDEF DOS15 XCT BOSSW JMP BOSS2 .ENDC CAL+2775 /.WRITE ">" 11 MOD12 MS02 -42 BOSS2 LAC AD03 /(BUFFER+2 DAC GETP /SETUP POINTERS + COUNTERS LAW -1 DAC GETC CAL+2776 /.READ TO TTY 10 MOD13 BUFFER -42 CAL+776 /.WAIT 12 CAL+776 /.CLOSE IN CASE OF ALTMODE 6 DZM LASTCH JMP* GETCMD /RETURN /COMMAND PUSH/POP /PUSH CURRENT COMMAND TO INSN /TO SAVE IT FOR LATER PUSH 0 /SAVE CURRENT COMMAND LAC COMAND /UNIT FOR LATER DAC INSN LAC COMAND+1 DAC INSN+1 LAC COMAND+2 DAC INSN+2 JMP* PUSH / /POP RESTORES LAST PUSH COMMAND /FROM INSN TO COMAND POP 0 /RESTORE COMMAND LAC INSN /UNIT DAC COMAND LAC INSN+1 DAC COMAND+1 LAC INSN+2 DAC COMAND+2 JMP* POP / /SCAN FOR COMMAND UNIT TERMINATED / BY SPACE, COMMA, RETURN, OR ALTMODE /COMMAND UNIT STORED IN /COMAND,+1&+2 IN 5/7 ASCII SCAN 0 LAC AD01 /(COMAND DAC PUTP /SETUP POINTER + COUNTER DZM PUTC DZM CHARL /ZERO OUT DATA WORDS DZM COMAND DZM COMAND+1 DZM COMAND+2 LAC LASTCH SAD (15 JMP* SCAN SCANL JMS GET /GET A CHAR. SAD (12 /LINE FEED JMP .-2 /IGNORED SAD (40 /SPACE JMP SCANT SAD (54 /COMMA JMP SCANT SAD (15 /RETURN JMP SCANT SAD (175 /ALTMODE JMP SCANAT JMS PUT /FILL UP COMAND VIA "PUT" JMP SCANL /GET NEXT CHAR SCANAT DAC CHARL /STORE ALTMODE TERMINATOR CAL+775 /.CLOSE FOR TTY 6 LAC (15 /ALTMODE TO RETURN SCANT DAC LASTCH /SAVE LAST CHARACTER JMP* SCAN /RETURN /TABLE SEARCH ROUTINE /SEARCHES TABLE OF LEGAL /COMMANDS AND SETS TABLEP TO /ADDRESS OF COMMAND PROCESSING /ROUTINE REQUESTED TABLE 0 LAC AD02 /(COMTAB+1 DAC TABLEP /GIVE TO POINTER LAC COMTAB DAC TABLEC /GIVE TO COUNTER NEXTAB LAC* TABLEP /GET COMMAND SAD COMAND /COMPARE COMMAND WITH TABLE ENTRIES JMP COMDOK /1ST 3 CHARS OK ISZ TABLEP /BUMP POINTER TO NEXT TABLE ENTRY ISZ TABLEP LASTNG ISZ TABLEP ISZ TABLEC /BUMP COUNTER JMP NEXTAB /TRY NEXT COMMAND JMP* TABLE /ILLEGAL COMMAND COMDOK ISZ TABLEP /BUMP TABLE POINTER LAC* TABLEP /GET REST ISZ TABLEP /BUMP TABLE POINTER TO ADDR. OF CMD PROCESSOR SAD COMAND+1 SKP /ITS A MATCH JMP LASTNG /NOT RIGNT ONE ISZ TABLE /BUMP TO RETURN JMP* TABLE /GOOD - RETURN .TITLE LIBRARY UPDATE SUBR SIXF57,OCTALZ /CONVERT FROM 5/7 ASCII TO SIXBIT /MAKES UP DIRECTORY ENTRY BLOCK (DEB) /CALL JMS SIXF57 / .DSA ADDR /ADDRESS OF DEB TO BE MADE UP / RETURN SIXF57 0 LAC* SIXF57 /GET FILE ENTRY POINTER DAC FILEP /SAVE ISZ SIXF57 /BUMP TO RETURN POINT LAC COMAND /DATA TO BE CONVERTED IS IN COMMAND,+1 &+2 RCL DAC SAVEC /SAVE MODIFIED DATA AND (770000 /CHARACTER 1 DAC SAVE /SAVE IT LAC SAVEC /GET DATA RCL /SHIFT CHAR. 2 INTO POSITION DAC SAVEC /SAVE DATA AND (7700 /CHARACTER 2 XOR SAVE /PUT IN CHAR 1 DAC SAVE /SAVE RESULT LAC SAVEC /GET DATA RCL /SHIFT CHAR B INTO POSITION AND (70 /CHARACTER 3 - PART 1 XOR SAVE /PUT IN CHAR 1 & 2 DAC SAVE /SAVE IT LAC COMAND+1 /GET NEXT DATA WORD RTL /SHIFT INTO POSITION RTL DAC SAVEC /SAVE DATA AND (7 /CHARACTER 3 - PART 2 XOR SAVE /FINISH SIXBIT WORD DAC* FILEP /STORE SIXBIT WORD ISZ FILEP /BUMP POINTER LAC SAVEC /GET DATA AND (770000 /CHARACTER 4 DAC SAVE /SAVE IT LAC SAVEC /GET DAT RCL /SHIFT INTO POS. AND (7700 /CHARACTER 5 XOR SAVE /ADD IN CHAR 4 DAC SAVE /SAVE IT LAC COMAND+2 /GET NEXT DATA WORD JMS SUBS8 /SHIFT 8 BITS LEFT RTL AND (77 /CHARACTER 6 XOR SAVE /MAKE UP SECOND SIXBIT WORD DAC* FILEP /STORE IT ISZ FILEP /BUMP POINTER LAC BINEXT /BIN EXTENSION DAC* FILEP /STORE IT JMP* SIXF57 /DONE - EXIT .EJECT /OCTAL TO ASCII - ZERO SUPPRESSES /CALL LAC (DATA) / JMS OCTALZ /DATA STORED VIA PUT / RETURN OCTALZ 0 SNA JMP ZEROLC /CONTENTS = 0 DAC SAVEZ /SAVE LAW -6 DAC OCTALC /6 DIGITS LAC (JMP LEADZ DAC LEADZX /RESTORE ZERO SUP NEXTCZ LAC SAVEZ /GET WORD RCL /SHIFT IT RTL DAC SAVEZ /SAVE WORD RAL /FINISH SHIFT FOR THIS CHAR. AND (7 SNA /NOT ZERO LEADZX JMP LEADZ /LEADING ZERO - MAKE IT A SPACE XOR (60 /MAKE ASCII JMS PUT /OUTPUT LAC (NOP DAC LEADZX /PRINT REST OF ZEROS ISZ OCTALC JMP NEXTCZ /NEXT DIGIT JMP FIXSUP /NO MORE DIGITS LEADZ LAC SUPRES /SPACE INSTEAD OF ZERO SZA /IGNORE LEADING ZEROS IF 0 JMS PUT JMP LEADZX+5 ZEROLC LAW -5 DAC OCTALC /5 SPACES LAC (40 JMS PUT /OUTPUT ISZ OCTALC JMP .-3 LAC (60 /ZERO JMS PUT /OUTPUT FIXSUP LAC (40 /SPACE DAC SUPRES JMP* OCTALZ /RETURN .TITLE LIBRARY UPDATE SUBR R50F57,AND R50T57 /RADIX 50 FROM 5/7 ASCII /CALL JMS R50F57 / .DSA ADDR /ADDRESS TO PUT RADIX 50 DATA / RETURN R50F57 0 JMS SIXF57 /5/7 TO SIXBIT MOD47 R50SX LAC* R50F57 /GET PLACE TO PUT SYMBOL ISZ R50F57 /INDEX TO RETURN DAC F57P JMS FSQZE /CONVERT 1ST PART MOD50 R50SX LAC* MOD51 SNA JMP* R50F57 /RETURN LAC* F57P XOR (400000 /INDICATE PRESENCE OF DAC* F57P /2ND PART ISZ F57P JMS FSQZE /CONVERT 2ND PART MOD51 R50SX+1 JMP* R50F57 /RETURN FSQZE 0 LAC* FSQZE DAC F57T3 DZM* F57P /CLEAR ENTRY LAW -3 DAC F57C /3 CHARS FSQZN LAC* F57T3 /GET CHARACTER RTL RTL RTL DAC* F57T3 RAL AND (77 /6 BIT DAC F57T1 /SAVE DAC F57T2 AND (40 SNA JMP FSQOK /A-Z LAC F57T1 AND (20 SNA JMP FSQ.% LAC F57T1 /0-9 TAD (777755 DAC F57T1 JMP FSQOK FSQ.% LAC (33 /. DAC F57T1 LAC F57T2 /ACTUAL CHAR SAD (56 /SKIP IF PERIOD ISZ F57T1 /% FSQOK LAC* F57P /PREVIOUS CHARS RCL /TIMES 50 (8) RTL DAC F57T2 RTL TAD F57T2 TAD F57T1 /NEW CHAR DAC* F57P ISZ F57C /3 TIMES JMP FSQZN ISZ FSQZE /BUMP TO RETURN JMP* FSQZE .EJECT /RADIX 50 TO 5/7 ASCII /GETS DATA FROM PROGN AND PROGN+1 /STORES DATA VIA PUT /CALL JMS R50T57 / RETURN R50T57 0 LAC PROGN AND (177777 /CLEAR BITS (0-1) JMS UNSQZE /UNPACK PART 1 LAC PROGN SPA!CLA /DEFAULT PART 2=0 LAC PROGN+1 /REAL PART 2 JMS UNSQZE /UNPACK PART 2 JMP* R50T57 /RETURN UNSQZE 0 DAC T57T1 /SAVE SYMBOL LAW 17775 DAC T57C /FOR 3 CHARS LAC AD06 DAC T57T2 /ADDRESS OF R50 CONSTANTS UNSQX LAC T57T1 /GET SYMBOL DZM T57T3 /CLEAR CHAR GENERATOR TAD* T57T2 /ADD CONSTANT SPA JMP .+4 ISZ T57T3 /INDEX GENERATOR DAC T57T1 /SAVE SYMBOL JMP .-5 LAW 17745 TAD T57T3 /CHECK GENERATED CHAR SMA TAD (123 /ONLY IF NEG TAD (33 XOR (100 /BIT 7 MAYBE SAD (56 LAC (45 /% SAD (57 LAC (56 /. SAD (72 LAC (43 /# SAD (100 LAC (40 /SPACE AND (177 /7-BIT ASCII JMS PUT /INTO BUFFER ISZ T57T2 /NEXT R50 CONSTANT ISZ T57C JMP UNSQX /NEXT CHAR JMP* UNSQZE /RETURN .TITLE LIBRARY UPDATE SUBROUTINES USED FOR LISTING /NEW PAGE ROUTINE SETS UP THE HEADING /FOR THE NEW PAGE AND THEN TYPES IT NEXTPG 0 LAC LISTNG /PUSH DAC SAVEL LAW -64 /SET UP LINE COUNT DAC LINECT LAC AD07 /PACK FILE NAME AND PAGE # DAC PUTP DZM PUTC LAC AD08 /GET COMMAND FROM ENAMEL DAC GETP CLC DAC GETC LAW -6 DAC WICK33 WICK34 JMS GET SNA LAC (40 /CHANGE NULLS INTO SPACE JMS PUT /AND STORE IN MESSAGE ISZ WICK33 JMP WICK34 LAC (11 /TAB JMS PUT LAC (11 JMS PUT LAC (11 JMS PUT LAC (120 /P JMS PUT LAC (101 /A JMS PUT LAC (107 /G JMS PUT LAC (105 /E JMS PUT LAC (40 /SPACE JMS PUT ISZ PAGECT /INCREMENT PAGE NO. LAC PAGECT DZM SUPRES /ZERO SUPPRESS WITH RO JMS OCTALZ /OCTAL TO ASCII LAC (15 /C.R. JMS PUT XCT LIST JMP* NEXTPG JMS LISTNG MOD03A MS05 /CR-LF FOR TTY JMS LISTNG /PAGE NO. MOD11 MS04 JMS LISTNG /BLANK LINE MOD16 MS05 JMS LISTNG /HEADING MOD45 MS15 JMS LISTNG /2ND LINE OF HEADING MOD117 MS15A JMS LISTNG /BLANK LINE MOD46 MS05 LAC SAVEL /POP DAC LISTNG JMP* NEXTPG /LISTING SUBROUTINE /CALLING SEQUENCE: / JMS LISTNG / BUFFER /BUFFER POINTER / RETURN LISTNG 0 ISZ LINECT /INCREMENT LINE COUNT SKP JMS NEXTPG /NEW PAGE LAC (32002 /SET UP HWP IN LISTBF DAC LISTBF LAC* LISTNG /BUFFER ADDRESS DAC LSTBUF CAL+766 /.WAIT FOR LAST LINE 12 CAL+2766 /.WRITE THIS LINE 11 LSTBUF 0 -100 ISZ LISTNG /BUMP TO RETURN JMP* LISTNG /EXIT /LISTING LINE BUILD ROUTINE /SETS UP AND PRINTES EACH LINE OF THE LISTING / LSTACT ZERO IF ACTION PRINTED LINEB 0 CAL+766 /.WAIT FOR LAST LINE 12 LAC AD05 /(LISTBF+2 DAC PUTP /SET UP POINTER AND COUNTER FOR PUT DZM PUTC LAC (40 /SPACES JMS PUT LAC (40 JMS PUT JMS R50T57 /RADIX 50 TO 5/7 ASCII-PROGRAM NAME LAW -5 /PUT 5 SPACES IN BUFFER DAC GET1 LAC (40 JMS PUT ISZ GET1 JMP .-3 LAC PROGN /SAVE PROG. NAME DAC DATASV LAC SRCEXT /SET UP FOR R50T57 DAC PROGN JMS R50T57 /PUT EXT IN BUFFER LAC DATASV /RESTORE PROG. NAME DAC PROGN LAW -4 DAC GET1 LAC (40 /SPACES JMS PUT ISZ GET1 JMP .-3 LAC SIZE /GET PROG SIZE AND PUT IT IN BUFFER JMS OCTALZ /OCTAL TO 5/7 ASCII DZM SIZE LAC LSTACT SZA /CHECK ACTION SWITCH JMP PRINT /NO ACTION LAW -2 /TWO TABS DAC GET1 LAC (11 /TABS JMS PUT ISZ GET1 JMP .-3 LAC AD03 /(BUFFER+2--COMMAND STRING DAC GETP /SET GET POINTERS AND COUNTERS LAW -1 DAC GETC JMS GET SAD (175 /ALTMODE PRINT LAC (15 /FORCE RETURN SAD (15 /RETURN JMP .+3 JMS PUT /PUT CHAR. IN BUFFER JMP .-6 DAC LSTACT /NO ACTION JMS PUT /PUT JMP DONE1 /YES DONE SAD (175 /IS IT AN ALTMODE JMP DONE1 /YES DONE JMS PUT /STORE DATA JMP MORE1 /GO BACK FOR MORE DONE1 JMS PUT /PUT TERMINATOR AWAY JMP* SWCMDO /EXIT .TITLE LIBRARY UPDATE MESSAGES TO USER /OUTPUT MESSAGES MS01 MS02-MS01/2*1000\2 777777 .SYSID < .ASCII 'UPDATE >,<000'<15>> MS02 MS03-MS02/2*1000\2 777777 .ASCII <3><12>'>'<175> MS03 MS04-MS03/2*1000\2 777777 .ASCII 'NOT A COMMAND'<15> MS04 MS05-MS04/2*1000\2 777777 .ASCII <14>' LIBRARY FILE LISTING' .ASCII ' FOR ' ENAM1 .BLOCK 10 /LISTING HEADING PACKED INTO HERE .EJECT MS05 MS06-MS05/2*1000\2 777777 .ASCII <12><15> MS06 MS07-MS06/2*1000\2 777777 .ASCII ' VALID ONLY IN U MODE '<15> MS07 MS10-MS07/2*1000\2 777777 .ASCII ' ILLEGAL COMMAND STRUCTURE '<15> MS10 MS11-MS10/2*1000\2 777777 .ASCII ' VALID ONLY IN U OR N MODE'<15> MS11 MS12-MS11/2*1000\2 777777 .ASCII ' PROGRAM NAME MISSING - ' .ASCII 'DYNAMIC KILL'<15> MS12 MS13-MS12/2*1000\2 777777 .ASCII ' BUFFER OVERFLOW ' .ASCII '- DYNAMIC KILL'<15> MS13 MS14-MS13/2*1000\2 777777 .ASCII ' EOF REACHED BY SEARCH '<15> MS14 MS15-MS14/2*1000\2 777777 .ASCII 'CHANGE INPUT AND ^P'<15> MS15 MS15A-MS15/2*1000\2 777777 .ASCII ' PROGRAM SOURCE PROGRAM' .ASCII <11><11>'ACTION'<15> MS15A MS16-MS15A/2*1000\2 777777 .ASCII ' NAME EXTENSION'<11>' SIZE'<15> MS16 MS17-MS16/2*1000\2 777777 .ASCII 'UNRECOVERABLE READ ERROR ON .DAT -1' DATMSG .ASCII <0> .ASCII ' - DYNAMIC KILL'<15> MS17 MS20-MS17/2*1000\2 777777 .ASCII ' BAD SECONDARY INPUT - DYNAMIC KILL'<15> MS20 MS21-MS20/2*1000\2 777777 .ASCII 'NAMED FILE IS ALREADY ON OUTPUT DEVICE'<15> MS21 MS22-MS21/2*1000\2 777777 .ASCII 'CONTINUE (Y/N)'<15> MS22 MS23-MS22/2*1000\2 777777 .ASCII 'COMMAND IGNORED'<15> MS23 MS24-MS23/2*1000\2 777777 .ASCII 'PROGRAM NAME DISCREPANCY'<15> MS24 MS25-MS24/2*1000\2 777777 .ASCII 'FILE NAME--'<175> MS25 MS26-MS25/2*1000\2 777777 .ASCII 'PROGRAM NAME--'<175> MS26 MS27-MS26/2*1000\2 777777 .ASCII 'SOURCE EXT--'<175> MS27 MS30-MS27/2*1000\2 777777 .ASCII 'ACCEPT COMMAND (Y/N)'<15> MS30 MS31-MS30/2*1000\2 777777 .ASCII 'USE FILE NAME (Y/N)'<15> MS31 MS32-MS31/2*1000\2 777777 .ASCII 'SOURCE EXT WANTED'<15> MS32 MS33-MS32/2*1000\2 777777 .ASCII 'CHANGE INPUT (Y/N)'<15> MS33 MS34-MS33/2*1000\2 777777 .ASCII 'END OF FILE FOUND'<15> MS34 MS35-MS34/2*1000\2 777777 .ASCII 'FILE POSITIONING COMPLET, PGM UNIT NOT FOUND'<15> MS35 MS36-MS35/2*1000\2 777777 .ASCII 'BAD DATA - NO PROGRAM NAME'<15> MS36 MS37-MS36/2*1000\2 777777 .ASCII 'FILE NOT FOUND'<15> MS37 MS40-MS37/2*1000\2 777777 .ASCII 'DO YOU WISH TO '<175> MS40 MS41-MS40/2*1000\2 777777 .ASCII 'VALID ONLY IN GET MODE'<15> MS41=. .TITLE LIBRARY UPDATE COMMAND TABLE,CONSTANTS,&VARIABLES /UPDATE COMMAND TABLE COMTAB COMTAE-COMTAB-1/3\777777+1 .ASCII 'DELET' DELETE .ASCII 'D' DELETE .ASCII 'REPLA' REPLAC .ASCII 'R' REPLAC .ASCII 'INSER' INSERT .ASCII 'I' INSERT .ASCII 'END' END .ASCII 'E' END .ASCII 'KILL' KILL .ASCII 'K' KILL .ASCII 'CLOSE' CLOSE .ASCII 'C' CLOSE .ASCII 'FREE' FREE .ASCII 'F' FREE COMTAE=. .EJECT /CONSTANTS AND VARIABLES BANKBT 0 PUTC 0 /PUT COUNTER PUTP 0 /PUT POINTER PUT1 0 /PUT TEMP GETC 0 /GET COUNTER GETP 0 /GET POINTER GET1 0 /GET TEMP 1 GET2 0 /GET TEMP 2 GET3 0 /GET TEMP 3 GETPT 0 GETCT 0 GET1T 0 GET2T 0 SHRTPG 0 SAVEC 0 /SAVE COMAND, ETC. SAVE 0 /SAVE SIXBT, ETC. FILE .BLOCK 6 /DIRECTORY ENTRY ENAMEL .BLOCK 3 WICK33 0 .LIBRN .ASCII '.LIBR' /LIBRARY FILE BINEXT .SIXBT 'BIN' /BINARY EXT WRKEXT .SIXBT 'WRK' /WORK EXT SUPRES 40 /ZERO SUPPRESSION CHAR LSTEXT .SIXBT 'LST' /LISTING EXT OCTALC 0 /OCTAL COUNT SAVEZ 0 /SAVE AREA FOR OCTALZ LBWC 0 /WORD COUNT OF BUFFER LBWCT 0 LB1ST 0 /FIRST BUFFER POINTER LBFULL 0 /OVERFLOW POINTER NAME1 0 /RADIX 50 NAME 0 NAME2 0 /RADIX 50 NAME 0 PROGN 0 /RADIX 50 PROG NAME 0 SYMBL 0 /RADIX 50 SYMBOL 0 CONTLC 0 /CONTROL WORD COUNTER CODESV 0 /STORAGE FOR OTHER CODES SAVEL 0 /PUSH/POP FOR LISTING CHARL 0 /LAST CHAR FILEP 0 /POINTER TO FILE ENTRY TEM12 0 /FLAG TO PICK UP FILE NAME ONLY ONCE F57T1 0 /TEMPORARY STORAGE F57T2 0 /TEMPORARY STORAGE F57T3 0 /TEMPORARY STORAGE / R50CT 774700 777730 777777 T57C 0 /TO 5/7 COUNTER T57T1 0 /TEMP STORAGE T57T2 0 /TEMP STORAGE T57T3 0 /TEMP STORAGE / / /OPTION SWITCHES LIST 0 /LISTING SWITCH SLIST 0 UPDATE 0 /UPDATE SWITCH SUPDAT 0 NEW 0 /NEW SWITCH FINIS 0 /COMMAND TERMINATOR ENDSW 0 /END SWITCH READSW 0 /READ UNDERWAY SWITCH LSTACT 0 /ACTION PRINT SWITCH CPSW 0 /^P SWITCH .IFDEF DOS15 BOSSW SKP /BOSS-15 SWTICH .ENDC /CRUNCH VARIABLES AND CONSTANTS / IC 0 /INPUT BUFFER COUNTER IC1 0 /NUMBER OF WORDS IN CURRENT INPUT BUFFER C 0 /LOADER GROUP COUNTER P 0 /POINTER TO CURRENT WORD TO BE OUTPUT T 0 /LOADER CODES BEING OUTPUT NOW HOLDER FEND 0 /FLAG SIGNALLING END OF BUFFER LBLAST 0 /LAST BUFFER FILLED ON INPUT LBWRT 0 /BUFFER CURRENTLY BEING OUTPUT TS 0 /TEMPORARY STORAGE LOADER CODE TSS 0 /TEMPORARY STORAGE OF TS NSYMF 0 /-1 WHEN SYMBOL IS AWAITING OUTPUT SYM 0 /FIRST HALF OF OUTPUT SYMBOL BOL 0 /LAST HALF OF OUTPUT SYMBOL TBP 0 /OUTPUT LOADER GROUPING BUFFER POINTER Q 0 /OUTPUT BUFFER NEXT WORD POINTER OC 0 /OUTPUT LOADER GROUPING COUNTER OC1 0 /MAXIMUM COUNT OF LOADER GROUPING TO 0 /LOADER CODE GROUPING LOADER CODE WORD TEMPORARY STORAGE F 0 /POINTER TO DECTAPE BUFFER NEXT WORD TO BE FILLED B 0 /LOADER CODE GROUPING MEMBER COUNTER / /ADDRESS CONSTANTS ADF=. AD00 MODF AD01 COMAND AD02 COMTAB+1 AD03 BUFFER+2 AD05 LISTBF+2 AD06 R50CT AD07 ENAM1 AD08 ENAMEL ADL=. ADCT=ADL-ADF\777777+1 / .EJECT .END START