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-6500B+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-6000B 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-6000B SSA OK? OCT 106073 NO TELL OPERATOR 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-6000B ADD PAGE ABS STA+LD+DSDA ABS IOR+%BT15-6000B 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+476B 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-6000B ? 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-6000B SET TO CLEAR ALL STATUS ABS ADA+%M1-6000B 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+DFW 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 ONE SZB DO A 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-6000B 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-6000B SSA OK? OCT 106073 NO TELL OPERATOR 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-6000B USE SC ONLY OTA DMA6 CLC DMA2 ABS LDA+LD+DFDMC GET BUFFER ADDRESS ABS ADA+LDMXA-6000B ADD PAGE ABS STA+LD+DFDA ABS IOR+%BT15-6000B 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+476B 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-6000B 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-6000B ? 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 ABS JSB+TMR-6000B 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-6000B CHECK IF SECOND BYTE IS 0 SZA ?? CCB INDICATE EOF LDA B GET COUNT AND 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-6000B 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 REP 276B OCT 106075 MEMORY HALT SKP LWAA EQU *-1 JMP LOADS RESTART FOR SERIAL EXECUTRION LDMXA ABS *-1 * * * * FORMATTED OUTPUT * * CALL: * * CLA * CLE * LDB * JSB FMTO,I * * LDB * JSB FMTO,I * * * OR * * CLA,INA * LDB * JSB FMTO,I * SKP FMTR NOP SZA IS THIS A NUMBER OUTPUT? JMP FMTNU YES LDA FMTR0+1 GET CONSOLE JSB RAR,ELA SET FOR COD,I OR LPD,I STA FMTR0+1 PUT IT IN PLACE FOR EXECUTION FMTR0 CCA INDICATE IT'S FROM THE FORMATTER JSB COD,I LDA BUFFR SAVE FORMAT POINTER STA FMTPS LDA FMTCH GET LAST CHARACTER JMP FMTR,I RETURN * FMTC LDB FMTPS CHECH TO RESTOR FORMAT POINTER LDA BUFFR CONVET POINTER ADA %M6 TO CHECK CLE,ERA IF NUMBER OUTPUT CPA FMTBF IS IT? STB BUFFR YES JSB BUF2A NO GET NEXT CHARACTER NOP STA FMTCH SAVE CHARACTER CPA SLASH IS IT A LINE TERMINATOR? JMP SLO2 YES CPA LAROW IS IT A SUPPRESS CR-LF? JMP SLO2+1 YES CPA NUMB IS IT A NUMBER REQUEST? JMP SLO2+1 YES JMP SLO1+2 NO OUTPUT THE CHARACTER * * OUTPUT A NUMBER TO THE BUFFER *