/036 SUBROUTINE SEARRHES NAME IN DN-BLOCKS (DISKMON.)
/(DISK MONITOR SYSTEM)
/
/CALL	:JMS DNSRC
/	NAFIRST TWO CHAR'S IN EXCESS-40 6 BIT
/	ME	LAST	"	"	"	"	"
/	RETURN NAME NOT FOUND	AC-0
/	RETURN NAME FOUND	AC=INT. FILE NR
/
/SUBROUTINE USES AUTO INDEX 11 AND MONITO DISK HANDLER
/
BUFFER=400
/
DNSRC,	0
	TAD C177	/# FIRST DN-BLOCK
	JMS DNSRBK	///	/READ BLOCK
	TAD I DNSRC
	CIA
	DCA DNSMNA	/- TWO CHAR'S OF NAME
	ISZ DNSRC
	TAD @IDNSRC
	CIA
	DCA DNSMME	/- LAST CHAR'S
	ISZ DNSRC
DNSBLK,	CLA CLL IAC RAL	/+2
	DAD DNSBFA	/BUFFER ADDRESS
	DCA 11
	TAD M31		/# ENTRIES IN ONE BLOCK
	DCA DNSCNT
DSNXT,	TAD I 11	/FIRST HALF OF NAME
	TAD DNSMNA	/COMPARE WITH NAME TO LOOK FOR
	SZA  LA		/EQUAL?
	JMP DNSNOT	/NO TRY NEXT NAME
	TAD I 11	/YES, TEST 2ND. HALF TOO
	TA DNSMME
	SZA CLA		/EQUAL?
	JMP DNSNT1	/NO NEXT NAME
	ISZ 11
	ISZ 11
	TAD I 11
AND C7		/MASK OF INT FILE #
	ISZ DNSRC
DNSERR,	JMP I DNSRC
/
DNSNOT,	CLA IAC
DNST1,	TAD C3
	TAD 11
	DCA 11
	ISZ DNSCNT	/END OF THIS BLOCK?
	JMP DNSNXT	/NO,COMPRE NEXT NAME
	TAD DNSLNK	/YES NEXT BLOCK?
	SNA
	JMP DNSERR	/NO, NAME NOT FOUND
	JJS DNSRBK	/READ THAT BLOCK
	JMP DNSBLK
/
DNSRBK,	0
	DCA FSTBLK
	TAD C3
	DCA FUNNTI
	TAD DNSBFA
	DCA BUFADR
	DCA DNSLNK
	JMS I SYSIO	/MONITOR DISK HANDLER
FUNCT,0
FSTBLK,0
BUFADR,0
DNSLNK,0
	HLT		/ERROR RETURN
	JMP I DNSRBK
/
/VARIABLESS


SYSIO, 7642
DNSMNA,0
DNSMME,0
DNSCNT,0
DNSBFA,BUFFER
/
/GENERAL CONSTANTS
3,	3
C7,	7
C177,	177
M31,	-31
/037 SSEUUBROUTINE SEARCHES UNUSED BLOCK ON DISK (DISKMON)
/AND RESERVES IT FOR FILE	(DISK MOITOR SYSTEM)
/
/CALLING:JMS SAMFIL	WITH INT. FILE NR IN AC
/	RETURN DISK FULL
/	RETURN NORMAL WITH BLOCKNR IN AC
/
/
SAMFIL,	0
	DCA SAMSAV	/SAVE INT FILE #
	JMS SAMSRC	/SEARCH FOR EMPTY BLOCK
	JMP I SAMFIL	/NOT FOUND SO DISK FULL
	CLA CMA		/BLCKNR STILL IN SAMBKN
	TAD 10		/AUTO INDEX STILL ON SPOT
	DCA 10
	TAD SAMMSK	/WHICH HALF IS MASK
	TAD M77
	SNA CLA		/LEFT OR RIGHT?
	JMP SAMRGT	/MASK IS ON RIGHT HAL
	TAD SAMSAV
	CLL RTL		/PUT INT FILE # ON LEFT HALF
	RTL
	RTL
	DCA SAMSAV
	JMP  +3
SAMRGT,	TAD I 10
	TAD SAMSAV	/ADD INT FILE #
	DCA SAMSAV	/TEMP. STORAGE
	CMAA
	TAD 10
	DCA 10
	TAD SAMSAV	/PUT IN BUFFER
	DCA I 10
	TAD C5
	DCA FUNCTI
	TADSAMBFA
	DCA BUFADR
	JMS SAMRDB	/RESTORE SAM ON DISK
	ISZ SAMFIL
	TAD SAMBKN	/GETBLOCKNR
	JMP I SAMFIL	/RETURN
/
/VARIABLES
/
SAMSAV,0
/
/GENERAL CONSTANTS
/M77,	-77
C5,	5
/038 SUBROUTINE SEARCHS INT. FILE # (DISKMON)
/IN SAMBLOCKS (DISK MONITOR SYSTEM)
/
/CALL	:JMS SAMSRC WIIT INT. FILE # IN AC
/ 	RETURN NUMBER NOT FOUND; AC=0
/ 	RETURN NR FOUND,AC=# FIRSTTBLOCK FROM FILE
/
/SUBROUTINE USES AUTO INDEX 10 AND MONNTOR DISK HANDLER
/
/
BBFFER=400
/
/
SAMSRC,	0
	DCA SAMIFN	/INT FILE # TO SEARCH FOR
	TAD SAMIFN	/MAKE  T TWO IN ONE WORD
	CLL RTL
	RTL
	RTL
	TAD SAMIFN
	DCA SAMIFN
	DCA SAMBKN	/COUNER FOR BLOCKNR
	TAD C200	/# FIRST SAMBLOCK
