  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 <FORMAT STARTING> 
*     CLE <USE SLOW OUTPUT DEVICE CCE=FAST OUTPUT>
*     LDB <FORMAT STRING STARTING ADDRESS>
*     JSB FMTO,I
*     <NORMAL RETURN OR FOR NUMBER
* 
*     FORMAT CHARACTER CONTROL
* 
*     # = RETURN FOR NUMBER 
*     / = OUTPUT LINE WITH A CR-LF
*     _ = OUTPUT LINE WITHOUT A CR-LF 
*         (LEFT ARROW)
* 
* 
*     NUMBER OUTPUT 
* 
*     CALL: 
* 
*     CCA <OCTAL NUMBER OUTPUT> 
*     LDB <NUMBER>
*     JSB FMTO,I
*     <NORMAL RETURN OR NEXT NUMBER>
* 
*     OR
* 
*     CLA,INA <INTEGER OUTPUT>
*     LDB <NUMBER>
*     JSB FMTO,I
*     <NORMAL RETURN OR NEXT NUMBER>
      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 
* 
                                                            