      AND B177
      SZA,RSS       EOL?
      JMP GETCH,I   YES 
      ISZ IBUFP     NO MOVE TO NEXT CHARACTER 
      CPA B54       COMMA?
      RSS           YES 
      ISZ GETCH     ADJUST RETURN IF NOT A COMMA OR EOL 
      JMP GETCH,I 
      SKP 
*         CONVERT SELECT CODE 
* 
CVSC  NOP 
      JSB GETA      GET ASCII INPUT 
      SZB           IF MORE THAN 2
      JMP CVSC,I      THEN ERROR
      SZA,RSS       IF NO INPUT 
      JMP CVSC,I      THEN ERROR
      ALF,ALF 
      JSB CVSCC     CHECK IT
      JMP CVSC,I    NOT A NUMBER
      RAL,RAL       OK
      RAL             SAVE IT 
      SZA,RSS       CAN'T BE ZERO 
      JMP CVSC,I
      STA CVSCT 
      LDA SVA 
      JSB CVSCC     CONVERT SECOND NUMBER 
      JMP CVSC,I    NOT A NUMBER
      IOR CVSCT     ADD FIRST NUMBER
      ISZ CVSC      ADJUST GOOD RETURN
      JMP CVSC,I    RETURN
* 
CVSCC NOP 
      STA B 
      AND B170
      CPA B60       MUST BE A NUMBER
      RSS 
      JMP CVSCC,I   NOT SO RETURN WITH ERROR
      LDA B 
      AND B7
      ISZ CVSCC     ADJUST RETURN 
      JMP CVSCC,I   RETURN
* 
CVSCT NOP 
      SKP 
DOTDM ASC 15,LINE PRINTER (NO.,SC)........_ 
* 
DOTDT ASC 2,2610
      DEF OLPXX 
      ASC 2,2614
      DEF OLPXX 
      ASC 2,2767
      DEF OLP67 
      ASC 2,9866
      DEF OLP67 
      ASC 2,2607
      DEF OLPXX 
      ASC 2,2618
      DEF OLPXX 
      ASC 2,2617
      DEF OLPXX 
      ASC 2,2613
      DEF OLPXX 
      ASC 2,2778
      DEF OLPXX 
      ASC 2,LINK
      DEF LNPTR 
      ASC 2,NONE
      DEF OLPDY 
      DEC -1
      SKP 
DINDM ASC 15,DIAG. INPUT DEVICE (NO.,SC).._ 
LDVRY ASC 13,READY DIAG. INPUT DEVICE/
DGSNM ASC 15,DSN(,SEQ.DIAG.EXECUT.)......._ 
* 
DINDP EQU * 
      ASC 2,2748
      OCT 0 
      ASC 2,2758
      OCT 0 
      ASC 2,2737
      OCT 0 
      ASC 2,7970
      OCT 1 
      ASC 2,7900
      OCT 2 
      ASC 2,7901
      OCT 2 
      ASC 2,7905
      OCT 3 
      ASC 2,7920
      OCT 3 
      ASC 2,2644
      OCT 4 
      ASC 2,2645
      OCT 4 
      ASC 2,LINK
      OCT 7 
      DEC -1
* 
DINDT EQU * 
      DEF PT        PAPER TAPE
      DEF MG        MAG TAPE
      DEF DS        7900/1 DISC 
      DEF DF        7905 DISC 
      DEF CT        2644 CARTRIDGE TAPE 
      DEF *-* 
      DEF *-* 
      DEF LDVR      MAINTAIN CURRENT DRIVER (LINK)
      SKP 
      SKP 
*              12531-12880  TTY-KDT-PTM 
* 
O531  NOP 
  ABS JSB+SETP      SETUP COUNT+BUFFER POINTER
      OTA SC        I/O FOR CONTROL WORDS 
      ABS OR531-* 
  ABS JSB+.OUT      DUMP BUFFER 
      OCT 120000    CONTROL WORD FOR 12531-12880
      NOP           NO MORE CONTROL WORDS 
      OCT 12        NORMAL LINE FEED
      CLC SC,C      TURN CARD OFF 
  ABS JMP+CSLO+100000B
OR531 NOP 
      OTA SC        I/O 1 
      STC SC,C      I/O 2 
      SFS SC        I/O 3 
  ABS JMP+*-1-O531+CSLO 
  ABS JMP+*-5-O531+CSLO+100000B 
      OCT 0,0,0,0,0 