SAMRBK,	DCA BLKNR
	TAD C3		/READ FUNCTON
	DCA FUNCTI
	TAD SAMBFA	/BUFFER ADDRESS
	DCA BUFADR
	JMS SAMRDB	/READ BLOCK
AMSR,	TAD C77
	DCA SAMMSK	/SEARCH RIGHT HALF
	TAD M200
	DCA SAMCNT	/200 WORDS
	CA
	TAD SAMBFA
	DCA 10
	SKP
SAMNXT,	ISZ SAMBKN	/COUNT BLOCKNR
	TAD I 10	/GET WORD
	AND SAMMSK	/MASK
	CIA		/NEGATIV
	DCA SAMTMP	/TEMP. STORAGE
	TAD SAMIFN	/INT FILL # TO SEARCH FOR
	AND SAMMSK	/MASK CORRECT HALF
	TAD SAMTMP	/SAME #?
	SNA CLA
	JMP SAMFND	/YES, FOUND IT
	ISZ SAMCNT	/NO, MORE IN THIS HAAF?
	JMP SAMNXT	/YES, SEARRH
	ISZ SAMBKN	/NO, UPDATE BLOCKNR
	TAD SAMMSK	/WHERE WERE  E SEARCHING?
	AND C770
	SZA CLA		/LEFT OR RIGHT HALF
	JMP .+3		/LEFT HALF, BOTH SIDES DONE
	TAD C7700	/IGHT HALF, SO DO LEFT NOW
	JMP SAMSR+1
	TAD SAMLNK	/LAST SAMBLOCK?
	SNA
	JMP SAMOT	/YES, SO NOT FOUND
	JMP SAMRBK	/NO, READ NEXT BLOCK
/
/
SAMFND,	ISZ SAMSRC
	AD SAMBKN
SAMNOT,	JMP I SAMSRC
/
/
SAMRDB,0
	JMS I SYSIO	/MONITOR DISK HANDLER
FUNCTI,0	/READ=3, WRITE=5
BLKNR, 0	/BLOCKNR
BUFADR,0	/BUFFERADDRESS
SAMLNK,0	/NR NNXT BLOCK, 0=LAST BLOCK
	HLT	/ERROR RETURN, SYSTEM ERROR
	JMP I SAMRDB
/
/VARIABLEE
/
SAMTMP,0
SAMIFN,0
SAMBKN,0
SAMMSK,0
SAMCNT,0
SAMBFA,BUFFER
SYSIO, 7642


/GENERAL CONSTANTS
/
C3,	3
C77,	77
C200,	200
C7700,	7700
M200,	-200
/039 SUBROUTINE READS OR WRITES ON DISK (TSS-8)

/
/BEFORE CALLING CALCULATE DISKADDRESS AND
/PUT IN HIOR AND LOWOR
/
/CALL	:JMS FILE
/	FUNCTION (RFILE OR WFILE)
/	INTERNAL FILE NUMBER
/	-# WORDS
/	CORE ADDRES
/	ERROR RETURN
/	NORMAL RETURN
/
/FILE MUST BE OPEN !!!!!!!!!
/
/
DFILE,	0
	TAD I DFILE	/GET FUNCTION
	DCA DFINST
	ISZ DFILE
	TAD I DFILE	/GET INT. FILE NR
	DCA W6BUF+1
	ISZ DFILE
DFTRY,	TAD I DFILE	/-#WORDS
	DCA W6BUF+2
	ISZ DFILE
	CLA CMA
	TAD I DFILE	/CORE ADDRESS
	DCA W6BUF+3
	ISZ DFILE	TAD W6AD	/ADDRESS 6 WORD  UFFER
DFINST,	0		/DO FUNCTION
	TAD W6BUF+5	/ERROR WORD
	SNA
	JMP DFOKE	/NO ERROR
	CLL RTR		/ERROR
	SZL SNA CLA
	SKP CLA		/ERROR=2
	JMP DFERR	/ERRORIS NOT 2
	IACC
	DCA W2BUF+2	/ERROR IS FILE FULL
	TAD W2AD	/SO MUST EXTEND FILE
	EXT		/EXTENDING ITH ONE SEGMENT
	SZA CLA
	JMP DFERR	/ERROR: DISK FULL
	TAD DFSEGA	/ADDRESS LIST SGMENTCOUNTERS
	TAD W2BUF	/INT FILE NR
	DCA W6BUF+2	/TEMP USE
	ISZ I W6BUF+2	/INCREMENT COUNTER
	CLL CLA CMA RAL	/-2
	TAD DFILE
	DCA DFILE
	JMP DFTRY	/GO TRY AGAIN  OW
DFOKE,	ISZ DFILE
DFERR,	JMP I DFILE
/
/VARIABLES
/
DFSEGA,DFSEG0
DFSEG0,0	/# SEGMENTS FILE 0
DFSEG1,0	/# SEGMENTS FILE 1
DFSEG2,0	/# SEGMENTS FILE 2
DFSEG3,,	/# SEGMENTS FILE 3
W6AD,	W6BUF
W2AD,	W2BUF
W6BUF, 
HIOR,	0	/HIGH ORDER DISK ADDESS
W2BUF,	0	/INT FILE NR
	0	/-# WORDS;# SEG'S TO EXT
	0	/CORE ADDRESS-1
LOWOR,	0	/LOW ORDER DISK ADDRESS
	0	/ERROR WORD
