/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 DNST1, 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 HAL 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