* 
* 
I531  NOP 
  ABS STA+COT       SAVE COUNT AND
  ABS STB+BFA       BUFFER ADDRESS
  ABS JSB+SETP      SETUP COUNT+BUFFER POINTER
      OTA SC        I/O FOR CONTROL WORDS 
      ABS IR531-* 
  ABS JSB+.IN       LOAD BUFFER 
      OCT 160000    CONTROL WORD FOR 12531-12880
      NOP           NO MORE CONTROL WORDS 
      STC SC,C      LEAVE CARD IN INPUT MODE
      CLC SC,C      TURN CARD OFF 
  ABS JMP+CSLI+100000B
IR531 NOP 
      STC SC,C      I/O 1 
      SFS SC        I/O 2 
  ABS JMP+*-1-I531+CSLI 
      LIA SC        I/O 4 
  ABS JMP+*-5-I531+CSLI+100000B 
      SKP 
*         12587   1 CHR BUFFER BOARD
* 
O587  NOP 
  ABS JSB+SETP      SETUP COUNT+BUFFER POINTER
      OTA SC        I/O FOR CONTROL WORD
      ABS OR587-* 
      LIA SC        CHECK FOR NOT BUSY
      RAL,RAL 
      SSA 
  ABS JMP+*-3-O587+CSLO 
  ABS JSB+.OUT      DUMP BUFFER 
      OCT 160410    CONTROL WORD FOR 12587
      NOP           NO MORE CONTROL WORDS 
      OCT 12        NORMAL LINE FEED
      OTA SC        OUTPUT NULL 
      CLC SC,C      TURN CARD OFF 
  ABS JMP+CSLO+100000B
OR587 NOP 
      OTA SC        I/O 1 
      STC SC,C      I/O 2 
      SFS SC        I/O 3 
  ABS JMP+*-1-O587+CSLO 
  ABS JMP+*-5-O587+CSLO+100000B 
* 
I587  NOP 
  ABS STA+COT       SAVE COUNT AND
  ABS STB+BFA       BUFFER ADDRESS
  ABS JSB+SETP      SETUP COUNT+BUFFER POINTER
      OTA SC        I/O FOR CONTROL WORD
      ABS IR587-* 
      LIA SC        CHECK FOR NOT BUSY
      RAL,RAL 
      SSA 
  ABS JMP+*-3-I587+CSLI 
  ABS JSB+.IN       LOAD BUFFER 
      OCT 141410    CONTROL WORD FOR 12587
      OCT 2000      SBA FOR 2616 TERMINAL 
      NOP           NO MORE CONTROL WORDS 
      LIA SC        SET FOR INTERRUPT 
      CLC SC,C      TURN CARD OFFF
  ABS JMP+CSLI+100000B
IR587 NOP 
      LIA SC        I/O 0 
      STC SC,C      I/O 1 
      SFS SC        I/O 2 
  ABS JMP+*-1-I587+CSLI 
      LIA SC        I/O 4 
  ABS JMP+*-6-I587+CSLI+100000B 
* 
      SKP 
*         12966  128 CHR BUFFERED BOARD 
* 
C966  NOP 
      ALF           ROTATE BAUD RATE INTO POSITION
      AND B17       MASK OFF OTHERS 
      STA B 
      LDA IX966 
      AND M17 
      IOR B 
      STA IX966 
      LDA OX966 
      AND M17 
      IOR B 
      STA OX966 
      JMP C966,I
* 
O966  NOP 
  ABS JSB+SETP      SETUP COUNT+BUFFER POINTER
      OTA SC        I/O FOR CONTROL WORDS 
      ABS OR966-* 
  ABS JSB+.OUT      DUMP BUFFER 
OX966 OCT 040740    CONTROL WORD 2 (INTF CONTROL) 
OC966 EQU *-O966
      OCT 50077     CONTROL WORD 1 (BUFFER FLAGS RESET) 
      OCT 030056    CONTROL WORD 3 (CHR-FRM CONTROL)
      NOP           NO MORE CONTROL WORDS 
      OCT 12        NORMAL LINE FEED
  ABS JMP+CSLO+100000B NOW EXIT 
