ABS JSB+LD+MGRDY NO WAIT FOR READY ABS LDB+LD+MGRW GET REWIND COMMAND ABS JSB+LD+MGOC DO IT ABS JSB+LD+MGRDY WAIT FOR READY ABS LDB+LD+MGFSF GET FILE FORWARD COMMAND ABS LDA+LD+MGBF+1 GET REQUEST RAR,SLA DO FILE FORWARD? ABS JSB+LD+MGOC YES ABS JMP+LD+MGLR+100000B RETURN MGLR0 EQU *-MG ABS JSB+LD+MGRDY WAIT FOR READY ABS LDA+LD+MGWC GET DMA WORD COUNT STC DMA2 OTA DMA2 ABS LDA+LD+MGAD GET ADDRESS FOR DMA ABS ADA+LDMXA-PAGE ABS STA+LD+MGDA SAVE IT FOR LATER ABS IOR+%BT15-PAGE ADD INPUT BIT FOR DMA CLC DMA2 OTA DMA2 ABS LDA+LD+MGDC1 GET DMA CONTROL WORD OTA DMA6 ABS LDB+LD+MGRC GET READ COMMAND ABS JSB+LD+MGOC DO IT ABS JSB+LD+MGRDY CHECK IF READ WAS OK ABS LDA+LD+MGBF+1 CMA,SLA,INA REVERSE SENSE CLA BLF,BLF MOVE TO EOF BIT OF STATUS SSB CHECK FOR EOT ABS JMP+LD+MGLR+100000B YES RETURN WITH END OF FILES MGW EQU *-MG ABS LDA+LD+MGDA+100000B GET A WORD FROM BUFFER ABS ISZ+LD+MGDA MOVE POINTER TO NEXT WORD ABS JMP+LD+MGLR+100000B RETURN SKP MGOC EQU *-MG NOP OTB SC+1 OUTPUT COMMAND LIA SC+1 RAR,RAR RAR,SLA REJECTED? ABS JMP+LD+*-MG-4 YES TRY AGAIN STC SC+1,C DO COMMAND ABS CPB+LD+MGRC WAS IT A READ RSS ABS JMP+LD+*-MG+3 NO STC SC,C START DATA CHANNEL STC DMA6,C START DMA SFS SC+1 WAIT FOR COMPLETION ABS JMP+LD+*-MG-1 STF DMA6 CLC DMA6,C TURN OFF DMA MGDC1 EQU *-MG CLC SC,C AND INTERFACE CLC SC+1,C ABS JMP+LD+MGOC+100000B * MGRDY EQU *-MG NOP ABS LDA+LD+MGSU GET UNIT SELECT OTA SC+1 LIA SC+1 LDB A SAVE STATUS ABS AND+LD+MGSM MASK STATUS SZA,RSS WAS IT REJECTED ABS JMP+LD+MGRDY+100000B NO RETURN ABS AND+LD+MGRC SZA ANY ERRORS? OCT 106074 YES TELL OPERATOR ABS JMP+LD+MGRDY+1 TRY AGAIN * MGRW EQU *-MG OCT 101 MGWC EQU *-MG DEC -60 MGAD EQU *-MG ABS LDVR-LDMXA+MGBF MGDA EQU *-MG NOP MGFSF EQU *-MG OCT 203 MGRC EQU *-MG OCT 23 MGSU EQU *-MG OCT 1400 MGSM EQU *-MG OCT 3451 MGBF EQU *-MG SKP * DISC LOADER DRIVER * DS EQU * * * DSSR EQU *-DS NOP SZB READ A WORD? ABS JMP+LD+*-DS+3 NO ABS JSB+LD+DSW YES ABS JMP+LD+DSSR+100000B RETURN ABS STB+LD+DSBR SAVE B-REG SSB,RSS READ AND SEARCH? ABS JMP+LD+DSR YES CLA SLB,RSS REWIND? ABS JMP+LD+*-DS+6 ABS STA+LD+DSW FORCE FF IF USED ABS STA+LD+DSNCY CYLINDER ABS STA+LD+DSCY ABS STA+LD+DSNHS HEAD & SECTOR ABS STA+LD+DSHS RBR,SLB ANY FILE FORWARDS RSS ABS JMP+LD+DSSR+100000B NO MORE RETURN ABS LDB+LD+DSW CHECK IF IN READ ABS STA+LD+DSW CLEAR FOR NEXT ONE SZB DO A FF? ABS JMP+LD+DSSR+100000B NO RETURN ABS JMP+LD+DSR+2 YES * DSR EQU *-DS SLB,RSS FIRST READ? ABS JMP+LD+DSSR+3 NO ABS LDA+LD+DSNCY SET NEXT ABS STA+LD+DSCY CYLINDER ABS LDA+LD+DSNHS AND ABS STA+LD+DSHS HEAD AND SECTOR ABS JSB+LD+DSRD READ IT ABS JSB+LD+DSW GET CYLINDER ABS CPA+%M1-PAGE END OF FILES? ABS JMP+LD+DSSR+100000B YES ABS STA+LD+DSNCY NO SAVE IT ABS JSB+LD+DSW GET NEST HEAD AND SECTOR ABS STA+LD+DSNHS CLA ABS STA+LD+DSW ABS LDB+LD+DSBR CHECK IF JUST FF SSB ABS JMP+LD+DSSR+100000B YES RETURN ABS JSB+LD+DSW CHECK ADDRESS ABS ADA+LD+DSDMC ABS ADA+LDMXA-PAGE SSA OK? OCT 0 NO TELL OPERATOR (IGNORE FOR INIT) ABS JMP+LD+DSSR+3 GET COUNT AND CONTINUE SKP DSRD EQU *-DS NOP ABS LDA+LD+DSCY OTA SC CYLINDER STC SC,C ABS LDA+LD+DSSK SEEK COMMAND OTA SC+1 STC SC+1,C SFS SC ABS JMP+LD+*-DS-1 WAIT FOR ACCEPTANCE ABS LDA+LD+DSHS OTA SC HEAD AND SECTOR STC SC,C SFS SC+1 ABS JMP+LD+*-DS-1 ABS JSB+LD+DSST CHECK FOR ACCEPTANCE ABS LDA+LD+*-DS-5 SET UP DMA ABS IOR+LD+DSRC CLC AT END OF TRANSFER OTA DMA6 CLC DMA2 ABS LDA+LD+DSDMC GET BUFFER ADDRESS ABS ADA+LDMXA-PAGE ADD -PAGE ABS STA+LD+DSDA ABS IOR+%BT15-PAGE OTA DMA2 STC DMA2 ABS LDA+LD+DSDMC DMA COUNT OTA DMA2 ABS LDA+LD+DSRC READ COMMAND OTA SC+1 STC SC,C STC DMA6,C STC SC+1,C SFS SC+1 ABS JMP+LD+*-DS-1 ABS JSB+LD+DSST DID IT READ OK ABS LDB+LD+DSCY ANY CYLINDER? ABS LDA+LDMXA-PAGE-2 GET BOOT POINTER SZB TO FILES ABS JMP+LD+*-DS+4 YES ABS STA+LD+DSNCY NO SET FIRST CYLINDER ABS STA+LD+DSCY ABS JMP+LD+DSRD+1 NOW TRY AGAIN ABS LDA+LD+DSHS UPDATE HEAD AND SECTOR INA ABS CPA+LD+DSHS0 ABS LDA+LD+DSHS. ABS CPA+LD+DSHS1 CLA ABS STA+LD+DSHS SZA,RSS UPDATE CYLINDER? ABS ISZ+LD+DSCY YES ABS JMP+LD+DSRD+100000B SKP DSW EQU *-DS NOP ABS LDA+LD+DSDA READ NEW SECTOR? ABS CPA+LDMXA-PAGE ? ABS JSB+LD+DSRD YES ABS LDA+LD+DSDA+100000B NOW GET WORD ABS ISZ+LD+DSDA MOVE POINTER TO NEXT ONE ABS JMP+LD+DSW+100000B * DSST EQU *-DS NOP STF DMA6 TURN OFF DMA ABS LDA+%B7-PAGE SET TO CLEAR ALL STATUS ABS ADA+%M1-PAGE CLC SC CLC SC+1 OTA SC+1 STC SC+1,C SFS SC ABS JMP+LD+*-DS-1 SZA ALL STATUS CLEARED ABS JMP+LD+DSST+3 NO CLEAR NEXT ONE LIA SC GET STATUS CLC DMA6,C TURN OFF DMA INTERRUPT CLC SC,C AND INTERFACE CLC SC+1,C SLA,RSS ABS JMP+LD+DSST+100000B OCT 106074 ABS JMP+LD+DSRD+1 TRY AGAIN * DSHS0 EQU *-DS OCT 30 DSHS1 EQU *-DS OCT 430 DSHS. EQU *-DS OCT 400 DSBR EQU *-DS NOP DSNCY EQU *-DS NOP DSNHS EQU *-DS NOP DSCY EQU *-DS NOP DSHS EQU *-DS NOP DSDA EQU *-DS NOP DSSK EQU *-DS OCT 30000 DSRC EQU *-DS OCT 20000 DSDMC EQU *-DS DEC -128 SKP * DISC LOADER DRIVER * * DF EQU * * DFSR EQU *-DF NOP SZB READ A WORD? ABS JMP+LD+*-DF+3 NO ABS JSB+LD+DFW YES ABS JMP+LD+DFSR+100000B RETURN ABS STB+LD+DFBR SAVE B-REG SSB,RSS READ AND SEARCH? ABS JMP+LD+DFR YES CLA SLB,RSS REWIND? ABS JMP+LD+*-DF+6 ABS STA+LD+DSW FORCE FF IF USED ABS STA+LD+DFNCY CYLINDER ABS STA+LD+DFCY ABS STA+LD+DFNHS HEAD & SECTOR ABS STA+LD+DFHS RBR,SLB FILE FORWARD RSS ABS JMP+LD+DFSR+100000B NO MORE RETURN ABS LDB+LD+DFW CHECK IF IN READ MODE ABS STA+LD+DFW CLEAR FOR NEXT TIME SZB DO FF? ABS JMP+LD+DFSR+100000B NO RETURN ABS JMP+LD+DFR+2 YES * DFR EQU *-DF SLB,RSS FIRST READ? ABS JMP+LD+DFSR+3 NO ABS LDA+LD+DFNCY SET NEXT ABS STA+LD+DFCY CYLINDER ABS LDA+LD+DFNHS AND ABS STA+LD+DFHS HEAD AND SECTOR ABS JSB+LD+DFRD READ IT ABS JSB+LD+DFW GET CYLINDER ABS CPA+%M1-PAGE END OF FILES? ABS JMP+LD+DFSR+100000B YES ABS STA+LD+DFNCY NO SAVE IT ABS JSB+LD+DFW GET NEST HEAD AND SECTOR ABS STA+LD+DFNHS CLA ABS STA+LD+DFW ABS LDB+LD+DFBR CHECK IF FF ONLY SSB ABS JMP+LD+DFSR+100000B YES RETURN ABS JSB+LD+DFW CHECK ADDRESS ABS ADA+LD+DFDMC ABS ADA+LDMXA-PAGE SSA OK? OCT 0 NO TELL OPERATOR (IGNORE FOR INIT) ABS JMP+LD+DFSR+3 GET COUNT AND CONTINUE SKP DFRD EQU *-DF NOP ABS JSB+LD+DFST CHECK STATUS ABS LDA+LD+DFSK GET SEEK COMMAND CLC SC SET TO OUTPUT COMMAND OTA SC,C SFS SC ABS JMP+LD+*-DF-1 WAIT FOR ACCEPTANCE ABS LDA+LD+DFCY GET CYLINDER OTA SC,C SFS SC ABS JMP+LD+*-DF-1 WAIT FOR ACCEPTANCE ABS LDA+LD+DFHS OTA SC,C HEAD AND SECTOR STC SC SFS SC ABS JMP+LD+*-DF-1 ABS JSB+LD+DFST CHECK FOR ACCEPTANCE ABS LDA+LD+*-DF-5 SET UP DMA ABS AND+%B177-PAGE USE SC ONLY OTA DMA6 CLC DMA2 ABS LDA+LD+DFDMC GET BUFFER ADDRESS ABS ADA+LDMXA-PAGE ADD -PAGE ABS STA+LD+DFDA ABS IOR+%BT15-PAGE OTA DMA2 STC DMA2 ABS LDA+LD+DFDMC DMA COUNT OTA DMA2 ABS LDA+LD+DFRC READ COMMAND CLC SC SET TO OUTPUT COMMAND OTA SC,C STC DMA6,C STC SC SFS SC ABS JMP+LD+*-DF-1 ABS JSB+LD+DFST DID IT READ OK ABS LDB+LD+DFCY ANY CYLINDER? ABS LDA+LDMXA-PAGE-2 GET BOOT POINTER SZB TO FILES ABS JMP+LD+*-DF+4 YES ABS STA+LD+DFNCY NO SET FIRST CYLINDER ABS STA+LD+DFCY ABS JMP+LD+DFRD+1 NOW TRY AGAIN ABS LDA+LD+DFHS UPDATE HEAD AND SECTOR INA ABS CPA+%B60-PAGE CLA ABS STA+LD+DFHS SZA,RSS UPDATE CYLINDER? ABS ISZ+LD+DFCY YES ABS JMP+LD+DFRD+100000B SKP DFW EQU *-DF NOP ABS LDA+LD+DFDA READ NEW SECTOR? ABS CPA+LDMXA-PAGE ? ABS JSB+LD+DFRD YES ABS LDA+LD+DFDA+100000B NOW GET WORD ABS ISZ+LD+DFDA MOVE POINTER TO NEXT ONE ABS JMP+LD+DFW+100000B * DFST EQU *-DF NOP STF DMA6 TURN OFF DMA ABS LDA+LD+DFSTR SET TO GET STATUS CLC SC OTA SC,C STC SC SFS SC ABS JMP+LD+*-DF-1 LIA SC,C GET STATUS CLC DMA6,C TURN OFF DMA INTERRUPT ALF,ALF ABS AND+LD+DFB37 SZA ABS CPA+LD+DFB37 ABS JMP+LD+*-DF+3 OCT 106074 ABS JMP+LD+DFRD+1 TRY AGAIN ABS LDA+LD+DFFM CLC SC OTA SC,C SFS SC ABS JMP+LD+*-DF-1 ABS JMP+LD+DFST+100000B RETURN SKP DFB37 EQU *-DF OCT 37 DFBR EQU *-DF NOP DFNCY EQU *-DF NOP DFNHS EQU *-DF NOP DFCY EQU *-DF NOP DFHS EQU *-DF NOP DFDA EQU *-DF NOP DFSK EQU *-DF OCT 1000 DFSTR EQU *-DF OCT 1400 DFRC EQU *-DF OCT 2400 DFFM EQU *-DF OCT 7700 DFDMC EQU *-DF DEC -128 SKP * CARTRIDGE TAPE UNIT (2644) DRIVER * ASSUMES INTF. 12966/8 EXT BAUD RATE * CT EQU * CTLR EQU *-CT NOP SZB READ A WORD? ABS JMP+*+3-CT+LD ABS JSB+LD+CTINW YES READ IT AND ABS JMP+LD+CTLR+100000B RETURN ABS STB+LD+CTX SAVE B REG. SSB,RSS READ RECORD? ABS JMP+LD+CTLR0 YES SLB,RSS REWIND? ABS JMP+LD+CTFF NO SKIP TO FILE FORWARD CHECK ABS JSB+LD+CTCMD YES REWIND TAPE OCT 33 "ESC" OCT 46 "&" OCT 160 "P'" OCT 60 "0" OCT 103 "C" OCT 21 DC1 OCT 040340 TERMINATOR ABS JSB+LD+CTINW WAIT FOR RESPONCE ABS CPA+LD+CT.S OK? RSS ABS JMP+LD+CTDRE NO - REPORT ERROR CTFF EQU *-CT ABS LDA+LD+CTX FILE FORWARD? RAR,SLA RSS ABS JMP+LD+CTLR+100000B NO - RETURN ABS LDA+LD+CTWT GET WAIT TIME JSB WAIT,I NOW GO WAIT ABS JSB+LD+CTCMD YES - DO A FILE FORWARD OCT 33 "ESC" OCT 46 "&" OCT 160 "P'" OCT 62 "2" OCT 103 "C" OCT 21 DC1 OCT 040340 TERMINATOR ABS JSB+LD+CTINW WAIT FOR RESPONSE ABS CPA+LD+CT.S OK? ABS JMP+LD+CTLR+100000B YES RETURN CTDRE EQU *-CT OCT 106074 DEVICE ERROR ABS LDB+LD+CTX RESTORE B REG ABS JMP+LD+CTLR+1 TRY AGAIN SKP CTLR0 EQU *-CT ABS JSB+LD+CTCMD READ ONE RECORD OCT 33 "ESC" OCT 46 "&" OCT 160 "P'" OCT 62 "2" OCT 122 "R" OCT 21 DC1 CTCW4 EQU *-CT OCT 040340 TERMINATOR ABS JSB+LD+CTINW NOW GET ONE WORD ABS CPA+LD+CTRS END OF FILE? ABS JMP+LD+CTLR1 YES - REPORT IT ABS JSB+LD+CTINW ABS JSB+LD+CTINB ABS JSB+LD+CTCMD READ THE DATA OCT 21 DC1 OCT 040340 TERMINATOR ABS JSB+LD+CTINW READ RECORD COUNT ON TAPE ABS AND+%B377-PAGE CHECK SECOND BYTE IS 0 SZA CCB NOT SO END OF FILES LDA B GET COUNT ABS JMP+LD+CTLR+100000B RETURN CTLR1 EQU *-CT ABS LDA+LD+CTX SECOND EOF? CMA,SLA,INA CLA NO ABS JMP+LD+CTLR+100000B OK RETURN SKP CTCMD EQU *-CT NOP ABS LDA+LD+CTCW0 MASTER RESET INTF. OTA SC,C ABS LDA+LD+CTCW1 INTF CONTROL (OUTPUT) OTA SC,C ABS LDA+LD+CTCW2 CHAR FRAME CONTROL CTCM0 EQU *-CT OTA SC,C ABS LDA+LD+CTCMD+100000B GET A CHATACTER ABS ISZ+LD+CTCMD MOVE TO NEXT WORD OTA SC,C OUTPUT CHARACTER ABS CPA+LD+CTCW4 END OF LIST? ABS JMP+LD+CTCMD+100000B YES RETURN STC SC,C NO SFS SC WAIT FOR TRANSFER ABS JMP+*-1-CT+LD ABS LDA+LD+CTCW3 RESET BUFFER EMPTY ABS JMP+LD+CTCM0 DO NEXT WORD * CTINW EQU *-CT NOP ABS JSB+LD+CTINB READ A BYTE ALF,ALF PUT IT IN UPPER HALF WORD STA B ABS JSB+LD+CTINB READ SECOND BYTE IOR B ADD FIRST ABS JMP+LD+CTINW+100000B RETURN * * CTINB EQU *-CT NOP LIA SC GET DATA SSA,RSS VALID DATA? ABS JMP+*-2-CT+LD ABS AND+%B377-PAGE ABS JMP+LD+CTINB+100000B * * CTX EQU *-CT NOP CTWT EQU *-CT DEC 1000 ONE SECOND CTRS EQU *-CT OCT 17015 36+15 CT.S EQU *-CT OCT 51415 CTCW0 EQU *-CT OCT 150077 CTCW1 EQU *-CT OCT 040700 CTCW2 EQU *-CT OCT 030003 CTCW3 EQU *-CT OCT 050077 SKP BSS 128 LDMXA ABS * %B7 OCT 7 %B60 OCT 60 %B177 OCT 177 %B377 OCT 377 %M1 OCT -1 %M10 OCT -10 %BT15 OCT 100000 * * LOADER DRIVER * * B = +1 READ TO FIRST RECORD * A = 0 NEXT FILE * A = # SERIAL NUMBER OF FILE * B = +2 READ NEXT RECORD * B = 0 READ A WORD OF THE RECORD * B = -1 REWIND AND FILE FORWARD * B = -2 REWIND ONLY * B = -3 FILE FORWARD ONLY * LDVR NOP * * RETURN * A = 0 END OF FILE * A = -1 END OF TAPE (FILES) * A = +# RECORD COUNT * ISZ EQU 36000B LDA EQU 62000B LDB EQU 66000B ADA EQU 42000B ADB EQU 46000B STA EQU 72000B STB EQU 76000B AND EQU 12000B IOR EQU 32000B XOR EQU 22000B CPA EQU 52000B CPB EQU 56000B JSB EQU 16000B JMP EQU 26000B LD EQU LDVR-PAGE FWAA EQU * END