.TITLE DPA.
/COPYRIGHT 1969, 1970, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.
/	6-22-70 (EDIT 7)
	/RP EDIT 7  10--20--70
/RF09/15 DISK ADAPTATION - 8-26-70 - W. DESIMONE
/M. SIFNAS 4-17-68 (IOPS 23 5-9-68)(56 FILES,EOF 5-22-68)
/CLEAR FIX (5-15-68);  IOPS 22 (6-4-68).
/DPA.=IOPS DISK/DECTAPE HANDLER ALL MODES, 3 FILES
/ALL FUNCTIONS
/3-256 WD. BUF.
/3 FILE BIT MAPS, 3 DIRECTORY BIT MAPS (32 WDS EACH)
/3 FILES ACTIVE AT ANY GIVEN TIME
/CALLING SEQUENCE
/CAL+.DAT SLOT(9-17)+I(7-8)/.INIT
/UNIT (0-2)+1
/RESTART ADDR. (MEANINGFUL FOR TTY HANDLER ONLY)
/BUF SIZE (255)
/
/UNIT (0-2)+2 CAL+X(6-8)+.DAT SLOT (9-17) /.OPER (X=1=.DLETE)
/DIR TYPE (0-2)=1+CORE ADDR. (3-17)
/CAL+.DAT SLOT (9-17)  /.SEEK
/UNIT (0-2)+3
/USER DIRECTORY ENTRY POINTER
/SAME AS .SEEK(FUNCTION=4) /.ENTER
/CAL+.DAT SLOT (9-17)  /.CLEAR
/UNIT(0-2)+5
/CAL+.DAT SLOT(9-17)  /.CLOSE
/UNIT(0-2)+6
/.MTAPE - ILLEGAL
/CAL+D.M.(6-8)+.DATSLOT(9-17)  /.READ
/UNIT (0-2)+10
/LINE BUF ADDR
/-WC OF L.B. (2'S COMP)
/SAME AS .READ(FUNCTION=11)  /.WRITE
/CAL+.DAT SLOT(9-17)	/.WAIT
/UNIT(0-2)+12
/CAL+X(8)+.DAT SLOT (9-17)  /.TRAN (X=0=READ)
/UNIT (0-2)+13		(X=1=WRITE)
/BLOCK#
/CORE ADDRESS
/-WC
/
	.EJECT
	.GLOBL	DPA.
IDX=ISZ
/IOT ASSIGNMENTS
DPCS=706324			/CLEAR STATUS (BITS 13,17,18 OF ST. A)
				/(BITS 9-15 OF ST. B)
DPSJ=706341			/SKIP ON JOB DONE FLAG
DPSE=706361			/SKIP ON ERROR FLAG
DPLF=706464			/LOAD ST. A (BITS 0-8)
DPLA=706304			/LOAD CYA,HA,SA FROM AC.
DPCA=706344			/LOAD CA REGISTER FROM AC (3-17)
DPWC=706364			/LOAD WC REGISTER FROM AC
DPRSA=706312			/READ ST. A INTO AC
DPRU=706412			/READ CA INTO AC (10-17)
DPCN=706454			/EXECUTE FUNC. REG. - AC CLEARED
DPRA=706432			/READ CYA,HA,SA INTO AC
DPRC=706452			/READ CA REGISTER INTO AC (3-17)
DPRW=706472			/READ WC REGISTER INTO AC
DPRSB=706322			/READ STATUS B INTO AC
DPLO=706444			/LOAD AC ONES INTO ST. A (BITS 0-8)
DPSA=706321			/SKIP ON ATTENTION FLAG
DASIZE=BLAND-BLAB		/FILE BLOCK A SIZE
DABSIZ=BLBND-BLAB		/FILE BLOCK A+B SIZE
DABSZ2=DABSIZ*2
	.IFUND	DELTA
DELTA=5
	.ENDC
DPA.	DAC	DTCALP		/CAL POINTER
	DAC	DTARGP		/ARG. POINTER
	ISZ	DTARGP		/INDEX TO FUNCTION (AND UNIT#)
	LAC*	DTARGP
	AND	DTUMSK
	DAC	DTCT1		/T SAVE UNIT#
/EXTRACT DATA MODE OR SUBFUNCTION
	LAW 7000
	AND* DTCALP
	RAR!CLL
	RTR
	RTR
	RTR
	RTR
	DAC DTCT2			/T STORE DATA MODE OR SUBFUNCTION
/FILE STORAGE BLOCK SWAP ROUTINE
	LAC*	DTCALP		/GET DAT SLOT (9-17)
	AND	(777
DTSLOT=DTTABL			/TEMP. STOR. FOR .DAT SLOT OF CURRENT CALL
SWAPSW=DTNTRZ
	DAC	DTSLOT		/T. SAVE
	DZM SWAPSW		/CLEAR SWAP SW
	SAD	DTFLS2		/FILE 2 SLOT #
	JMP	DTSW2		/CURRENT CALL FOR FILE 2-SET UP SWAP
	SAD	DTFLS3		/FILE 3 SLOT #
	JMP	DTSW3		/CURR. CALL FOR FILE 3- SETUP SWAP
	SAD	DTFLS1		/FILE 1 SLOT #
	JMP	DTSLOK		/CURRENT CALL FOR FILE 1
	LAC DTFLS1		/FILE 1 SLOT #
	SNA
	JMP	DTSLOK		/EMPTY
	LAC DTFLS2
	SNA
	JMP	DTSW2		/EMPTY - SWAP.
	LAC DTFLS3
	SZA!CLA			/EMPTY - SWAP
	JMP	DTER17		/EXCESSIVE # OF FILES REFERENCED
/ROUTINE TO SET UP FOR FILE 3 SWAP
DTSW3	LAC DTFLS1		/SLOT 1 INTO SLOT 3
	DAC DTFLS3
	LAC LDBSZ2
	JMP	DTSW4
/ROUTINE TO SET UP FOR FILE 2 SWAP
DTSW2	LAC DTFLS1		/FILE 1 SLOT INTO FILE 2 SLOT
	DAC	DTFLS2
	LAC LDBSZ	/(DABSIZ
DTSW4	DAC	DADSIZ		/FILE BLOCK RELAT. POSITION
/SWAP STORAGE BLOCKS
DTSWAP	LAW	-DABSIZ		/SAVE FULL BLOCK (A & B)
	DAC SWAPSW		/SET SWAP SW
DTSWP1	DAC	DTCT		/COUNT TO MOVE
	LAC	(DLTDIR		/1ST ADDR. OF FILE BLOCK 1
DTFB1P=DTMPS			/FILE BLOCK 1 POINTER
DTFB2P=DTMPP			/FILE BLOCK 2 POINTER
	DAC	DTFB1P		/FILE BLOCK 1 POINTER
	TAD	DADSIZ
	DAC	DTFB2P		/FILE BLOCK 2 POINTER
DTSWP2	LAC*	DTFB1P		/SAVE BLOCK 1 CELL
DTBLSV=DTWCS
	DAC	DTBLSV
	LAC*	DTFB2P		/BLOCK 2 CELL INTO BLOCK 1
	DAC*	DTFB1P
	LAC	DTBLSV		/BLOCK 1 CELL INTO BLOCK 2
	DAC*	DTFB2P
	ISZ	DTFB1P
	ISZ	DTFB2P
	ISZ	DTCT
	JMP	DTSWP2		/CONT.
DTSLOK	LAC	DTCT1		/CURR. UNIT
	DAC	DTUNIT		/INTO FILE BLOCK 1
	LAC	DTSLOT		/STORE CURRENT DAT SLOT #
	DAC	DTFLS1		/IN FILE BLOCK 1
	LAC* DTARGP		/IS THIS CALL AN INIT?
	AND DLIT77
	XOR DLIT1
	SZA!CLC			/YES, USE NEW I/O BIT
	JMP DTSWMD
	DAC SWAPSW		/SET SWAP SW
	LAC DTCT2
	SKP
DTSWMD	LAC DTIOSW
	DAC DTIOSW		/T STORE
	SNA			/OUTPUT?
	JMP DTONW			/NO
	SAD DTIOSW+DABSIZ		/IS FILE 2 OUTPUT?
	JMP D2SAME		/YES, SWAP MORE MAYBE
DTSWME	SAD DTIOSW+DABSZ2		/IS FILE 3 OUTPUT?
	JMP D3SAME		/YES, SWAP MORE MAYBE
	JMP DTONW
D2SAME	LAC SWAPSW		/SWAP SW SET?
	SZA
	LAC DTSKNT+DABSIZ		/ENTER EXECUTED?
	SNA			/YES
	JMP D2SAM1
	LAC DTUNIT		/OUTOUT ON SAME UNIT?
	XOR DTUNIT+DABSIZ
	SNA!CLC
	JMP DTER23		/IOPS 22: 2OUTPUT FILES ON 1 UNIT
D2SAM1	LAC DTIOSW		/CHECK FILE 3
	JMP DTSWME
D3SAME	LAC SWAPSW		/SWAP SW SET?
	SZA
	LAC DTSKNT+DABSZ2		/ENTER EXECUTED?
	SNA			/YES
	JMP DTONW
	LAC DTUNIT		/SAME UNIT
	XOR DTUNIT+DABSZ2
	SNA!CLC
	JMP DTER23		/IOPS 22: 2 OUTPUT FILES ON 1 UNIT
/
DTONW	LAC*	DTARGP		/FUNCTION (3-17)=1-13
	ISZ	DTARGP		/INDEX TO ARG.3
	AND DLIT77
	TAD	(JMP DTTABL
	DAC	DTTABL
	CLA!CLL			/AC AND LINK MUST BE 0 FOR DISPATCH.
DTTABL	XX
	JMP	DTIN		/1=.INIT
	JMP	DTOPER		/2=.OPER
	JMP	DTSEEK		/3=.SEEK
	JMP	DTENTR		/4=.ENTER
	JMP	DTCLER		/5=.CLEAR
	JMP	DTCLOS		/6=.CLOSE
	JMP	DTER6		/7=.MTAPE(ILL)
	JMP	DTREAD		/10=.READ
	JMP	DTWRIT		/11=.WRITE
	JMP	DTWAIT		/12=.WAIT,.WAITR
	JMP	DTRAN		/13=.TRAN
DTBUSY	LAC	DTCALP		/BUSY-DTA I/O GOING ON
	DAC	DTARGP		/RETURN TO USER CAL
	JMP	DTDBK
/I/O UNDERWAY CHECK SUBR.
DTIOU	0
	LAC	DTUND		/I/O UNDERWAY
	SZA			/NO
DTBUSB	JMP	DTBUSY		/WAIT
	LAC	DTWRWT		/CONTINUE MORE I/O
	SZA!CMA
	JMP*	DTWRWT		/YES
	JMP*	DTIOU		/OK-EXIT
/DTA-DISK-INTERRUPT SERVICE
DTPIC	DAC DTAC			/SAVE AC
	LAC* DLIT0
	DAC DOUT			/SAVE PC, LINK, EXT. MODE, MEM. PTCT.
	LAC DTION
	JMP DTSTON
DTINT	JMP DTPIC			/PIC ENTRY
	DAC DTAC			/API ENTRY, SAVE AC
	LAC DTINT			/SAVE PC, ETC.
	DAC DOUT
	IORS			/CHECK PIC STATUS
	SMA!CLA			/FOR RESTORATION AT DISMISSAL
	LAW 17740			/PIC OFF, BUILD IOF
	TAD DTION			/PIC ON, BUILD ION
DTSTON	DAC DTDVSW
/
/RP15 DISK STATUS REGISTER "A" BIT ASSIGNMENTS
/	0-2=SELECTED UNIT
/	3-5=FUNCTION
/	0=IDLE,1=READ,2=WRITE,3=RECALIBRATE
/	4=SEEK,5=READ ALL,6=WRITE ALL, 7=READ COMPARA
/	6=DONE AND ERROR FLAG INTERRUPT ENABLED
/	7=ATTENTION FLAG INTERRUPT ENABLED
/	8=GO
/	9=WRITE PROTECT ERROR
/	10=NON-EXISTENT CYLINDER ADDRESS
/	11=NON-EXISTENT SURFACE ADDRESS
/	12=NON-EXISTENT SECTOR ADDRESS
/	13=HEADER NOT FOUND
/	14=SELECTED UNIT IS WRITE PROTECTED
/	15=SELECTED UNIT IS SEEK INCOMPLETE
/	16=JOB DONE FLAG
/	17=ERROR FLAG
/RP15 DISK STATUS REGISTER "B" BIT ASSIGNMENTS
/	0-7=ATTENTION UNITS 0-7
/	8=SELECTED UNIT IS UNSAFE
/	9=PROGRAM ERROR
/	10=END OF PACK
/	11=TIMING ERROR
/	12=FORMAT ERROR
/	13=WRITE CHECK ERROR
/	14=WORD PARITY ERROR
/	15=LONGITUDINAL PARITY ERROR
/	16=SELECTED UNIT SEEK UNDERWAY
/	17=SLECTED UNIT NOT READY
	DPRSA			/READ DISK STATUS.
	DAC DKSET			/TEMP
	CLL!RAR
	SZL
	JMP DTERT		/ERR. FLAG
RFRDWT	DPCS			/CLEAR DISK STATUS.
	LAC DKSET	/RELOAD STATUS A TO GET RP UNIT
	AND (700000)		/MASK UNIT # AND IDLE TO CLEAR
	DPLF		/DONE AND ERR INTERUPT ENABLE
DTION	ION			/ION TO ALLOW OTHER INTERRUPTS
	DZM DTUND			/CLEAR I/O UNDERWAY.
DTUMSK	LAW -400
	DAC DWORD
	LAC	RPCABS		/BASE CYL. ADDR. FROM .INIT
	DAC	RPCACK		/INIT. CYL ADDR. FOR BLK 100 TEST
RPCM10	LAW	-10		/SET COUNTER
	DAC	RPCT1
	LAC	DTBLC
	AND	(1777)		/MASK HA,SA
	SAD	(304)		/IS HA,SA=6,4?
	SKP
	JMP	DTION1
DTION3	LAC	DTBLC
	AND	(776000)	/(776000
	SAD	RPCACK
	JMP	DTION2		/LOG BLK# 100 TRANSF.
	LAC	RPCACK		/ADD 3 TO CYL. ADDR TO
	TAD	(6000		/CHECK ANOTHER LOG. UNIT#
	DAC	RPCACK
	ISZ	RPCT1		/BUMP CNT - CHECK ONLY 8 UNITS
	JMP	DTION3
DTION1	CLC
	JMP	DTDISM
DTION2	LAC	DTDRGT		/CHECK DIR. REQ. SWITCH
	SZA!CLC
	JMP	DTDISM
	DAC DTDRGT		/CLEAR
	LAC DTUNIT
	DAC DTNCOR		/SET DIR. IN CORE SWITCH
	JMP DTDISM		/DATA OK, DISMISS
DTERT	LAC	DKSET		/RELOAD ST A.
	AND	(24)
	SZA			/AC>0 IF SEEK INCOMP. OR HEADER
	JMP	RPRCL		/NOT FOUND - RECALIBRATE + RETRY
	LAC	DKSET
	AND	(340)		/AC>0 IF NON-EXISTENT DISK ADDR.
	SZA
	JMP	DTER21
	LAC DKSET	/CHK. FOR WRITE PROT. ERR
	AND (400)
	SZA		/AC>0 IF ERR
	JMP DKIPS4	/IOPS4
	DPRSB			/LOAD STATUS B
	DAC	RPSTB		/STORE
/CHECK STATUS B.
/
	AND	(34)		/AC>0 IF LONG., WORD PARITY, WRITE CHK.,
	SZA			/WRITE CHECK SHOULD NEVER HAPPEN
	JMP	DPARIT		/RETRY AND PASS DATA ANYWAY
	LAC	RPSTB
	AND	(140)		/AC>0 IF FORMAT ERR OR TIMING ERR.
	SZA			/RETRY.  IF FAILS, IOPS 12 PLUS
	JMP	RP12RT		/STATUS B
	LAC	RPSTB
	AND	(200)		/END OF PACK
	SZA			/IF AC>0 - IOPS-21
	JMP	DTER21
RPER12	LAC	RPSTB		/FALLS THROUGH HERE
	DAC*	DLIT3		/ON PROGRAM ERROR OR
	CLA			/SELECTED UNIT UNSAFE
	JMP	DTER12		/IOPS 12
DKIPS4	LAC (DRETRY
	DAC* DLIT3
	LAC DLIT4
	JMP DTM4
RPRCL	LAC	(30000		/LOAD RECALIBRATE FUNCT.
	XOR	RPUNIT		/AND RETRY.
	DPLF
	DPRSB		/2 INSTRUS. FOR 4 MICROSEC. DELAY
	DPRSB
	DPSA			/TEST ATTENTION FLAG
	JMP	.-1
	ISZ	DTERCT
	JMP	DRETRY		/GO RETRY
	JMP	DKER20		/DISK FAILURE
RP12RT	ISZ	DTERCT		/RETRY ROUTINE FOR FORMAT
	JMP	DRETRY		/OR TIMING ERROR
	JMP	RPER12
DKER20	LAC DKSET			/DISK HARDWARE OR ADDR. PARITY.
	DAC*	DLIT3		/(.MED
	LAW	20
	JMP	DTM4		/DISK FAILURE.
DTER21	LAC	DKSET		/ILLEGAL DISK ADDRESS.
DTR21A	DAC*	DLIT3
	LAW	21
	JMP DTM4
DPARIT	ISZ DTERCT		/IF OVERFLOW, TAKE DATA ANYWAY
	SKP
	JMP RFRDWT		/TAKE DATA ANYWAY.
DRETRY	JMS DKSET			/REISSUE DISK TRANSFER
	LAC DTERCT		/0 IF RETRY COUNT OVERFLOWS
	DAC DTUND			/I/O UNDERWAY SW
DTDISM	LAC	(JMP DTPIC	/RESTORE PIC INTERR. ENTRY
	DAC	DTINT
	LAC	DTAC		/RESTORE AC
DTDVSW	XX			/ION IF PIC, LAC  DTAC IF API
	DBR
	XCT .+1
	XCT .+1
	JMP*	DOUT		/INTERR. EXIT
	.EJECT
/
/INIT DTA ROUTINE - MAINSTREAM
DTIN	ISZ	DTARGP		/INDEX TO BUF. SIZE ARG.
	LAC	(377		/RETURN 255 AS BUF. SIZE
	DAC*	DTARGP
	LAC	DTCT2		/I OR O
	DAC	DTIOSW		/OUTPUT=1, INPUT=0
	ISZ	DTARGP		/INDEX TO NORM. EXIT
	LAC	DLMBIT		/DTMBIT)=FILE BITMAP POINTER
	JMS	DTBFC2		/CLEAR FILE BIT MAP (L=0)
DTIN2	JMS	DTIOU		/YES-WAIT
DTONCE	CAL	64		/API CORE ADDR.-MODIFIED
/
/DTONCE+1 TO DTSTOP EXCLUSIVE USED FOR TEMP. STORE. AFTER 1ST .INIT.
/DTAC=AC STORAGE CELL DURING INTERRUPT
/DOUT=INTERRUPTED RETURN ADDRESS
/DTERCT=PARITY COUNTER (INIT. TO-10)
/DTBLC=BL# BEING SEARCHED FOR
/DTEOTS=END ZONE (EOT) ENTERED SWITCH (-=EOT, +=NO EOT)
/DTCSLT=DAT SLOT FOR I/O UNDERWAY
/DTCCA=CURRENT ADDR. (C.A.) POINTER FOR TRANSFER.
/RPCABS=STORAGE FOR BASE SUPERUNIT ADDRESS.
/RPUNIT=PHYSICAL DISK PACK DRIVE #
/RPSTB=STORAGE FOR STATUS B
/RPCACK=TEMP STORAGE FOR CHECK BLK# 100 ROUTINE
/DTDMOD=DATA MODE (15-17)
/DTHPTS=DTH BUFFER LINE HEADER POINTER.
/DTTR=13000 FOR READ, 15000 FOR WRITE.
/DTUCKP=USER LINE BUFFER CHECKSUM POINTER.
/DTUDP=USER LINE BUFFER DATA POINTER (MODIFIED).
/DTUHP=USER LINE BUFFER HEADER POINTER.
/DTWC=2'S COMP. TRANSFER WORD COUNT.
/DTCKSM=LINE CHECKSUM.
/DTWPC=WORD PAIR COUNT.
DTAC	16			/.SETUP
DOUT	DPSJ			/DISK DONE FLAG SKIP
DTCCA	DTINT			/DKA INT. SERV. ADDR.
RPCABS	CAL	64
RPUNIT	16
RPSTB	DPSE		/SKIP ON ERROR FLAG
RPCACK	DTINT
	JMP DTEOTS
DTERCT	0
DTBLC	0
DTDMOD	0
DTEOTS	LAC	DJSTOP		/SIGN BIT MUST INITIALLY = 0 FOR DTEOTS
DTCSLT	DAC	DTONCE
DTHPTS	LAS			/READ AC SWITCHES
DTTR	AND	(770)		/DRIVE #(9-11) SUPER UNIT# (12-14)
DKCLR3	DAC	DTHPTS		/MASK BITS 9-14 AND STORE
DKNUM	AND	(700)		/MASK BITS 9-11
DKUNIT	JMS	RPR9		/AND SET UP RP UNIT#
DTUCKP	DAC	RPUNIT		/TOTAL ROT LEFT 9 AND STORE
DTUDP	LAC	DTHPTS
DKBUFP	AND	(70)		/MASK BITS 12-14
DTUHP	DAC	DTHPTS		/STR SUPUNT# TIMES 10(8)
DTWC	RAL!CLL			/NOW TIMES 20(8)
DTCKSM	TAD	DTHPTS		/NOW TIMES 30(8)-THAT IS
DTWPC	JMS	RPR9		/30(8)*SUPUNT#=20(8)*SUPUNT#+10(8)*SUPUNT#
RPTEMP	RAL			/TOTAL OF 10 SHFTS
RPCT1	DAC	RPCABS		/STORE BASE CTL. ADDR.
	JMP	DTSTOP
RPR9	0
	RAL!CLL
	RTL
	RTL
	RTL
	RTL
	JMP*	RPR9
DTBMIN=DTFAKE			/BIT MAP BLOCK IN SWITCH (NON0=IN)
DTBMOT=DTFAKE+1			/BIT MAP BLOCK OUT SWITCH (NON0=OUT)
/
/STOP DTA ROUTINE
DTSTOP	DZM	DTWRWT		/CLEAR OUTPUT WAIT SWITCH
	DZM	DTEOF		/CLEAR EOF SWITCH
	DZM	DTCLSS		/SET .CLOSE SWITCH
	DZM	DTSKNT		/CLEAR .SEEK, .ENTER SWITCH
	DZM	DTWREX		/CLEAR .WRITE EXECUTED SWITCH
	DZM	DTBMIN		/BIT MAP BLOCK IN SWITCH
	DZM	DTBMOT		/BIT MAP BLOCK OUT SWITCH
	LAC	DTMTP4		/JMP DTAPE1
	DAC	DTOUT
	DAC DTNCOR		/CLEAR DIR IN CORE SWITCH
	JMP	DTDBK-1
/WAIT DTA ROUTINE
DTWAIT	LAC	DTCT2		/0 IF .WAIT
	SNA				/1 IF .WAITR
	JMP	DTDBK-1
	LAC	(700000		/GET LINK, ETC.
	AND	DTCALP
	DAC	DTCALP
	LAC*	DTARGP		/BUSV ADDR.
	AND	(77777
	XOR	DTCALP
	ISZ	DTARGP
	DAC	DTCALP
	JMS	DTIOU		/CHECK I/O UNDERWAY
DTDBK	DBR
	XCT .+1
	XCT .+1
	JMP*	DTARGP		/NORM. EXIT
	.EJECT
/.OPER ROUTINE TO INTERPRET:
/.DLETE (SUBFUNCTION 1)
/.RENAME (SUBFUNCTION 2)
/.FSTAT (SUBFUNCTION 3)
DTDLUN=DTEOF			/DELETE, RENAME UND-WAY SWITCH
DTUDRP=DTCKSM			/USER DIR ENTRY POINTER (INDEXED)
DTOPER	LAC	DTDLUN		/DELETE OR RENAM UNDERWAY
	SZA			/NO, IF 1ST PASS THUR
	JMP	DTLET3		/YES
	LAC	DLFAKE		/SETUP FOR DELETE
	DAC	DTUDRP
	JMS	DTNTRZ		/DZM DT1SAV OR DT2SAV
	CLA
	XCT	DTNTR3		/CLEAR LAST WD OF DTNSAV
	JMS	DTCKCL		/CHECK DIRECTORY FOR THIS FILE
	DAC	DTNXBK		/SAVE FOR AC=0ON NOT FOUND
	SNA
	JMP	DTFST		/NOT FOUND-RETURN WITH AC=0
	XCT DTSK5		/PICK UP FIRST BLOCK # OF FILE.
	XOR (400000		/CLEAR FILE COMPLETE BIT.
	DAC DTNXBK
	LAC	DTCT2		/SET UP SUBFUNTION DISPATCH
	TAD	(JMP DTOPTB
	DAC	DTOPTB-1
	LAW	-4
	TAD	DTCT2		/CHECK SUBFUNCTION
	SPA!CLA			/1-3 LEGAL ONLY
	XX			/DISPATCH TO SUBFUNCTION
DTOPTB	JMP	DTER6		/ILL. HANDLER FUNCTION
	JMP	DTLET		/1=.DLETE
	JMP	DTREN		/2=.RENAM
DTFST	LAC*	DTARGP		/3=.FSTAT
	XOR	(100000		/RETURN TYPE (1 IN 0-2)
	DAC*	DTARGP		/TO USER
	LAC	DTNXBK		/PICK UP BL#, RETURN TO USER IN AC
	DZM	DTCLSS
	JMP	DTAPE1
/.RENAM ROUTINE
DTREN	JMS	DTNTRZ		/NEW NAME INTO DTESAV
	XCT	DTSK5		/GET 4TH WD OF OLD ENTRY
	XCT	DTNTR3		/SAVE IN DTESAV+3
	DAC	DTBMIN		/NO NEED TO RERECORD
	DAC	DTBMOT		/FILE BIT MAPS
/.DELETE ROUTINE
DTLET	CLC
	DAC DTNCOR		/CLEAR DIR IN CORE SWITCH
	DAC	DTDLUN		/SET DELETE UNDERWAY SWITCH
	DAC	DTIOSW		/SIMULATE WRITE
	DAC	DTWREX		/USE .CLOSE TO MODIFY
	LAC	DLTDIR		/SETUP FOR TRAN OF
	DAC	DTBMPT		/DIR BIT MAP TO DIR ENTRY SECTION
DTLET3	ISZ	DTARGP		/INDEX ENTRANCE ARG. POINTER
	JMP	DTCLOS		/FILE BIT MAP+DIRECTORY
	.EJECT
/CHECK DIRECT. IN CORE SUBR.
DTDRCK	0
	JMS	DTIOU		/I/O UNDERWAY
	LAC	DTNCOR		/D IN 
	SAD	DTUNIT		/NO
	JMP	DTDRC1		/YES - CHECK PARITY.
	LAC	(13000		/READ PARAM
	JMS	DTDRIN		/BRING IN DIRECTORY
	JMP	DTDRCK+1	/WAIT FOR DIRECTORY
DTDRC1	LAC DTERCT		/DIRECTORY UNACCEPTABLE WITH PARITY ERROR.
	SZA			/OK.
	JMP* DTDRCK		/OK.
DTER61	LAW 61			/DIRECTORY OR FILE BIT MAP PARITY ERROR.
	JMP* DLIT4
/
/CALL IN DIRECTORY SUBR.
DTDRIN	0
	DAC	DTTR		/TRANSFER DIRECTION SWITCH
	LAC	DLT100
	DAC	DTNXBK		/BL# TO TRANSFER
	DZM	DTDTR		/TRANSFER FORWARD
	DZM	DTDRGT		/SET IND. TO SET DIR IN CORE SWITCH
	LAC	DTCLSS		/0 IF SEEK, ENTER
	SZA
	LAC	(40		/NOT 0 IF CLOSE (DTBUF-1
	TAD	DLTDIR		/(DTRDIR
DTDRN1	JMS	DTWCS		/SETUP WC,CA
	JMP*	DTDRIN
DTUDRR=DTDVS			/USER DIR. ENTRY POINTER (FIXED)
DTCTS=DTCCA			/ENTRY COUNT (-3)
DTCT1S=DTWC			/MATCH COUNT (-4)
DTDES=DTWCS			/DTA DIR. ENTRY SECTION POINTER (INDEXED)
/DIRECTORY SEARCH SUBR.
DTSK1	0
	DAC	DTUDRR		/USER DIR. ENTRY POINTER
	DZM	DTDTR		/SET TRANSF. DIRECTION=FORWARD
DTSK2	CLC			/SYSTEM TAPE?
	XOR* DLTSYS		/WD3 OF SYS BIT MAP
	SNA!CLA			/NO,56 FILES
	LAW -30			/YES, 24 FILES
	SMA
	LAW -70
	DAC	DTFPCT		/DIR. POINTER=DTDIR+40=DTBUF
	XOR (777700
	DAC DBLKLC		/50 IF 24;10 IF 56
	LAC	DLTBUF		/DIR. POINTER=DTDIR+40=DTBUF
DTSK3	DAC	DTDES		/ENTRY SECTION POINTER
	DAC	DTCURE		/CURR. ENTRY, WD0, POINTER
/NEXT FILE NAME ENTRY
	LAC	DTUDRR		/USER DIR. ENTRY POINTER
	DAC	DTUDRP
	LAW	-4
	DAC	DTCT1S		/MATCH COUNT
	DAC	DTCTS		/COUNT OF ENTRY WDS TO CHECK
	ISZ	DTCTS
/NEXT WORD OF CURRENT ENTRY
DTSK5	LAC*	DTDES		/DTA DIR. ENTRY (.E.)
	SAD*	DTUDRP		/USER D.E.
	ISZ	DTCT1S		/WD N OF ENTRY SATCHES
	ISZ	DTDES		/NEXT WD OF DTA ENTRY
	ISZ	DTUDRP		/NEXT WD OF USER ENTRY
	ISZ	DTCTS		/ENTRY WD COUNT
	JMP	DTSK5		/CONT. MATCH CHECK
DTSK6	LAC	DTCURE
	ISZ	DTCT1S		/MATCH
	SKP			/N
	JMP*	DTSK1		/YES-CURRENT ENTRY POINTER IN AC
	TAD	DLIT4		/INDEX TO NEXT ENTRY
	ISZ	DTFPCT		/INDEX FILE ENTRY CT.
	JMP	DTSK3		/NEXT ENTRY
	CLA
	JMP*	DTSK1		/YES-CAN'T FIND FILE NAME
/CLOSE FILE SUBR
DTCLOS	JMS	DTIOU		/I/O UNDERWAY WAIT
	LAC	DTIOSW		/I OR O
	SNA
	JMP	DTFND1		/INPUT-CLEAR SWITCHES EXIT
	LAC	DTWREX		/WRITE EXECUTED AFTER .ENTER
	SZA
	JMP	DTCLS2		/YES
	JMS	DTCBIT		/NO-CLEAR BIT MAP
	JMP	DTFND1
DTCLS2	LAC	DTEOF		/EOF BUF IS OUT
	SPA!CLC
	JMP	DTCLS3
	DAC	DTEOF		/SET EOF SWITCH
	DZM DTCT2			/FAKE DATA MODE = IOPS BIN
	LAC	(15000		/OUTPUT
	JMS	DTMCK
	LAC	DLEOFH		/EOF HEADER POINTER (DTEOFH
/FAKE ARG FOLLOWS - USED AS VARIABLE
DTDRGT	LAW -1			/GET DIR IND. (0=GET)
	JMP	DTWRT1
	.EJECT
DTCLS3	LAC	DTBMIN		/FILE BIT MAP BLOCK IN
	SZA!CLC
	JMP	DTCLS4
	DAC	DTBMIN		/SET BIT MAP IN SWITCH
	LAW -50
	TAD DBLKLC
	SNA!CLA			/NON 0 IF 56 ENTRIES
	LAW -4
	TAD DLIT77
DTCLT	DAC	DTNXBK		/BIT MAP BLOCK #
	LAC	DTFPCT		/FILE COUNT
	TAD	(10
	DAC	DTFPCT
	SMA!CLC
	JMP	DTCLQ		/IN THIS BLOCK
	TAD	DTNXBK		/DECR. BIT MAP BL# BY 1
	JMP	DTCLT
DTCLQ	LAC	DTBUSB
	DAC	DTOUT
	DZM	DTDTR		/SET TRANSF. DIRECT. SW. = FORW.
	JMP	DTSEK1		/READ BIT MAP BLOCK INTO DIR. BIT MAP
DTCLS4	LAC	DTBMOT		/FILE BIT MAP BLOCK OUT
	SZA!CLA
	JMP	DTCLS6
	SAD DTERCT		/PARITY ERROR COUNT.
	JMP DTER61		/ERROR ON FILE BIT MAP.
	DAC	DTBMOT		/SET BIT MAP OUT SWITCH
	LAC	DTFPCT		/REL. BIT MAP POINTER
	CLL!RAL			/X 40
	RTL
	RTL
	TAD	DLTBUF		/(DTBUF
	DAC DTBMOT		/SET FILE BIT MAP OUT SWITCH.
DTOLBM=DTOBCK			/RELATIVE FILE BIT MAP ADDRESS
DTXROL=DTMPS			/OLD FILE BIT MAP ADDRESS
	DAC	DTOLBM
	DAC	DTXROL		/OLD BIT MAP ADDR.
	LAC	DLTDIR		/DIR. BIT MAP ADDR.
	JMS	DTXOR		/XOR OLD FILE BIT MAP INTO DIR. BIT MAP
	LAC	DLMBIT		/NEW FILE BIT MAP ADDR
	DAC	DTXROL
	LAC	DTOLBM		/OLD BIT MAP ADDR
	JMS	DTXOR		/XOR NEW INTO OLD BIT MAP
	LAC	(15000
	JMP	DTSEK2		/OUTPUT BIT MAP BLOCK
/
	.EJECT
/SUBROUTINE TO XOR BIT MAP 1 INTO BIT MAP 2
/ALSO CLEARS BIT MAP 1 IF LINK = 0
DTXOR	0
DTXRNW=DTMPP			/NEW BIT MAP ADDRESS
	DAC	DTXRNW		/BIT MAP 2 ADDR
	LAW	-40
	DAC	DTCTS
DTXOR1	LAC*	DTXROL		/BIT MAP 1 POINTER
	XOR*	DTXRNW		/BIT MAP 2 POINTER
	DAC*	DTXRNW
	SNL!CLC			/DO NOT CLEAR BIT MAP 1, CLC FOR SETTING DTNCOR
	DZM*	DTXROL		/CLEAR BIT MAP 1
	ISZ	DTXROL
	ISZ	DTXRNW
	ISZ	DTCTS
	JMP	DTXOR1
	JMP*	DTXOR
DTCLS6	SAD	DTCLSS		/FILE CLOSED (AC=0 ON ENTRY).
	JMP	DTFEND		/YES-CLEAR SWITCHES, EXIT
	JMS	DTDRCK		/LOAD DIRECTORY INTO DTBUF
	LAC	DTBMPT		/DT. BIT MAP POINTER
DTCLRP=DTMPS			/COUNTER
	DAC	DTCLRP		/NIT. DIR ENTRY SECT. POINTER
	LAW	-40		/DIR. ENTRY SECTION COUNT
	DAC	DTCT
	LAC	DLTBUF		/(DTBUF)
	DAC	DTCT1
DTCLS5	LAC*	DTCLRP		/TRANSFER DIR. BIT MAP
	DAC*	DTCT1		/TO FRONT OF DIR. ENTRY SECTION
	ISZ	DTCLRP
	ISZ	DTCT1
	ISZ	DTCT
	JMP	DTCLS5
	LAC	DLSAV		/(DTESAV
	.EJECT
DTFIN=DTBFC2			/DTESAV POINTER
	DAC	DTFIN
	LAC	DTCURE		/ADD 40 TO ACCOUNT FOR BLOCK MOVE
	TAD	(40
	DAC	DTCURE
	LAW	-4
	DAC	DTCT
DTCLS7	LAC*	DTFIN		/NEW FILE NAME (4 WDS)
	DAC*	DTCURE		/INTO DIRECTORY ENTRY SECTION
	ISZ	DTFIN
	ISZ	DTCURE
	ISZ	DTCT
	JMP	DTCLS7
	LAC	(15000		/REWRITE DIRECTORY
	JMS	DTDRIN
	DZM	DTCLSS		/CLEAR CLOSE IND.
	JMP	DTCLOS
DTFEND	DAC	DTNCOR		/CLEAR DIR IN CORE SWITCH
DTFND1	DZM DTFLS1		/CLEAR FILE 1 SLOT #
DJSTOP	JMP	DTSTOP		/CLEAR OTHER SWITCHES+EXIT
/.TRAN ROUTINE
DTRAN	JMS	DTIOU		/I/O UNDERWAY
	LAC*	DTARGP		/BL#
	JMS	DTSET		/SETUP BL#, ETC
	ISZ	DTARGP
	LAC*	DTARGP 		/CORE ADDR.
	ISZ	DTARGP
	DAC	DTWCS		/TEMP
	LAC*	DTARGP		/WC
	DAC	DWORD
	LAC	DTWCS		/CA
	JMS	DTWCS		/SETUP CA AND START TRAN.
	JMP	DTAPE1		/NORM USER EXIT
/SUBROUTINE TO SET UP BLOCK #, TRANSFER DIRECTION
DTSET	0
	DAC	DTNXBK
	LAC	DTCT2		/TRANSFER DIRECTION
	RTR
	SMA!CLC			/OUTPUT
	LAC	(11000		/INPUT
	XOR	(2000
	AND	(17000
	DAC	DTTR		/WRITE (15000) OR READ (13000)
	SZL!CLA			/FORWARD
	CLC			/REVERSE
	DAC	DTDTR		/TRANSFER DIRECTION SWITCH
	JMP*	DTSET
	.EJECT
/SUBR. TO SET UP CA, WC AND TRANSFER
DTWCS	0
	DAC	DTCCA		/ADDR.-1
	LAW	-5
	DAC	DTERCT		/SET PARITY RETRY COUNT
	DAC	DTUND		/SET I/O UNDERWAY SWITCH
	LAC	DTFLS1
	DAC	DTCSLT		/SAVE CURR. SLOT POINTER
	LAC	DTUNIT		/CHECK FOR LEGALITY OF
	CLL			/
	AND	(700000		/MASK BITS 0-2
	RTR
	RTR
	DAC	RPTEMP		/STORE 2* UNIT# IN BITS 0-7
	RAR
	TAD	RPTEMP		/NOW 3* UNIT# IN BITS 0-7
	TAD	RPCABS		/BASE CYL. ADDR FROM .INIT
	DAC	DTBLC		/ABSOLUTE CYLA IN (0-7)
	LAC	DTNXBK		/LOGICAL BLOCK NUMBER
	TAD	(-1100		/-1100(8)
	SPA			/CHECK FOR ILLEGAL BLOCK NUMBER
	JMP	DTWCS1		/GO ON AND FINISH CONVERSION
	LAC	DTNXBK		/ILLEGAL BLOCK NUMBER
	JMP	DTR21A		/OUTPUT BAD BLOCK# WITH ERROR
DTWCS1	LAC	DTNXBK		/CONVERT LOGICAL BLK# TO
	DAC	RPTEMP		/ABSOLUTE PACK ADDR.
DTWCS2	TAD	(-310
	SPA			/BLK# < 310(8)?
	JMP	DTWCS3		/GO GET HEAD ADDR
	DAC	RPTEMP		/STORE REMAINDER
	LAC	DTBLC
	TAD	(2000)		/ADD ONE TO CA
	DAC	DTBLC
	LAC	RPTEMP
	JMP	DTWCS2
DTWCS3	LAC	RPTEMP
DTWCS4	TAD	(-12
	SPA
	JMP	DTWCS5
	DAC	RPTEMP
	LAC	DTBLC
	TAD	(40)		/BUMP HEAD ADDRESS
	DAC	DTBLC
	LAC	RPTEMP
	JMP	DTWCS4		/RECYCLE
DTWCS5	LAC	DTBLC
	TAD	RPTEMP		/INCLUDE SECTOR ADDRESS
	DAC	DTBLC
	JMS	DKSET
	JMP*	DTWCS
/SUBR TO SET UP DISK I/O AND EXECUTE IOT'S
DKSET	0
DKSET2	LAC	DTCCA
	DPCA			/LOAD CA
	LAC DWORD
	DPWC			/LOAD WC
	LAC	DTBLC
	DPLA			/LOAD CYL. ADDR,HA,SA
	LAC	RPUNIT		/DESELECT CURRENTLY ACTIVE DRIVE
	TAD	(400000		/TO ALLOW READ ONLY SWITCHES
	DPLF			/TO ACTIVATE
	LAC	DTTR
	XOR	(13000
	SZA			/ZERO IF INPUT
	LAC	(10000		/OUTPUT
	TAD	(10000
	XOR	RPUNIT		/LOAD PACK PHYS. UNIT#
	DPCS			/CLEAR STATUS
	DPLF			/LOAD FUNCTION LESS GO BIT TO TEST UNIT
	DPRSB			/READY.
	NOP			/ADDED INSTR. FOR 4 MICRS. DELAY
	DPRSB			/ADDED INSTR. FOR 4 MICRS. DELAY
	RAR
	SZL	/L=1 IF SELECTED NOT READY
	JMP	RPUOFL		/AC=0 IF WRITE PROT. ERR. -IOPS4
	LAC	(5000		/JAM GO BIT, JB. DONE AND ERR INTERP.
	DPCS			/ENABLE-CLEAR STATUS
	DPLO			/LOAD GO BIT+INTERRUPT ENABLES
	ION			/ALLOW OTHER INTERRUPTS
	JMP*	DKSET
RPUOFL	LAC (DKSET1	/IOPS 4 ON UNIT OFF LINE
	DAC* DLIT3
	LAC DLIT4
	JMP DTM4
DKSET1	LAC DTERCT	/RESET I/O UNDERWAY
	DAC DTUND
	JMP DKSET2
/
/.READ, .WRITE COMMON SETUP SUBR.
DTUWC=DTXOR			/USER 2'S COMP. WC FOR ARG. LIST
DTMCK	0
	DAC	DTTR		/READ (13000) OR WRITE (15000)
	LAC	DTSKNT		/.SEEK, .ENTER SWITCH
	SNA!CLC
	JMP	DTER12		/.SEEK, .ENTER NOT EXECUTED (DTER11)
	XCT*	DTMCK		/L.B. OR DTA BUF. L.B. ADDR.
	DAC	DTUHP		/HEADER POINTER
	DAC	DTUDP		/DATA POINTER
	ISZ	DTARGP
	LAC*	DTARGP		/USER WC
	DAC	DTUWC
	LAC	DTCT2		/DATA MODE
	DAC	DTDMOD
	ISZ	DTMCK		/INDEX TO DUMP EXIT
	SAD DLIT4
	JMP	DTMCK2		/DUMP MODE
	LAC*	DTUHP		/COMPUTE W.C. FROM L.B.H. W.P.C
	JMS	DTGWPC
	ISZ	DTMCK		/IOPS, IMAGE EXIT
	JMP*	DTMCK		/EXIT,
/DUMP MODE
DTMCK2	LAC	DTUWC		/SAVE USER WC
DTWCSV=DTGWPC
	DAC	DTWCSV
	DZM	DTWPC
	XCT*	DTMCK		/JMP DTRDUM OR JUMP DTWDUM
/
/SUBR. TO TRANSF. WPC FROM HEADER TO DTWPC
DTGWPC	0
	RTR
	RTR
	RTR
	RTR
	AND	(776
	DAC	DTWPC		/T. STORE L.B.W.P.C.
	SNA
	JMP DTER23
	AND (400
	SNA!CLA
	JMP*	DTGWPC		/L.B.W.C. INAC
DTER23	TAD	DLIT4		/IOPS 23-ILL. WPC.(0 OR GREATER THAN 177)
	JMP	DTER17
/SUBR. TO ADD TO CHKSUM AND INDEX COUNTS
DTUPTR	0
	TAD	DTCKSM		/ADD DATA WD TO CKSM.
	DAC	DTCKSM
	ISZ	DTUDP
	ISZ	DTRHPT
	ISZ	DTBFCT		/INCR DTA BUF COUNT
	ISZ	DTWPC
	JMP*	DTUPTR
	JMP	DTRDE		/END LINE
/
/SUBR. TO CHECK ACTIVE FILE
DTCKCL	0
	LAC	DTCLSS		/PREVIOUS FILE CLOSED
	SZA!CLA
	JMP	DTER10		/NO-FILE STILL ACTIVE
	JMS	DTDRCK		/CHECK FOR DIRECTORY IN CORE
	LAC*	DTARGP		/USER D.E. POINTER
	JMS	DTSK1		/DIR. SEARCH FOR FILE
	DAC	DTCLSS		/CLEAR OR SET CLOSE SWITCH
	JMP*	DTCKCL
/DTA SEEK FILE SUBR
DTSEEK	LAC	DTIOSW
	SZA!CLC
	JMP	DTER10		/ILL. DATA MODE (.SEEK ON OUTPUT FILE) (DTER7)
	JMS	DTCKCL		/CHECK DIRECTORY FOR THIS FILE
	SNA!CLC			/DTA DIR. ENTRY POINTER IN AC
	JMP	DTER14		/FILE NOT FOUND (DTER13)
	XCT DTSK5			/PICK UP FIRST BLOCK # OF FILE.
	XOR (400000		/CLEAR FILE COMPLETE BIT.
	DAC DTNXBK		/FIRST BLOCK # TO READ.
	DAC DTSKNT		/SET .SEEK, .ENTER EXECUTED SWITCH.
DTSEK1	LAC	(13000
DTSEK2	DAC	DTTR		/INPUT
	DAC	DTNCOR		/CLEAR DIR. IN CORE SWITCH
	XOR	(13000
	SZA
	JMP	DTCOUB		/OUT
	DZM	DTDMOD		/CLEAR DATA MODE TO BYPASS DUMP CHECK
	JMP	DTRNX1
/L.B. TO DTA BUF (.WRITE) OR DTABUF TO L.B. (.READ)
DTRWT	0
DTWT2	LAC*	DTUDP		/USER L.B.
	DAC*	DTHPT		/TO DTA BUF
	JMS	DTUPTR		/ADD TO CKSUM, INDEX CTS, ETC
	ISZ	DTHPT
	ISZ	DTUWC		/DONE
	JMP	DTWT2
	JMP*	DTRWT
/
/.WRITE ROUTINE
DTWRIT	JMS	DTIOU		/I/O UNDERWAY
	LAC	DTMTP4
	DAC	DTOUT
	DAC	DTWREX		/SET .WRITE EXECUTED SWITCH
	LAC	(15000
	JMS	DTMCK		/READ/WRITE COMMON SETUP
	LAC*	DTARGP
	JMP DTWDUM		/DUMP MODE WRITE ROUT.
/RETURN HERE FOR IMAGE OR IOPS MODES
DTWRT1	CLC
	TAD	DTWPC		/REMAINING BUF. AREA SIZE
	TAD	DTBFCT		/REMAINING BUF. AREA SIZE
	SMA!CLA
	JMP	DTCOUT		/NO ROOM FOR THIS LINE
DTWRT2	DAC	DTWRWT		/OUTPUT WAIT SWITCH-CLEAR
	LAC*	DTUHP
	AND	(7
	SAD	(5
	JMP	DTWRT4
	LAC*	DTUHP		/USER LBH., WD0
	AND	(377000
	XOR	DTDMOD		/DATA MODE
DTWRT3	DAC*	DTUHP
DTWRT4	ISZ	DTUHP		/CLEAR USER CKSM
	DZM*	DTUHP
	DZM	DTCKSM		/INIT CHECKSUM
	LAW	-377
	JMS	DTOBCK		/OUTPUT BUF. SIZE CHECK
	CLC			/EXCLUDE L.B.H.; WD0
DTWTM1	TAD	DTWPC		/FROM COUNT
DTWT	CMA
DTWT1	DAC	DTUWC		/ACTUAL WC (2'S COMP)
	LAC	DTHPT		/SET UP CKSM POINTER
	DAC	DTUCKP		/FOR .WRITE
	ISZ	DTUCKP
	JMS	DTRWT
	LAC	DTDMOD
	SAD	DLIT4
	JMP	DTDUMK		/DUMP MODE, CHECK FULL BOFF
DTWT4	CLC
	TAD	DTCKSM
	CMA
	DAC*	DTUCKP		/STORE 2'S COMP CKSUM IN DTABUF
DTWT5	LAC	DTEOF
	SZA			/NO EOF
	JMP	DTCOUY		/TRANSFER EOF
DTMTP4	JMP	DTAPE1		/IOPS WRITE COMPLETE
DTWRCL	JMS	DTBUFC		/CLEAR DTA BUF
	ISZ	DTARGP		/INDEX TO WC ARG
	JMP	DTWRT1		/PUT LINE IN DTA BUF
/
/OUTPUT BUFFER SIZE CHECK
DTOBCK	0
	TAD	DTWPC		/L.B. W.C.
	SPA!CLC			/OUTPUT BUF. OVERFLOW (DTER16)
	JMP*	DTOBCK
DTER17	TAD	DLIT1		/TOO MANY (4 OR MORE) FILES REFERENCED
DTER16	TAD	DLIT1		/OUTPUT BUFFER OVERFLOW
DTER15	TAD DLIT1		/DECTAPE FULL.
DTER14	TAD	DLIT2		/DTA DIRECTORY FULL
DTER12	TAD	DLIT2		/IRREC. DTA ERR. MK. TK., EOT DURING TRANSFER
				/.SEEK, .ENTER NOT EXECUTED (DTER11)
DTER10	TAD	DLIT2		/FILE STILL ACTIVE
DTER6	TAD	(6		/ILL HANDLER FUNCTION
DTM4	DZM DTUND	/ZERO I/O UND SWT. IN CASE ^P
	JMP*	DLIT4		/KM-9 ERR. LOC (.MED+1=4)
/CLEAR OUTPUT BUF. SUBR.
/ALSO NEEDED FOR INPUT BECAUSE OF POINTER INITIALIZATION
DTBUFC	0
	LAC	(377		/INIT DUMP MODE
	DAC	DTROOM		/BUFF SIZE
	LAC	DTIOSW
	RAR
	LAC	DLTBUF		/BUF. (WD0) POINTER (DTBUF
	SZL!STL			/DO NOT MODIFY DTHPT ON INPUT
	DAC	DTHPT		/DTA BUF HEADER POINTER
	DAC	DTRHPT		/FOR READ
	JMS	DTBFC2		/CLEAR BUF, LINK=1
	JMP*	DTBUFC
/CLEAR SPECIFIED AREA SUBR.
DTBFC2	0
	DAC	DTBFC3
	LAW	-40		/CLEAR 40
	SZL
	AND	DTUMSK		/CLEAR 400, DTUMSK=777400
DTCLCT=DTMPP
	DAC	DTCLCT		/DTCLCT=DTMPP
	DAC	DTBFCT		/INIT BUF SIZE CT.
	ISZ	DTBFCT
DTBFC1	DZM*	DTBFC3
	ISZ	DTBFC3
	ISZ	DTCLCT
	JMP	DTBFC1
	JMP*	DTBFC2
DTBFC3	0			/CLEAR POINTER
/
/OUTPUT CURR. IOPS BUFFER
DTCOUT	LAC	(DTWRCL		/SET RETURN FROM INT.
	DAC	DTWRWT		/SET OUTPUT WAIT SWITCH
DTCOUY	LAC	DTBUSB
	DAC	DTOUT
DTCOUZ	LAC	DTCNBK		/CURR. BL# TO WRITE
	DAC	DTNXBK
	SPA!CLC
	JMP	DTER16		/DECTAPE FULL (DTER15)
	LAC DTWRWT
	SNA!CLA			/IF DTWRWT IS NON 0,ALWAYS GET NEXT BLK #
	LAC	DTEOF		/EOF SWITCH SET?
	JMS	DTMAP		/FIND NEXT FREE BLOCK
	DAC*	DTLINK		/DATA LINK POINTER
DTCOUB	LAC	DLTBUF		/(DTBUF
	JMS	DTWCS		/SETUP WC,CA AND BEGIN TRAN.
DTOUT	XX			/JMP DTAPE1 OR JMP DTBUSY
/
/DUMP MODE OUPUT
DTWDUM	JMS	DTDUMB
DTDUMX	XCT DTXXX				/JMS DTBUFC OR NOP
	JMP	DTWT1
/
DTDUMB	0
	XCT*	DTDUMB		/JMS DTBUFC (WRITE) OR NOP (READ)
	ISZ	DTDUMB
	LAC	DTWRCL		/SET SWITCH TO CLEAR
	DAC	DTXXX		/OUTPUT BUFF (JMS DTBUFC)
	LAC	DTROOM
	TAD	DTWCSV
	SMA			/MORE THAN 3 7 TO TRANSFER
	JMP	DTDUMZ		/LAST ELEMENT OF TRANSFER
	DAC	DTWCSV		/SAVE REMAINDER
	LAW	-2
	TAD	DTDUMB		/RET. ADDR. FOR TRANS. COMP
	DAC	DTWRWT		/=I/O WAIT SWITCH
	LAC	DTBUSB		/JMP DTBUSY
	DAC	DTOUT
	CLC
	TAD	DTROOM		/FILL IN BUFF
	CMA
DTDUMY	XCT*	DTDUMB		/JMP DTWT1(WRITE) OR JMP DTNSH1
DTDUMZ	DZM	DTWRWT		/CLEAR I/O WAIT SWITCH
	DAC	DTROOM		/SPACE LEFT FOR NEXT DUMP
	SNA
	JMP	.+3		/FULL BUFF, DO NOT NOP CLEAR BUFF
	LAC	DTLNOP		/SET SWITCH NOT TO CLEAR OUTPUT BUFF
	DAC	DTXXX
	LAC	DTMTP4
	DAC	DTOUT
	LAC	DTWCSV		/REMAINDER
	JMP DTDUMY
DTDUMK	LAC	DTROOM		/IF DTROOM=0, BUFF FULL
	SZA!CMA
	LAC	DTWRWT		/IF DTWRWT=0, BUFF NOT FULL
	SZA			/NO
	JMP	DTCOUZ		/YES-OUTPUT
	JMP	DTWT5		/CHECK EOF
/
	.EJECT
/DTA .READ ROUTINE
DTREAD	LAC	DTEOF		/EOF SWITCH SET?
	SZA
	JMP	DTEFX		/YES - IGNORE CALL
	JMS	DTIOU		/I/O UNDERWAY CHECK
	LAC*	DTARGP		/USER L.B. POINTER
	DAC	DTHPT
	DAC	DTHPTS
	LAC	DTMTP4		/JMP DTAPE1
	DAC	DTOUT
DTRD1	LAC	(13000
	JMS	DTMCK		/READ/WRITE COMMON SETUP, RETURN TO .+2
	LAC	DTRHPT		/DTA BUF HEADER POINTER
	JMP DTRDUM		/DUMP MODE INPUT
/RETURN HERE FOR IOPS OR IMAGE MODES
	CLC
	TAD	DTWPC		/IOPS ASCII OR BIN (AC=777777 ON RETURN)
	TAD	DTUWC
	DZM	DTDVS		/CLEAR SHORT LINE FLAG
	SMA!CLC
	DAC	DTDVS		/SET SHORT LINE FLAG
	TAD	DTWPC
	CMA
	DAC	DTWPC		/2'S COMP HEADER W.C.
DTRD2	DZM	DTCKSM		/CLEAR CHECKSUM
	JMS	DTRWT		/TRANSFER LINE TO USER L.B.
	LAC	DTDMOD
	SAD	DLIT4
	JMP	DTRDM1		/DUMP
	LAC*	DTUDP		/BYPASS
	JMS	DTUPTR		/EXCESS DATA
	JMP	.-2
DTRDM1	LAC	DTROOM		/DUMP MODE BUFF SIZE
	SZA!CMA			/IF DTROOM=0 OR
	LAC	DTWRWT		/DTWRWT=NON 0,
	SZA!CLC
	JMP	DTRNEX		/GET NEXT DUMP BLOCK
	JMP	DTAPE1
/
	.EJECT
/END INPUT LINE ROUTINE
DTRDE	LAC*	DTHPTS		/HEADER WD 0-IOPS
	AND	(7
	SAD	(5		/EOF?
	JMP	DTREOF		/YES
	ISZ	DTDVS		/SHORT LINE FLAG SET
	JMP	DTRDE1		/NO
	LAC	(60
	JMS	DTDVS		/SET D.V. BITS FOR SHORT LINE
DTRDE1	LAC	DTERCT		/PARITY RETRY COUNT
	SMA!CLA
	JMP	DTRDP		/SET D.V. BITS=PARITY
	LAC*	DTHPTS		/HEADER, WD 0
	SPA
	JMP	DTRDN		/IGNORE CKSUM ALREADY SET
	LAC	DTCKSM
	SNA			/SET D.V. BITS=CKSUM ERROR
	JMP	DTRDN
DTRDC	LAC	(20		/CHECKSUM ERR. IN LINE, 12,13=10
DTRDP	TAD	(20		/PARITY ERROR IN DTA BLOCK 12,13=01
	JMS	DTDVS		/SET DATA VALIDITY BITS
DTRDN	LAC*	DTUDP
DTRDN1	SNA!CLC
	JMP	DTRNEX		/NO MORE DATA-GET NEXT BL.
	ISZ	DTBFCT		/DATA BUF. CT = GET NEXT BL.
	JMP	DTRNOR		/NORM EXIT
DTRNEX	SAD*	DTLINK		/DATA LINK=-0
	JMP	DTREOF		/LAST BLOCK -SET EOF SWITCH
	LAC	DTNXBK		/MAST BL#
	CMA
	TAD*	DTLINK		/DATA LINK (NEXT BLOCK)
	SPA!CLA			/READ FORW
	CLC			/READ REV.
	DAC	DTDTR		/TRANSF. DIRECTION SWITCH
	LAC*	DTLINK
	DAC	DTNXBK		/DATA LINK INTO NEXT BLOCK
DTRNX1	JMS	DTBUFC		/INIT. BUFFER
	LAC	DTDMOD		/DUMP MODE?
	XOR	DLIT4
	SZA			/YES
	JMP	DTCOUB		/NO
	LAC	DTRHPT		/RESET BUFF POINTER
	DAC	DTUDP
	JMP	DTCOUB		/TRANSFER
/
	.EJECT
/SUBR. TO SET DATA VALIDITY BITS
DTDVSM=DTTABL			/DATA VALIDITY BIT MASK
DTDVS	0
	DAC	DTDVSM		/SAVE MASK
	LAC*	DTHPTS		/MASK ALL BUT BITS 0, 12,13
	AND	(777717
	XOR	DTDVSM
	DAC*	DTHPTS		/HEADER, WD0
	JMP*	DTDVS
DTEFX	ISZ	DTARGP
DTREOF	DAC	DTEOF		/SET EOF SWITCH+DROP THRU TO EXIT
DTRNOR	TAD	DTBFCT		/DECR. (BY 1) DTFCT
	DAC	DTBFCT		/BUF COUNT
DTAPE1	ISZ	DTARGP
	JMP	DTDBK
DTNSH1	DAC	DTUWC
	JMP	DTRD2		/TRANSFER LINE
/DUMP MODE INPUT
DTRDUM	JMS	DTDUMB		/SET UP FOR DUMP INPUT
DTLNOP	NOP
	JMP	DTNSH1
/
/DTA ENTER FILE ROUTINE
DTENTR	LAC	DTIOSW		/I/O SWITCH
	SNA!CLC
	JMP	DTER10		/ILL. DATA MODE (.ENTER ON INPUT FILE)(DTER7)
	JMS	DTCKCL		/CHECK DIRECTORY FOR THIS FILE
	SZA
	JMP	DTNTR6		/FOUND-WILL BE MODIFIED ON .CLOSE
	LAC	DLFAKE		/INIT GOR EMPTY SLOT SEARCH (DTFAKE
	JMS	DTSK1		/D SEARCH FOR EMPTY FILE ENTRY
	DAC	DTCLSS		/CLEAR OR SET CLOSE SWITCH
	SNA
	JMP	DTER14		/DIRECTORY FULL
DTNTR6	LAC*	DTARGP		/SAVE USER D.E. POINTER
	DAC	DTUDRP
	JMS	DTNTRZ		/SAVE USER D.E. IN DT1SAVOR DT2SAV
/
	.EJECT
	LAW	-40		/INIT BIT MAP SEARCH
	DAC	DTWMCT		/BIT MAP WORD COUNT
	LAC	DLMBIT		/FILE BIT MAP POINTER (DT1BIT) OR (DT2BIT)
	DAC	DTPONT		/CURR. FILE BIT MAP WD. POINTER
	LAC	DLTDIR		/BIT MAP ADDR. POINTER (DTDIR
	DAC	DTMTRX
	DAC	DTBMPT		/SET BIT MAP POINTER
	DZM	DTRELB		/BL. #
DL1100	LAW -1100			/INIT DT BLOCK COUNT.
	DAC DTBLOK
DLM1	LAW	-1		/INIT BIT MAP
	DAC	DTREM		/SEARCH TO
	DAC	DTSKNT		/PICK UP
	DAC	DTNCOR		/1ST BLOCK FREE
	LAC	DLIT1		/(1
	DAC	DTDIRA		/SET BIT MAP DIRECTION SWITCH
	DAC	DTDIRL		/TO FORWARD (+1)
	JMS	DTMPS		/SETUP TO EXAM. MAP, WD0
DTNTR4	JMS	DTMAP		/GET NEXT FREE BL#
	SNA			/CANNOT ALLOW A FILE TO BEGIN IN BLOCK ZERO.
	JMP DTER15		/DISK UNIT FULL.
	XOR	(400000
	XCT	DTNTR3		/STORE BL#+COMPLETION BIT IN DTESAV+3
	SMA!CLC
	JMP	DTER16		/DECTAPE FULL (DTER15)
	JMS	DTBUFC
	LAC DTLNOP
	DAC DTXXX			/SET OUTPUT DUMP SWITCH
	JMP	DTAPE1		/NORM EXIT
/SUBR. TO SAVE USER D.E.
DTNTRZ	0
	LAC	DLSAV		/(DT1SAV) OR (DT2SAV)
	DAC	DTFIN
	LAW	-3		/SET DTA D.E.
	DAC	DTCLCT		/TRANSFER COUNTER
DTNTR2	LAC*	DTUDRP		/SAVE USER D.E.
DTNTR3	DAC*	DTFIN
	ISZ	DTFIN
	ISZ	DTUDRP
	ISZ	DTCLCT
	JMP	DTNTR2
	JMP*	DTNTRZ
	.EJECT
DT1SAV	0			/1ST NEW FILE ENTRY SAVED HERE
	0
	0
	0
DT2SAV	0			/2ND NEW FILE ENTRY SAVED HERE
	0
	0
	0
DT3SAV	0			/3RD NEW FILE ENTRY SAVED HERE
	0
	0
	0
DTFAKE	0			/EMPTY SLOT FOR ENTER SEARCH (LAST WD. UNUSED)
	0
	0
DTEOFH	1005			/EOF HEADER FOR CLOSE
/SUBR TO SET UP FOR EXAM OF NEXT BIT MAP WORD
DTMPS	0
	LAW	-22
	DAC	DTRBIT		/18 BIT COUNT
	LAC*	DTMTRX		/NEXT BIT MAP WD
	CMA!STL
	DAC	DTSBIT
	LAC	DTDIRA		/BIT MAP DIRECTION SWITCH
	SMA!CLA!RAL			/REVERSE-SEARCH BIT 18-0
	RTR			/FORWARD-SEARCH BIT 0-18
	DAC	DTTBIT		/FORWARD(0=1); REVERSE (18=1)
	JMP*	DTMPS
	.EJECT
/END OF CURRENT BIT MAP WORD SUBR.
DTMPP	0
DTMPP1	LAC	DTDIRA		/INCR. (IF FORWARD) OR
	TAD	DTMTRX		/DECR. (IF REV) BY 1
	DAC	DTMTRX		/DT. BIT MAP POINTER
	LAC	DTDIRA
	TAD	DTPONT		/FILE BIT MAP POINTER
	DAC	DTPONT
DTMPP2	JMS	DTMPS		/SET FOR NEXT WD
	ISZ	DTWMCT		/BIT MAP WORD CT
	JMP*	DTMPP		/EXIT
	LAW	-1100
	DAC	DTBLOK		/RESET BLK COUNT
	DZM	DTBMCT		/CLEAR BIT MAP SEARCH COUNT
	CLA
	ISZ	DTDIRA		/TURN AROUND
	LAW	-2		/REV.
	TAD	DLIT1		/FORWARD
	DAC	DTDIRA		/SET FOR REV. SEARCH
	TAD	DTRELB		/REINIT
	DAC	DTRELB
/ROUTINE TO SET DTREM FOR TURN AROUND CASE
	LAC DTDIRA
	RAL			/L=1=REV.,L=0=FORW.
	LAC DTNXBK		/LAST BL # RECORDED FOR THIS FILE
	CMA
	SNL			/REV
	JMP .+3
	TAD (1100
	CMA
	DAC DTREM			/LAW TO CHECK ENOUGH SPACE BETW BL
	LAW	-41
	DAC	DTWMCT		/MATRIX COUNT
	JMP	DTMPP1		/START REV. SEARCH
DTBMCT=DTOBCK			/BIT MAP SEARCH COUNT (MUST BE 5 OR MOR TO EXIT)
/
	.EJECT
/BLOCK AVAILABILITY BIT MAP SEARCH
DTMAP	0
	DAC DTCLR2		/SAVE AC, IF -1, IT WILL BE BLK# ON EXIT
	DZM	DTBMCT		/BIT MAP SEARCH COUNT
DTMAP1	LAC	DTTBIT		/TEST BIT
DTMAP2	AND	DTSBIT		/MATRIX WORX
	SZA!CLC
DTMAP3	JMP	DTREM		/BLOCK AVAILABLE
	ISZ	DTBLOK		/INCR. DT BLOCK COUNT
	JMP DTMAP4
	DAC DTBLOK
	JMP DTREM5
DTMAP4	ISZ	DTBMCT
	LAC	DTDIRA		/IF FORW, INCR. BL#
	TAD	DTRELB		/IF REV., DECR. BL.# BY1
	DAC	DTRELB
	LAC	DTDIRA
	RAL			/L=0=FORW; L=1=REV.
	LAC	DTTBIT		/SHIFT TEST BIT RIGHT IF FORW,
	SNL!CLL!RAL			/LEFT IF REV.
	RTR
	DAC	DTTBIT
	ISZ	DTRBIT		/INDEX-18 BIT COUNT
	JMP	DTMAP2		/NEXT BIT
	JMS	DTMPP		/END OF MATRIX WD. SUBR.
	JMP	DTMAP1		/NEXT WORD
DTREM	XX			/DELTA BLOCKS IN BETWEEN
	TAD	DTBMCT
DTREM3	SPA!CLC			/OK-4 BLOCKS IN BETWEEN
	JMP	DTMAP4		/CHECK BIT MAP AGAIN
	SAD DTCLR2		/IF ENTRY AC = -1, NO DTCBIT
	JMP DTREM6
	JMS	DTCBIT		/SET BIT IN MAPS
	CMA
	DAC	DTSBIT
DTREM6	LAW	-DELTA		/RESET BLOCK
	DAC	DTREM		/DISTANCE CHECK TO -DELTA
	LAC	DTDIRL		/SET TRANSF DIRECTION  SWITCH
	SPA!CLA
	CMA
	DAC	DTDTR
	LAC	DTDIRA		/UPDATE DTDIRL
	DAC	DTDIRL
DTREM4	LAC	DTRELB		/T. STORE BL# TO BE  USED
DTREM5	DAC	DTCNBK		/EXIT
	LAW -1			/WAS AC ON ENTRY = -1?
	SAD DTCLR2
	SKP			/YES, EXIT WITHH AC= -1
	LAC DTCNBK		/NEW BLK #
	JMP*	DTMAP		/EXIT -BL ! FOUND(777777=DTA FULL)
/
/CHANGE BIT IN MAPS SUBR.
DTCBIT	0
	LAC	DTTBIT		/SET BIT IN FILE BIT MAP
	XOR*	DTPONT
	DAC*	DTPONT
	LAC	DTTBIT		/SET BIT IN MAP
	XOR*	DTMTRX
	DAC*	DTMTRX
	JMP*	DTCBIT		/C(*DTMTRX) MUST BE IN AC ON EXIT
/CLEAR DIRECTORY ROUTINE
DTCLR2	XX			/LAC DTBLBT=BLOCK TABLE
	DZM	DTCT2
	ISZ	DTCT2		/WRITE FORWARD
	JMS	DTSET		/SET BL# ETC
	LAC	DLTBUF		/(DTBUF
	JMS	DTWCS		/SET UP CA, WC+BEGIN TRANSFER
	ISZ	DTCLR2		/INDEX FOR NEXT TRANSFER
DTCLER	JMS	DTIOU		/WAIT FOR I/O TO FINISH
	LAC	DTCLSS		/CLOSE SWITCH CLEAR
	SZA!CLA			/YES
	JMP	DTER10		/FILE STILL ACTIVE
	LAC	(DTCLR1		/SET RETURN AND
	DAC	DTWRWT		/I/O WAIT SWITCH
	DAC	DTNCOR		/CLEAR DIR IN CORE SWITCH
	LAC	(LAC DTBLBT
	DAC	DTCLR2		/INIT TABLE REF
	JMS	DTBUFC		/CLEAR BUFF
	LAW	-10		/COUNT FOR
	DAC	DTBFC3		/FILE BIT MAP BLOCKS
	LAW	-11
	DAC	DTCLCT		/COUNT OF BLOCKS TO CLEAR+1
DTCLR1	ISZ	DTBFC3		/FILE BIT MAP BLOCKS CLEARED?
	JMP	DTCLR4
	LAC	(77600		/INIT DIRECTORY TO 4 SYSTEM BLKS OCCUPE
	DAC*	DLB003
	DAC*	DLB203
DTCLR4	ISZ	DTCLCT		/DONE
	JMP	DTCLR2
	DZM	DTWRWT		/YES-CLEAR I/O WAIT SWITCH
	JMP	DTDBK
	.EJECT
/DTCLER BLOCK TABLE
DTBLBT	71			/BLOCKS 71-73 CONTAIN
	72			/24 BIT MAPS ORDERED ACCORDING
DLIT73	73			/TO THE FILE NAMES IN THE DIR. ENTRY SECTION
	74
	75
	76
DLIT77	77
DLT100	100			/BLOCK 100=DIRECTORY
DT1BIT	0			/FILE 1 BIT MAP
	.LOC	DT1BIT+40
DT2BIT	0			/FILE 2 BIT MAP
	.LOC	DT2BIT+40
DT3BIT	0			/FILE 3 BIT MAP
	.LOC	DT3BIT+40
DTDIR	0			/DTA DIRECTORY (FILE1)
	.LOC	DTDIR+40
DTBUF	0			/DTA BUFFER (FILE1)
	.LOC	DTBUF+400
DTDIR2	0			/DTA DIRECTORY (FILE2)
	.LOC	DTDIR2+40
DTBUF2	0			/DTA BUFFER (FILE2)
	.LOC	DTBUF2+400
DTDIR3	0
	.LOC	DTDIR3+40		/DTA DIRECTORY (FILE 3)
DTBUF3	0
	.LOC	DTBUF3+400		/DTA BUFFER (FILE 3)
DTFLS1	0			/FILE1 DAT SLOT
DTFLS2	0			/FILE 2 DAT SLOT
DTFLS3	0			/FILE 3 DAT SLOT
/
	.EJECT
/FILE 1 BLOCK-SECTION A
BLAB=.
DLTDIR	DTDIR			/DIRECTORY POINTER
DLTSYS	DTDIR+203			/WD3 0F SYS BIT MAP
DLTBUF	DTBUF			/DTA BUF. POINTER
DLB003	DTBUF+3			/SYSTEM BLOCK BITS POINTER
DLB203	DTBUF+203			/BASIC SYSTEM BLOCK BITS POINTER
DTLB40	DTBUF+40			/DIR. ENTRY POINTER (.CLOSE)
DTLINK	DTBUF+377			/FILE1 DATA LINK POINTER
DLMBIT	DT1BIT			/FILE1 BIT MAP POINTER
DLSAV	DT1SAV			/POINTER TO 1ST CELL OF NEW DIR. ENTRY
DTROOM	377			/DUMP MODE BUFF SIZE (MODIFIED
DTXXX	XX			/DUMP MODE OUT SWITCH(JMS DTBUFC OR NOP)
DTNXBK	0			/BL.# TO BE TRANSFERRED
DTCNBK	0			/DATA LINK (NEXT BL.#)
DTCURE	0			/DIR. POINTER TTO CURR. FILE ENTRY EXAMINED
DTEOF	0			/EOF SWITCH, -0=EOF
DTHPT	0			/DTA BUF. LINE HEADER POINTER (INDEXED)
DTIOSW	0			/I/O SWITCH, 0=INPUT, 1=OUTPUT
DTRHPT	0			/DTA BUF. LINE HEADER POINTER (.READ)
DTSKNT	0			/.SEEK,.ENTER EXECUTED SWITCH (NON 0=EXECUTED)
DTPONT	0			/CURR. FILE BIT MAP WD POINTER
DTCLSS	0			/FILE OPEN, CLOSE SWITCH(NON-0=OPEN,0=CLOSED)
DTBFCT	0			/BUFFER COUNT (INIT=-377)
DTDTR	0			/TRANSF. DIRECT. SW.,0=F,-1=R
DTWREX	0			/WRITE EXECUTED SWITCH (0=NOT, NON 0=EXECUTED)
DTFPCT	0			/FILE ENTRY COUNT
DBLKLC	0			/24-56 FILE ENTRY SWITCH(50=24;10=70)
BLAND=.
/FILE 1 BLOCK-SECTION B
/SECTION B IS NOT SWAPPED WHEN BOTH FILES ARE ON SAME UNIT
DTUNIT	0			/(0-2)=DTA UNIT# FOR TRANSFER
DTNCOR	077777			/DIRECT. IN CORE SWITCH
DTDIRA	0			/BIT MAP DIRECTION SWITCH (CURR. BL.)+1=F,-1=R
DTDIRL	0			/BIT MAP DIRECTION SWITCH (LAST.BL.),+1=F,-1=R
DTMTRX	0			/CURRENT BIT MAP WD. POINTER
DTRBIT	0			/18  BIT (2'S COMP)COUNTER FOR BIT MAP SEARCH
DTRELB	0			/FREE BL.#AFTER BIT MAP SEARCH
DTSBIT	0			/-(MATRIX WORD)
DTTBIT	0			/TEST BIT FOR BIT MAP SEARCH
DTWMCT	0			/BIT MAP WORD COUNT
DTBMPT	0			/DIR. BIT MAP 1 POINTER
DTBLOK	0			/BLOCK EXAMINED COUNT
BLBND=.
/
	.EJECT
/FILE 2 BLOCK - SECTION A
	DTDIR2			/DIRECT 2 POINTER
	DTDIR2+203
	DTBUF2			/DTA BUF 2 POINTER
	DTBUF2+3
	DTBUF2+203
	DTBUF2+40			/DIR. ENTRY POINTER (FOR CLOSE)
	DTBUF2+377			/FILE 2 DATA LINK POINTER
	DT2BIT			/FILE 2 BIT MAP POINTER
	DT2SAV			/NEW DIR ENTRY POINTER
	377
	XX
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
/FILE 2 BLOCK - SECTION B
	0
	077777
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
/
	.EJECT
/FILE 3 BLOCK - SECTION A
	DTDIR3			/DIRECTORY 3 POINTER
	DTDIR3+203
	DTBUF3			/DTA BUF 3 POINTER
	DTBUF3+3
	DTBUF3+203
	DTBUF3+40			/DIRECTORY ENTRY POINTER (FOR CLOSE)
	DTBUF3+377		/FILE 3 DATA LINK POINTER
	DT3BIT			/FILE 3 BIT MAP POINTER
	DT3SAV			/NEW DIRECTORY ENTRY POINTER
	377
	XX
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
/
/
/FILE 3 BLOCK - SECTION B
	0
	077777
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
/
	.EJECT
/FOLLOWING =CELLS USED IN COMMON BY BOTH FILES
DLFAKE	DTFAKE			/POINTER TO EMPTY FILE NAME
DTARGP	0			/ENTRANCE ARG. POINTER
DTCALP	0			/USER CAL POINTER
DTCT1	0			/GEN. PURP. COUNTER AND T. STOR.
DTCT2	0			/GEN PURP COUNT AND T STOR
DTUND	0			/I/O UNDERWAY SWITCH,NOT 0=BUSY,0=NOT BUSY
DTWRWT	0			/CONTINUED I/O SWITCH (NON 0=CONT),0=DONE)
DLEOFH	DTEOFH			/EOF HEADER POINTER (FOR .CLOSE)
DTCT	0			/T STORE
DADSIZ	0			/FILE BLOCK RELATIVE POSITION
DLIT0	0
DLIT1	1
DLIT2	2
DLIT3	3
DLIT4	4
LDASZ	DASIZE			/LIT
LDBSZ	DABSIZ			/LIT
LDBSZ2	DABSZ2			/LIT
DWORD	LAW	-400		/WORD COUNT, MODIFIED BY.TRAN
	.END