O.966 EQU *-O966
OR966 NOP 
      OTA SC        I/O+1 
      CLC SC,C      I/O+2 
      LIA SC        CHECK FOR BUFFER EMPTY
      ALF,ALF       MOVE TO BUFFER EMPTY
      SSA,RSS       IS IT EMPTY?
  ABS JMP+*-3-O966+CSLO NO KEEP CHECKING
  ABS LDA+CSLO+OC966 GET CONTROL WORD 1 
      OTA SC
  ABS JMP+CSLO+O.966+100000B RETURN FOR ANOTHER BYTE
      SKP 
I966  NOP 
  ABS STA+COT       SAVE COUNT AND
  ABS STB+BFA       BUFFER ADDRESS
  ABS JSB+SETP      SETUP COUNT+BUFFER POINTER
      OTA SC        I/O FOR CONTROL WORDS 
      ABS IR966-* 
  ABS JSB+.IN       LOAD BUFFER 
IX966 OCT 040140    CONTROL WORD 2 (INTF CONTROL) 
      OCT 50077     CONTROL WORD 1 (RESET BUFFER FLAGS) 
      OCT 030076    CONTROL WORD 3 (CHR-FRM CONTROL)
      NOP           NO MORE CONTROL WORDS 
      STC SC,C      SET FOR INPUT 
      CLC SC,C      TURN CARD OFF 
  ABS JMP+CSLI+100000B
IR966 NOP 
      STC SC        I/O+1 
      LIA SC        I/O+2 
      SSA,RSS       I/O+3 
  ABS JMP+*-2-I966+CSLI 
  ABS JMP+*-5-I966+CSLI+100000B 
      SKP 
*              LINE PRINTER OUTPUT
* 
OLP67 NOP 
  ABS JSB+SETP      SETUP COUNT+BUFFER POINTER
      RSS           NO CONTROL WORDS
      ABS RLP67-* 
      LIA SC        CHECK IF DEVICE IS READY
      SLA,RSS 
  ABS JMP+*+3-OLP67+LPTR
      OCT 106076    NOT READY TELL OPERATOR 
  ABS JMP+*-4-OLP67+LPTR
  ABS JSB+.OUT      DUMP BUFFER 
      NOP           NO CONTROL WORDS
      OCT 12        NORMAL LINE FEED
      CLC SC,C      TURN CARD OFF 
  ABS JMP+LPTR+100000B
RLP67 NOP 
      OTA SC        I/O 1 
      STC SC,C      I/O 2 
      SFS SC        I/O 3 
  ABS JMP+*-1-OLP67+LPTR
  ABS JMP+*-5-OLP67+LPTR+100000B
* 
* 
OLPXX NOP 
  ABS JSB+SETP  SETUP COUNT+BUFFER POINTER
      RSS           NO CONTROL WORDS
      ABS RLPXX-* 
      LIA SC        CHECK IF DEVICE IS READY
      SSA 
  ABS JMP+*+3-OLPXX+LPTR
      OCT 106076    NOT READY TELL OPERATOR 
  ABS JMP+*-4-OLPXX+LPTR
  ABS JSB+.OUT  DUMP BUFFER 
      NOP           NO CONTROL WORDS
      OCT 100001    FORM CONTROL (1LF)
      CLC SC,C      TURN CARD OFF 
  ABS JMP+LPTR+100000B
RLPXX NOP 
      OTA SC        I/O 1 
      STC SC,C      I/O 2 
      SFS SC        I/O 3 
  ABS JMP+*-1-OLPXX+LPTR
  ABS JMP+*-5-OLPXX+LPTR+100000B
      SKP 
*         PAPER TAPE LOADER DRIVER
* 
PT    EQU * 
* 
* 
PTRD  EQU *-PT
      NOP 
      SSB           READ OR FORWARD SPACE?
  ABS JMP+LD+*-PT+3  REWIND OR FORWARD SPACE
  ABS JSB+LD+PTFW    READ WORD
  ABS JMP+LD+PTRD+100000B 
      SLB            REWIND?
  ABS JMP+LD+PTRD+100000B YES  EXIT 
      RBR,SLB        FILE FORWARD?
      RSS 
  ABS JMP+LD+PTRD+100000B  NO 
PTFF  EQU *-PT
      CLB 
  ABS LDA+LD+PTCX    ANY COUNT REMAINING
      SSA,RSS        ?
  ABS JMP+LD+*-PT+3  NO 
  ABS JSB+LD+PTFW    YES PICK WORDS UP
  ABS JMP+LD+PTFF 
      INB 
      SZA,RSS 
      INB 
  ABS JSB+LD+PTFW 
      SZA                EOF OR EOT?
      SSA 
  ABS JMP+LD+PTRD+100000B  YES RETURN 
  ABS JMP+LD+PTFF      NO DO MORE 
      SKP 
