	.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		/<CR><LF> 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 ETENSION
	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 <CR><LF> 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<CR] IN BUFFER
	JMS LISTNG	/GO PRINT BUFFER
MOD20	LISTBF
	JMP* LINEB	/RETURN
/
	.TITLE	LIBRARY UPDATE INPUT FILE(S) PROCESSING SUBOUTINES
/READ ROUTINE INTO FREE AREA
/   IF READSW 0 OR NEG - DOUBLE BUFFER
/   IF READSW POS      - SINGLE BUFFER
READ	0
	LAC R.DAT	/.DAT SLOT BEING READ
	DAC C.DAT1
	DAC C.DAT2
	DAC C.DAT3
	SAD (764	/IS IT DAT -14
	XCT ENDSW	/IF SO CAN NOT BE NEW OPTION
	SKP
	JMP BADEOF
	LAC READSW
	SPA		/IN DOUBLE BUFFERING
	JMP C.DAT2	/TO .WAIT
	SNA!CLA!CMA
	DAC READSW	/BEGIN DOUBLE BUFFERING - OR SINGLE READ
	LAC LB1ST	/SET UP BUFFER
	DAC LBNEXT
	DAC LBRD1
C.DAT1	CAL		/.READ - .DAT SLOT LATER
	10
LBRD1	0		/BUFFER ADDRESS
	-100
C.DAT2	CAL		/.WAIT - .DAT SLOT LATER
	12
JMPWAT	LAC LBNEXT	/UPDATE LAST BUFFER
	DAC LBLAST	/FILLED POINTER
	CLC
	DAC TEM12
	LAC* LBLAST	/GET LB HEADER
	AND (17		/GET MODE BITS
	SAD (5		/EOF
	JMP* READ
	SAD (6		/EOM
	JMP* READ
	ISZ READ	/TO NORMAL RETURN
	LAC* LBLAST	/GET LB HEADER
	AND (60		/GET VD BITS
	SZA
	JMP READER	/READ ERROR TYPEOUT
	LAC* LBLAST	/GET LB HEADER
	AND (377000	/GET WPC
	JMS	SUBS8
	RTR
	DAC LBWC	/NO OF WORDS IN BUFFER
	DAC LBWCT
	LAC READSW	/IS THIS A SINGLE READ
	SMA
	JMP* READ	/EXIT IF SINGLE READ
	LAC LBWC	/DOUBLE READ
	TAD LBLAST	/TEST FOR BUFFER OVERFLOW
	DAC LBNEXT
	CMA
	TAD LBFULL	/END OF BUFFER
	SPA
	JMP OVERFO	/BUFFER OVERFLOW
	JMS SEARCH	/SEARCH BUFFER
	JMP C.DAT3	/NORMIAL BUFFER
	JMP CRTEOF	/EOF
	LAW -2		/PROG. NAME
	TAD SEARCH	/RESET ENTRY TO
	DAC SEARCH	/SEARCH AND CONTINUE
	JMP PROCES	/SEARCH
C.DAT3	CAL		/.READ - .DAT SLOT LATER
	10
LBNEXT	0		/BUFFER ADDRESS
	-100
	JMP .+3
CRTEOF	LAC (1005	/PUT IN EOF HWP
	DAC* LBNEXT	/IN NEXT BUFFER
	LAC LBWCT	/RESTORE WORD COUNT
	DAC LBWC
	JMP* READ	/EXIT
/WAIT ROUTINE
WAIT	0
	LAC R.DAT	/GET DAT SLOT
	DAC C.DAT4	/GIVE TO READ ROUTINE
	DAC SHRTPG	/MAKE NON-ZERO
C.DAT4	CAL		/.WAIT - .DAT SLOT LATER
	12
	DZM READSW	/CLEAR READ UNDERWAY
	LAC WAIT	/GIVE RETURN ADDRESS TO SUBR READ
	DAC READ
	JMP JMPWAT	/JMP INTO READ ROUTINE
/BUFFER SEARCH ROUTINE
/CALLING SEQUENCE:
/	JMS SEARCH
/	RETURN		/ON NORMAL BUFFER
/	RETURN		/ON END CODE
/	RETURN		/ON PROG NAME
SEARCH	0
	LAC LBLAST	/BUFFER ADDRESS
	TAD (2
	DAC CONTLP	/CONTROL WORD
	TAD (1
	DAC DATAP	/DATA WORD
	LAC LBWC	/WORD COUNT
	CMA
	TAD (3		/2'S COMP MINUS HEADER
	DAC LBWC
NXCNTL	LAW -3
	DAC CONTLC	/3 CODES PER WORD
	LAC* CONTLP	/GET CONTROL WORD
	SKP
NXCODE	LAC CODESV	/GET CONTROL WORD
	RTL
	RTL
	RTL
	DAC CODESV	/SAVE FOR LATER
	RAL
	AND (77		/GET CODE
	SAD (1
	JMP CODE01	/SIZE
	SAD (7
	JMP CODE07	/SYMBOL - 1ST PART
	SAD (10
	JMP CODE10	/SYMBOL - 2ND PART
	SAD (33
	JMP CODE33	/SOURCE EXTENSION 6BIT
	SAD (23
	JMP CODE23	/DEF - MAY BE PROG NAME
	SAD (27
	JMP CODE27	/END CODE
PROCES	ISZ LBWC
	ISZ DATAP
	ISZ CONTLC
	JMP NXCODE	/NEXT IN THIS WORD
	ISZ DATAP		/NEXT DATA WORD
	ISZ LBWC
	SKP
	JMP* SEARCH	/RETURN
	LAC CONTLP
	TAD (4
	DAC CONTLP
	JMP NXCNTL
CODE01	LAC* DATAP
	DAC SIZE		/SAVE SIZE
	JMP PROCES
CODE07	LAC* DATAP
	DAC SYMBL		/SYMBOL PART 1
	JMP PROCES
CODE10	LAC* DATAP
	DAC SYMBL+1	/SYMBOL PART 2
	JMP PROCES
CODE33	LAC* DATAP	/GET SOURCE EXT
	DAC SRCEXT	/STORE IT
	JMP PROCES
CODE23	LAC* DATAP
	SMA
	JMP PROCES	/NOT PROG NAME
	ISZ TEM12		/IS PROG NAME
	JMP CODE27-1
	LAC SYMBL
	DAC PROGN		/SAVE
	LAC SYMBL+1
	DAC PROGN+1
	ISZ SEARCH
CODE27	ISZ SEARCH	/ENTER HERE IF END CODE
	JMP* SEARCH	/RETURN
	.TITLE	LIBRARY UPDATE OUTPUT FILE PROCESSING SUBROUTINES
/WRITE ROUTINE FROM BUFFERS
OUTBUF	BSIZE		/OUTPUT BUFFER
	0
	.BLOCK	4*SIZE1
MOD62	MOD62+1		/TEMPORARY STORAGE FOR OUTPUT LOADER GROUPING
TB	.BLOCK	3
WRITE	0
	DZM FEND	/INIT. FLAG FOR END OF OUTPUT
	LAC LB1ST	/1ST BUFFER
	JMP R1		/SET UP TO WRITE LBIST
/
R2	TAD (2		/SKIP HWP
	DAC P		/SET POINTER FOR FIRST WORD TO BE OUTPUT
	LAC* LBWRT	/CALCULATE NUMBER OF WORDS IN CURRENT BUFFER
	AND (377000	/MASK OUT ALL BUT WORD PAIR COUNT
	JMS SUBS8	/MAKE WORD COUNT
	RTR
	DAC IC1		/STORE WORD COUNT
	CMA		/UPDATE BUFFER COUNTER--IC
	TAD (3
	DAC IC
	SMA		/HAVE WE FINISHED BUFFER
	JMP R		/YES
QQ	LAW -4		/OUTPUT IN GROUPS OF 4
	DAC C		/SET UP LOADER GROUP COUNTER
	LAC* P		/FIRST WORD OF GROUP IS LOADER CODES WORD
	DAC T		/STORE LOADER CODES
S	ISZ P		/BUMP TO DATA WORD
	LAC T		/GET CODES
	ISZ IC		/BUMP BUFFER COUNTER
	RTL!SKP		/START TO SHIFT
	JMP R		/FINISHED WITH THIS BUFFER
	ISZ C		/BUMP GROUP COUNTER
	RTL!SKP		/SHIFT SOME MORE
	JMP QQ		/START NEW 4 WORD GROUP
	RTL		/SHIFT SOME MORE
	DAC	T	/LEAVE NEXT LOADER CODE IN POSITION
	RAL		/SHIFT LOADER CODE INTO BITS 12-17
	AND	(77	/EXTRACT THIS LOADER CODE
	DAC	TS	/STORE IT
	SNA		/TEST LOADER CODES AND PROCESS
	JMP S		/0 IS IGNORED
	SAD (7
	JMP DACSYM	/7
	SAD (10
	JMP DACBOL	/8
	SAD (11
	JMP SO		/9
	SAD (12
	JMP SO		/10
	SAD (14
	JMP SO		/12
	SAD (23
	JMP CRUN1	/19
	SAD (27
	JMP EOR		/23
	SAD (30
	JMP S		/CODE NOT USED --24
	SAD (33
	JMP EXTOUT	/27
	LAC* P		/ALL OTHER CODES
	JMS OUT		/ARE JUST OUTPUTED
	JMP	S	/GET NEXT CODE
/
R	ISZ	FEND	/CHECK FLAG FOR CURRENT OUTPUT
	SKP
	JMP*	WRITE	/END OF CURRENT OUTPUT--EXIT
	LAC	LBWRT	/UPDATE POINTER TO
	TAD	IC1	/BUFFER TO BE WRITTEN
R1	DAC	LBWRT	/SET POINTER TO BUFFER TO BE WRITTEN
	SAD	LBLAST	/IS IT LAST BUFFER
	SKP		/YES
	JMP	R2	/NO...GO WRITE BUFFER
	LAC*	LBLAST	/CHECK IF LAST BUFFER CONTAINS EOF INDICATION
	AND	(17
	SAD	(5
	JMP*	WRITE	/YES,EXIT
	CLC		/NO,OUTPUT FILE AND THEN EXIT
	DAC	FEND	/SET FINISH FLAG TO -1
	LAC	LBWRT	/GET POINTER TO BUFFER TO BE WRITTEN
	JMP	R2	/GO WRITE IT
/
SO	LAC* P		/GET DATA WORD
	XCT INFSW1	/IS THERE INFOMATION
	SKP		/TO BE ADDED
	JMS GETDAT	/YES
	ISZ	NSYMF	/HAS CURRENT SYMBOL BEEN OUTPUT
	JMP	NOSYM	/YES
	LAC	TS	/NO-OUTPUT
	DAC	TSS	/TEMPORARY STORE LOADER CODE
	LAC	(7
	DAC	TS	/LOADER CODE FOR SYM
	LAC	SYM	/GET DATA WORD
	SMA
	JMP	ASO	/3 LETTER SYMBOL
	JMS	OUT	/PUT IT OUT
	LAC	(10	/LOADER CODE FOR 2ND HALF OF SYMBOL
	DAC	TS
	LAC	BOL	/GET DATA WORD
ASO	JMS	OUT	/PUT IT OUT
	XCT PGMNSW	/IS THIS A PROGRAM NAME
	JMP NOTPGN	/NO
	LAC (33		/PUT IN
	DAC TS		/SOURCE EXT IF DATA WROD IS NON-ZERO
	LAC SRCEXT	/GET DATA WORD
	SZA
	JMS OUT		/PUT IT OUT
	LAC (NOP	/RESET SWITCH
	DAC PGMNSW
NOTPGN	LAC	TSS	/RESTORE LOADER CODE
	DAC	TS
	LAC*	P		/GET DATA WORD
NOSYM	JMS	OUT		/PUT IT OUT
	JMP	S	/FETCH NEXT INPUT WORD
/
DACSYM	LAC* P		/GET DATA WORD
	DAC	SYM		/STORE FOR SYMBOL DEF.
	CLC
	DAC	NSYMF	/SET TO INDICATE SYMBOL NOT OUTPUT
	JMP	S
/
DACBOL	LAC* P		/GET DATA WORD
	DAC BOL		/STORE FOR SYMBOL DEF.
	JMP S
/
EXTOUT	LAC* P		/GET DATA WORD
	DAC SRCEXT	/STORE FOR SYMBOL DEF.
	JMP S
/
CRUN1	LAC* P	/GET DATA WORD
	SMA		/IS IT A PGRAM NAME DEF
	JMP CRUNCH	/NO
	LAC (SKP	/YES SET PROG NAME SWITCH
	DAC PGMNSW
	XCT INFSW	/IS THERE INFOR
	JMP PGNM	/TO BE ADDED
	LAC (SKP	/YES SET
	DAC INFSW1	/SWITCH
PGNM	SKP		/PROG NAME MUST BE OUTPUT
CRUNCH	NOP	/SKP MEANS DELETE LOCAL SYMBOLS
	JMP	SO
	JMP	S
/
GETDAT	0
	LAC ADNAME	/SWAP ADDED INFORMATION
	DAC SYM		/INTO PROPER 'WRITE' VARIABLES
	LAC ADNAME+1
	DAC BOL
	LAC ADEXT
	DAC SRCEXT
	LAC (NOP	/RESET SWITCHS
	DAC INFSW
	DAC INFSW1
	JMP* GETDAT
/
SUBS8	0		/PERFORM LONG ROTATES
	CLL
	XCT*	SUBS8
	XCT*	SUBS8
	XCT*	SUBS8
	JMP*	SUBS8
/
OUT	0		/OUTPUT WORD
	DAC*	TBP	/STORE WORD IN TEMPORARY BUFFER
	ISZ	TBP		/BUMP POINTER
	LAC	TO	/PACK CORRESPONDING LOADER CODE
	RTL		/SHIFT SIX BITS
	RTL
	RTL
	AND	(777700	/MASK OUT ANY JUNK
	XOR	TS	/PUT IN CURRENT CODE
	DAC	TO	/STORE NEW RESULT
	ISZ	B	/BUMP CODE COUNTER
	JMP*	OUT	/FINISHED
	DAC*	Q	/FULL LOADER CODE WORD STORE GROUP AWAY
	ISZ	Q	/BUMP OUTPUT BUFFER POINTER
	LAC	MOD62	/INITIALIZE TEMPORARY BUFFER POINTER
	DAC	TBP	/C(TBP)=ADDR OF TB
	DZM	TO	/INITIALIZE LOADER CODE BUFFER
	LAC	TB	/GET 1ST DATA WORD
	DAC*	Q	/STORE IN OUTPUT BUFFER
	LAC	TB+1	/GET 2ND DATA WORD
	ISZ	Q	/BUMP BUFFER
	DAC*	Q	/STORE IN BUFFER
	ISZ	Q	/BUMP BUFFER
	LAC	TB+2	/GET 3RD DATA WORD
	DAC*	Q	/STORE IN BUFFER
	ISZ	Q	/BUMP BUFFER
	LAW	-3	/GO BACK FOR NEXT GROUP
	DAC	B	/SET UP CODE COUNTER
	ISZ	OC	/COUNT GROUPS
	JMP*	OUT	/EXIT
	JMS	SBOUT	/OUTPUT THIS BUFFER
	JMP*	OUT	/EXIT
/
SBOUT	0
	CAL+763		/.WRITE -15
	11
MOD61	OUTBUF
	-4*SIZE1-2
	CAL+763		/.WAIT -15
	12
	LAC	OUTBUF	/UPDATE DECTAPE BUFFER POINTER
	JMS	SUBS8
	RTR
	TAD	F
	DAC	F
	JMS	INOUT	/REINITIALIZE OUTPUT FOR NEXT BUFFER
	LAW	-370	/HAVE WE FILLED THIS DECTAPE BUFFER
	TAD	F
	SMA
	JMP	SBX	/YES
	TAD	(4*SIZE1	/CAN WE FIT ONE MORE BUFFER
	SPA!RCR
	JMP*	SBOUT	/YES
	RCR		/NO,COMPUTE SMALLER BUFFER
	TAD	OC
	DAC	OC
	DAC	OC1
	CMA		/COMPUTE NEW HEADER WORD FOR SMALLER BUFFER
	RCL
	TAD	(3
	JMS	SUBS8
	RTL
	RAL
	AND	(377000
	DAC	OUTBUF
	JMP*	SBOUT	/EXIT
SBX	DZM	F	/NEW DECTAPE BUFFER
	JMP*	SBOUT	/EXIT
EOR	LAC* P		/EVERY NEW PROGRAM MUST START A FRESH BUFFER
	JMS OUT
	DZM	TS	/SET TO LOADER CODE 0--IGNORED
	LAW	-3	/IS THERE ROOM IN CODE WORD
	SAD	B
	JMP	.+3
	CLA		/FILL UP REMAINING MEMBERS OF LOADER GROUP WITH IGNORED 00 CODES
	JMP	EOR
	DZM	NSYMF	/DO NOT USE SYMBOLS BETWEEN PROGRAMS IN LIBRARY
	CLC
	TAD	OC1	/HAVE ALL LOADER CODE GROUPTING
	CMA		/OUTPUTTED
	TAD	OC
	SNA
	JMP	R	/LUCKY WE JUST OUTPUT THE LAST BUFFER
	JMS	SUBS8	/COMPUTE SMALLER WORD PAIR COUNT FOR HEADER WORD
	RTL
	RTL
	TAD	(1000
	AND	(377000
	DAC	OUTBUF
	JMS	SBOUT	/OUTPUT SMALLER BUFFER
	JMP	R	/GO BACK FOR MORE IF ANY
	.TITLE	LIBRARY UPDATE I/O LIBRARY FILE PROCESSING SUBR
/
/TO POSITION A UNIT
/
POSUNT	0
POSNXT	DZM READSW
	LAC (764
	DAC R.DAT		/SETUP FOR PRIMARY INPUT
	JMS READ	/READ IN A BUFFER
	JMP BADEOF
	JMS SEARCH	/SEARCH BUFFER
	JMP .-3		/NEXT BUFFER
	JMP NOPGNM		/NO PROGRAM NAME
	LAC NAME2		/POSITION NAME
	SAD PROGN		/NAME FOUND		/MAY BE RIGHT
	JMP POSEQU
NOTPOS	JMS WAIT		/FOR LAST BUFFER
	DZM SHRTPG
	XCT UPDATE
	SKP
	JMS WRITE		/COPY BUFFER
	XCT LIST
	SKP
	JMS LINEB		/LISTING
	DZM SRCEXT		/RESET SOURCE EXT
	LAC SHRTPG
	SNA
	JMP POSNXT
	JMS SEARCH
	SKP
	JMP POSNXT	/ON END OF UNIT
	NOP
	LAC (1
	DAC READSW	/NO DOUBLE BUFFERING
POSCPY	JMS READ
	JMP BADEOF
	XCT UPDATE
	SKP
	JMS WRITE		/COPY
	JMS SEARCH	/SEARCH BUFFER
	JMP POSCPY	/NORMAL BUFFER
	JMP POSNXT	/END OF UNIT
	JMP POSCPY	/PROG NAME
POSEQU	SMA
	JMP .+5		/ONE WORD SYMBOL
	LAC NAME2+1	/CHECK PART 2
	SAD PROGN+1
	SKP
	JMP NOTPOS	/NOT RIGHT PROG
	JMS WAIT	/RIGHT PROG.
	JMP POSEND
/
POSCNT	JMS SEARCH
	SKP
	JMP POSEND	/END OF RIGHT UNIT
	XCT UPDATE
	SKP
	JMS WRITE
	LAC (1
	DAC READSW		/NO DOUBLE BUFFERING
	JMS READ
	JMP BADEOF		/GO BACK FOR MORE
	JMP POSCNT
POSEND	XCT UPDATE
	SKP
	JMS WRITE		/COPY REST OF UNIT
	XCT LIST
	SKP
	JMS LINEB		/LINE OF LISTING
	DZM SRCEXT
	JMP* POSUNT		/DONE--EXIT
	.EJECT
/
/TO DELETE A UNIT
/
DELUNT	0
DELNXT	DZM READSW
	LAC (764
	DAC R.DAT		/SETUP FOR PRIMARY INPUT
	JMS READ
	JMP BADEOF
	JMS SEARCH
	JMP .-3		/NEXT RECORD
	JMP NOPGNM	/NO PROG NAME
	LAC NAME2		/NAME LOOKED FOR
	SAD PROGN		/NAME FOUND
	JMP DEQPN		/MAY BE RIGHT NAME
NOTDEL	JMS WAIT		/FOR LAST BUFFER
	DZM SHRTPG
	XCT UPDATE
	SKP
	JMS WRITE		/COPY
	XCT LIST
	SKP
	JMS LINEB		/GIVE LISTING
	DZM SRCEXT
	LAC SHRTPG
	SNA
	JMP DELNXT
	JMS SEARCH
	SKP
	JMP DELNXT	/ON END OF UNIT
	NOP
	LAC (1
	DAC READSW	/NO DOUBLE BUFFERING
DELCPY	JMS READ	/READ IN NEXT BUFFER
	JMP BADEOF
	XCT UPDATE
	SKP
	JMS WRITE		/COPY
	JMS SEARCH
	JMP DELCPY
	JMP DELNXT	/ON END OF UNIT
	JMP DELCPY
DEQPN	SMA
	JMP .+5		/ONE WORD SYMBOL
	LAC NAME2+1	/CHECK PART 2
	SAD PROGN+1
	SKP
	JMP NOTDEL	/NOT RIGHT PROG
	JMS WAIT	/RIGHT PROGRAM
	JMP DELEXT	/ON EOF
DELCNT	JMS SEARCH	/NORMAL RETURN
	SKP
	JMP DELEXT	/DELETE DONE
	NOP
	LAC (1
	DAC READSW	/NO DOUBLE BUFFERING
	JMS READ
	JMP BADEOF
	JMP DELCNT	/RUN THRU UNIT
DELEXT	DZM SRCEXT
	JMP* DELUNT
	.EJECT
/
/TO INSERT A UNIT
/
INSUNT	0
CPNTP	CAL+770
	1
MOD32	CPINT
	0
	JMS POP	/GET NAMED FILE
	JMS SIXF57	/EOF FOUND
MOD30	FILE+3
	CAL+770		/SEEK NAMED FILE
	3
MOD31	FILE+3
	DZM READSW
	LAC (770
	DAC R.DAT		/SETUP FOR SECONDARY INPUT
	JMS READ	/READ BUFFER
	JMP EOFERR	/EOF FOUND
	JMS SEARCH	/SEARCH BUFFER
	JMP .-3		/NEXT RECORD
	JMP NOPGNM	/NO PROG NAME
	LAC NAME1		/NAME WANTED
	SAD PROGN		/NAME FOUND
	SKP
	JMP WRONGP	/WRONG PROGRAM
	SMA
	JMP .+5		/ONE WORD SYMBOL
	LAC NAME1+1	/PART 2
	SAD PROGN+1
	SKP
WRONGP	JMS SWNAME	/WRONG PROGRAM--SWAP NAMES OR INFORM USER
	JMS WAIT	/RIGHT NAME
	DZM SHRTPG
	DZM LSTACT		/TO PRINT ACTION
	XCT LIST
	SKP
	JMS LINEB
	LAC SHRTPG
	SNA
	JMP INSEND
	JMS SEARCH	/SEARCH BUFFER AGAIN
	SKP
	JMP INSEND	/END OF INSERTED UNIT
	XCT NEW		/WRITE OUT UNIT TO OUTPUT FILE
	SKP
	JMP .+3
	XCT UPDATE
	SKP
	JMS WRITE
	LAC (1
	DAC READSW	/NO DOUBLE BUFFERING
INSRNX	JMS READ	/READ SOME MORE
	JMP BADINP
	JMS SEARCH	/SEARCH IT
	SKP
	JMP INSEND	/END OF UNIT
	XCT NEW		/WRITE IT OUT
	SKP
	JMP .+3
	XCT UPDATE
	SKP
	JMS WRITE
	JMP INSRNX
INSEND	XCT NEW		/FINISH WRITING UNIT
	SKP
	JMP .+3
	XCT UPDATE
	SKP
	JMS WRITE
	JMS	READ	/READ EOF/EOM
	SKP		/PRESENT
	JMP	WRONGP	/ABSENT. REPORT
	CAL+770		/.CLOSE INPUT
	6
	DZM SRCEXT	/RESET SOURCE EXT
	JMP* INSUNT	/DONE--EXIT
	.EJECT
/
/TO POSITION AT END FILE
/
POSEOF	0
	DZM PROGN	/CLEAR OUT LISTING
	DZM SIZE	/VARIABLES
	DZM SRCEXT
	LAC (764
	DAC R.DAT
	LAC (1
	DAC READSW	/NOT DOUBLE BUFFERED	/READ BUFFER
EOFPNX	JMS READ	/READ BUFFER
	JMP GOTEOF	/EOF FOUND
	XCT UPDATE	/WRITE IT OUT
	SKP
	JMS WRITE		/COPY
	JMS SEARCH
	JMP EOFPNX	/EOF FOUND
	SKP
	JMP C.DAT3-4
	JMS READ
	JMP GOTEOF
	XCT LIST
	SKP
	JMS LINEB		/LISTING
	DZM SRCEXT	/RESET SOURCE EXTENSION
	JMP EOFPNX+2
GOTEOF	DZM LSTACT	/PRINT ACTION
	XCT LIST
	SKP
	JMS LINEB		/LISTING
	DZM SRCEXT
	LAC (SKP	/SET END SWITCH
	DAC ENDSW
	JMP* POSEOF	/DONE--EXIT
	.TITLE	LIBRARY UPDATE SECD INPUT NAME DISCREPANCY PROC
/SUBROUTINE NAMCHK  CHECKS TO SEE IF
/PROGRAM NAME AND FILE NAME ARE THE SAME
/IF THERE NOT IT CALLS SUBROUTINES
/TO TELL USER AND HANDLE PROBLEM
/CALL 	JMS NAMCHK
/	RETURN
NAMCHK	0
	XCT SECDSW	/CHECK TO SEE IF SECONDARY
	JMP* NAMCHK	/INPUT DEVICE FILE-STRUCTURED
	JMS POP		/IT IS -- GET FILE NAME
	JMS SIXF57	/MAKE UP DEB
MOD74	FILE+3		/HERE
	.FSTAT -10,FILE+3	/FOR FILE NAME
MOD75=.-1
	SNA		/WAS FILE THERE
	JMP FILNFD	/NO -- INFORM USER
	.SEEK -10,FILE+3	/YES
MOD76=.-1
	DZM READSW	/DOUBLE BUFFERED READS
	LAC (770	/SET UP FOR .READ ON DAT -10
	DAC R.DAT
RDBACK	JMS READ	/READ IN A BUFFER
	JMP EOFER1	/EOF ENCOUNTERED...COMPLAIN
	JMS SEARCH	/SEARCH BUFFER
	JMP RDBACK	/NO PROG NAME..YET GO BACK AN READ AGAIN
	JMP NOPGN1	/NO PROG NAME...COMPLAIN
	LAC PROGN	/IS PROG AND FILE NAME
	SAD NAME1	/THE SAME
	SKP		/MAYBE
	JMP NAMDIF	/NO
	SMA
	JMP NAMOK	/NAMES THE SAME...EXIT
	LAC NAME1+1	/CHECK PART 2
	SAD PROGN+1
	JMP NAMOK	/THERE THE SAME...EXIT
NAMDIF	JMS NAMDCP	/TELL USER OF DISCREPANCY
	JMS SWCMDO	/SWAP OUT COMMAND STRING
	JMS TYPE	/ASK USER IF HE WISHES TO
MOD102	MS37
	JMS TYPE
MOD77	MS27		/ACCEPT COMMAND
	JMS GETCMD	/GET ANSWER
	JMS SCAN
	LAC COMAND	/IS IT YES
	SAD YES
	JMP CMDACP
	SAD YES1
	JMP CMDACP
	JMP CDIGNR	/NO...COMMAND IGNORED
CMDACP	JMS NAMWAN	/YES...WHAT NAME DOES USER WANT TO USE
	JMS SWCMDI	/SWAP COMMAND STRING BACK IN
NAMOK	.CLOSE -10	/CLOSE INPUT
	DZM SRCEXT	/RESET SOURCE EXT WORD
	JMP* NAMCHK	/EXIT
/
/SUBROUTINE TO ASK USER WHAT
/NAME HE WANTS TO USE ON A NAME DISCREP.
/CALL	JMS NAMWAN
/	RETURN
NAMWAN	0
	JMS TYPE
MOD125	MS37
	JMS TYPE	/ASK USER IF HE WANTS
MOD100	MS30		/TO USE FILE NAME
	JMS GETCMD	/GET HIS ANSWER
	JMS SCAN	/IS IT YES
	LAC COMAND
	SAD YES
	JMP FLNAME
	SAD YES1
	JMP FLNAME
	LAC PROGN	/NO USE PROGRAM NAME
	DAC ADNAME	/SAVE IT
	LAC PROGN+1
	DAC ADNAME+1
	JMS EXTWNT	/ASK AND GET SOURCE EXT WANTED
	JMP* NAMWAN	/EXIT
FLNAME	LAC NAME1	/FILE NAME WANTED
	DAC ADNAME	/SAVE IT
	LAC NAME1+1
	DAC ADNAME+1
	JMS EXTWNT	/ASK AND GET SOURCE EXTENSION WANTED
	JMP* NAMWAN	/EXIT
/
/TYPES OUT NAME DISCREPANCY MESSAGE
/CALL	JMS NAMDCP
/	RETURN
NAMDCP	0
NAMEXT	JMS TYPE	/TELL USER OF DISCREPANCY
MOD103	MS23
	JMS TYPE	/TELL HIM COMMAND
MOD104	MS24
	DZM PUTC	/STRING FILE NAME
	LAC AD05
	DAC PUTP
	LAC PROGN	/SAVE PROG. NAME
	DAC ADNAME
	LAC PROGN+1
	DAC ADNAME+1
	LAC NAME1	/SET UP FOR R50T57
	DAC PROGN
	LAC NAME1+1
	DAC PROGN+1
	JMS R50T57	/PUT FILE NAME N BUFFER
	LAC ADNAME	/RESTORE PROG. NAME
	DAC PROGN
	LAC ADNAME+1
	DAC PROGN+1
	LAC (15
	JMS PUT
	JMS TYPE	/TYPE OUT BUFFER
MOD105	LISTBF
	JMS TYPE	/TELL USE PROGRAM NAME
MOD106	MS25
	DZM PUTC
	LAC AD05
	DAC PUTP
	JMS R50T57	/PUT PROGRAM NAME IN BUFFER
	LAC (15
	JMS PUT
	JMS TYPE	/TYPE BUFFER
MOD107	LISTBF
	JMS TYPE	/TELL USER SOURCE EXTENSION
MOD110	MS26
	DZM PUTC
	LAC AD05
	DAC PUTP
	LAC PROGN	/SAVE PROG. NAME
	DAC DATASV
	LAC SRCEXT	/SET UP FOR R50T57
	DAC PROGN
	JMS R50T57	/PUT IT IN BUFFER
	LAC DATASV	/RESTORE PROG. NAME
	DAC PROGN
	LAC (15
	JMS PUT
	JMS TYPE	/TYPE OUT BUFFER
MOD111	LISTBF
	.WAIT -3	/MUST WAIT FOR TTY
	JMP* NAMDCP	/EXIT
/
/SUBROUTINE SWNAME IS CALLED AT
/INSERT TIME TO EITHER SWAP NAMES WANTED
/ON A NAME DISCREPANCY
/ON IF ON PAPER TAPE INPUT
/CHECK NAMES ECT.
/CALL JMS SWNAME
/	RETURN
/
SWNAME	0
	XCT SECDSW	/FILE-STRUCTURED DEVICE
	SKP		/NO
	JMP ALDONE	/YES...WE DID ALL THIS BEFORE
	JMS NAMDCP	/TELL USER OF DISCREPANCY
	JMS SWCMDO	/SWAP OUT COMMAND STRING
	JMS TYPE
MOD126	MS37
	JMS TYPE	/ASK HIM IF HE WANTS TO
MOD112	MS32		/CHANGE INPUT
	JMS GETCMD	/GET ANSWER
	JMS SCAN	/IS IT YES
	LAC COMAND
	SAD YES
	JMP INPTCH	/IT IS TELL USER TO ^P ECT
	SAD YES1
	JMP INPTCH	/IT IS TELL USER TO ^P ECT
	JMS NAMWAN	/ANS IS NO...ASK WHAT NAME HE WANTS
	JMS SWCMDI	/SWAP COMMAND STRING BACK IN
ALDONE	LAC (SKP	/SET ADD INFORMATION
	DAC INFSW	/SWITCH
	LAC ADNAME	/GIVE NAME WANTED TO
	DAC PROGN	/PROGN FOR LISTING
	LAC ADNAME+1
	DAC PROGN+1
	LAC ADEXT	/ALSO EXTENSION
	DAC SRCEXT
	JMP* SWNAME	/EXIT
/ASKS USER WHAT SOURCE EXTENSION
/HE WANTS TO USE ON A NAME DISCREPANCY
EXTWNT	0
	JMS TYPE	/ASK USER TO TYPE IN
MOD113	MS31		/SOURCE EXTENSION WANTED
	JMS GETCMD	/GET EXTENSION
	JMS SCAN
	JMS R50F57	/CONVERT IT TO RADIX 50(8)
MOD114	FILE+3
	LAC FILE+3	/GET IT
	DAC ADEXT	/STORE EXTENSION
	JMP* EXTWNT	/EXIT
/SAVE AND RESTORES COMMAND
/STRING ON ERROR QUESTIONING ROUTINES
SWCMDO	0		/SWAP OUT
	LAC AD05	/GET POINTER TO LISTBF
	DAC PUTP	/GIVE TO PUT
	LAC AD03	/GET POINTER TO COMMAND BUFFER
	DAC GETP	/GIVE TO GET
	JMP SWAP	/GO SWAP COMMAND STRING
SWCMDI	0		/SWAP IN
	LAC SWCMDI	/GET ENTRY
	DAC SWCMDO	/AND GIVE TO EXIT POINTER
	LAC AD03	/GET POINTER TO COMMAND BUFFER
	DAC PUTP	/GIVE TO PUT
	LAC AD05	/GET POINTER TO LISTBF
	DAC GETP	/GIVE TO GET
SWAP	DZM PUTC	/SET UP COUNTERS FOR PUT AND GET
	LAW -1
	DAC GETC
MORE1	JMS GET		/GET DATA TO BE SWAPPED
	SAD (15		/IS IT A <CR>
	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