PTFW  EQU *-PT
      NOP 
      SZB,RSS            READ WORD? 
  ABS JMP+LD+PTW         YES
      SLB,RSS 
  ABS JMP+LD+*-PT+3      READ NEXT RECORD 
PTRS  EQU *-PT
      STC SC,C           NO START READER
      CLB,RSS            SEARCH FOR FIRST BYTE
  ABS LDB+%M10-6000B     SET NULL COUNT TO 10 
  ABS JSB+LD+PTRB        WAIT FOR BYTE
      SZA                ANY DATA YET?
  ABS JMP+LD+*-PT+6      YES CONTINUE 
      INB,SZB            NO EOT YET?
  ABS JMP+LD+*-PT-4      NO TRY NEXT BYTE 
      INB 
  ABS STB+LD+PTCX        SET EOF REACHED
  ABS JMP+LD+PTFW+100000B YES RETURN WITH EOT 
      ALF,ALF            PUT COUNT IN UPPER BYTE
  ABS STA+LD+PTDOT       SAVE IT
  ABS JSB+LD+PTRB        READ NEXT BYTE 
      SZA                NEXT BYTE SHOULD BE ZERO 
  ABS JMP+LD+PTEX        NOT SO EXIT
  ABS LDA+LD+PTDOT       RETRIEVE COUNT 
      LDB A 
      BLF,BLF 
      INB 
      CMB 
  ABS STB+LD+PTCX 
  ABS JMP+LD+PTFW+100000B OK RETURN 
      SKP 
PTRB  EQU *-PT
      NOP 
  ABS LDA+%M10-6000B   SET TIME OUT 
  ABS STA+LD+PTDLT
      CLA,CLE 
      SFS SC             READER READY WITH BYTE 
      RSS 
  ABS JMP+LD+PTLD        YES READ IT
      INA,SZA            IS FIRST DELAY OVER? 
  ABS JMP+LD+PTRB+4      NO CHECK IT AGAIN
  ABS ISZ+LD+PTDLT       YES IS SECOND DELAY OVER?
  ABS JMP+LD+PTRB+3      NO RESTART FIRST DELAY 
PTEX  EQU *-PT
      CLC SC,C           YES - STOP READER
      CCA                INDICATE END OF FILE 
      SZB                IS IT REALY END OF TAPE? 
  ABS JMP+LD+PTFW+100000B YES 
      OCT 106074         NO - TAPE TORN OR GATE DOWN
  ABS JMP+LD+PTRS        TRY AGAIN
PTLD  EQU *-PT
      LIA SC             GET BYTE 
      STC SC,C           START NEXT READ
  ABS JMP+LD+PTRB+100000B 
PTW   EQU *-PT
  ABS JSB+LD+PTRB        GET A BYTE 
      ALF,ALF            PUT IT IN UPPER HALF 
  ABS STA+LD+PTDOT       SAVE IT
  ABS JSB+LD+PTRB        READ NEXT HALF 
  ABS IOR+LD+PTDOT       PUT THEM TOGETHER
  ABS ISZ+LD+PTCX        DECREMENT REMAINDING COUNT 
      NOP 
  ABS JMP+LD+PTFW+100000B RETURN
      SKP 
*              DUMPS TO PAPER TAPE IN 
*              ABSOLUTE BINARY FORMAT 
*              DUMPS FROM LOCATION 2B TO FWA
*              AND LWA TO N7700 
* 
PTD   EQU *-PT
      LIA 1,C        GET SELECT CODE
  ABS IOR+%BT15-6000B BUILD INSTRUCTIONS
  ABS IOR+LD+PTDI 
  ABS STA+LD+PTDIO+6 SFS (1022XX) 
  ABS IOR+LD+PTDI+1 
  ABS STA+LD+PTDIO+4 OTA (1026XX) 
  ABS STA+LD+PTDL+1 
  ABS IOR+LD+PTDI+2 
  ABS STA+LD+PTDIO+5 STC,C (1037XX) 
PTDL  EQU *-PT
  ABS LDA+LD+PTDC 
PTCX  EQU *-PT
      NOP                OTA (ALSO STORAGE FOR RDR) 
  ABS JSB+LD+PTDLT   LEADER OUTPUT
      LDA 105B       LAST ADDRESS 
  ABS LDB+%B2-6000B  FIRST ADDRESS
PTD0  EQU *-PT
  ABS STB+BFR 
  ABS STA+BFA 
PTD1  EQU *-PT
  ABS LDA+BFR        CHECK IF DONE BY 
      CMA,INA        BFR > BFA
  ABS ADA+BFA 
      SZA,RSS        ?
  ABS JMP+LD+PTDX    YES DO NEXT SECTION
      LDB A 
  ABS ADB+%M60-6000B IS IT GREATER THAN 60 WORDS
      SSB,RSS        ?
  ABS LDA+%B60-6000B YES  SET ONE BLOCK 
  ABS STA+CNT        SAVE COUNT 
      ALF,ALF        MOVE TO UPPER HALF 
  ABS JSB+LD+PTDOT   OUTPUT COUNT 
  ABS LDA+BFR        GET STARTING ADDRESS 
  ABS STA+COT        SET CHECKSUM 
  ABS JSB+LD+PTDOT   OUTPUT STARTING ADDRESS
PTD2  EQU *-PT
  ABS LDA+BFR+100000B  GET CONTENTS OF ADDRESS
  ABS JSB+LD+PTDOT   FOR OUTPUT 
  ABS LDA+COT        ADD TO CHECKSUM
  ABS ADA+BFR+100000B 
  ABS STA+COT 
  ABS ISZ+BFR        MOVE TO NEXT ADDRESS 
      CCA 
  ABS ADA+CNT        SUBTRACT 1 FROM COUNT
  ABS STA+CNT 
      SZA            IS THAT ALL? 
  ABS JMP+LD+PTD2    NO 
  ABS LDA+COT        YES
  ABS JSB+LD+PTDOT   OUTPUT CHECKSUM
  ABS JMP+LD+PTD1    DO NEXT BLOCK
      SKP 
PTDX  EQU *-PT
  ABS LDA+LD+PTDMA   GET MAX ADDRESS
  ABS IOR+LDMXA-6000B 
  ABS CPA+BFA        WAS THIS THE SECOND PART?
  ABS JMP+LD+PTDEN   YES
      LDB 106B
      INB           LWA+1 
  ABS JMP+LD+PTD0 
* 
PTDEN EQU *-PT
  ABS JSB+LD+PTDLT   TRAILER OUTPUT 
      HLT 77B 
  ABS JMP+LD+PTDL    DO IT AGAIN
* 
*         OUTPUT LEADER TRAILER 
* 
PTDLT EQU *-PT
      NOP 
  ABS LDB+%NE2-6000B
      CLA 
  ABS JSB+LD+PTDOT
      INB,SZB 
  ABS JMP+LD+*-PT-3 
  ABS JMP+LD+PTDLT+100000B
* 
PTDOT EQU *-PT
      NOP 
  ABS JSB+LD+PTDIO
  ABS LDA+LD+PTRB 
  ABS JSB+LD+PTDIO
  ABS JMP+LD+PTDOT+100000B
* 
PTDIO EQU *-PT
      NOP 
      ALF,ALF 
  ABS STA+LD+PTRB 
  ABS AND+%B377-6000B 
      OCT 0              OTA SC 
      OCT 0              STC SC,C 
      OCT 0              SFC SC 
  ABS JMP+LD+PTDIO+100000B
  ABS JMP+LD+*-PT-2 
* 
* 
PTDI  EQU *-PT
      OCT 2200
      OCT 400 
      OCT 1100
PTDC  EQU *-PT
      OCT 110000
PTDMA EQU *-PT
      OCT 7700
* 
      OCT 0,0,0,0,0    SPACE HOLDERS
  ABS JMP+LD+PTD   GO TO PUNCH ROUTINE
      SKP 
*         MAG TAPE LOADER DRIVER
* 
MG    EQU * 
* 
MGLR  EQU *-MG
      NOP 
      SZB,RSS            READ A WORD? 
  ABS JMP+LD+MGW         YES
  ABS STB+LD+MGBF+1 
      SSB,RSS            READ A RECORD? 
  ABS JMP+LD+MGLR0       YES
      SLB,RSS       REWIND? 
  ABS JMP+LD+*-MG+4 
  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-6000B 
  ABS STA+LD+MGDA        SAVE IT FOR LATER
  ABS IOR+%BT15-6000B    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
                                                                                                            