      LDA MEM       NO - THEN 2116/2115 
      ALF,RAR       IF MEMORY 
      AND B7         IS 
      SZA               OVER 8K 
      CLA,INA,RSS   THEN 2116 
      LDA B4        NO THEN 2115
      JMP CFCT        CONFIGURE IT
CF40X CLB           CHECK FOR EAU 
      OTB SWREG     (CLEAR SWR) 
      OCT 101100    RRR 16 INSTRUCTION
      SZA,RSS       DID IT ROTATE?
      JMP *+3       YES THEN 2100/21MX
      LDA B6        NO THEN 2114
      JMP CFCT      CONFIGURE IT
      LIB DMA6      IF I/O BUS
      LDA B7        (SET 2100)
      SZB             IS NOT ZERO 
      INA               THEN 21MX 
      CPA B7        WAS IT 2100?
      JMP *+3       YES - SKIP TIMER IT DOES FUNNY THINGS 
      OCT 100060    OR IF TIMER 
      INA            THEN 21XE
CFCT  RAL           (MPY BY 2 - TWO WORDS PER ENTRY)
      ADA CPTOT     ADD POINTER TO TABLE
      LDB A,I       GET TIMING CONSTANT 
      STB DTMC,I    PUT IT IN UPPER ROUTINES
      STB 110B        AND IN BASE PAGE
      INA           MOVE TO 
      LDA A,I        COMPUTER TYPE AND STANDARD OPTIONS 
      IOR CTO         ADD CALCULATED OPTIONS
      STA CTO         PUT BACK IN BASE PAGE LINK AREA 
      LDA CFCT-2    GET 21XE MICRO TIMER INSTRUCTION
      CPB XETC      IS THIS THE XE TIME CONSTANT? 
      STA DTMI,I    YES PUT MICRO INSTRUCTION IN TIMER ROUTINE
* 
      LDA SWRX
      SZA,RSS       MANUAL? 
      JMP SWRCF     YES 
      SKP 
*           DETERMINE & CONFIGURE CONSOLE INTERFACE DRIVER
* 
      LDA SWRX      GET SWR AGAIN 
      AND B77       ISOLATE CONSOLE SELECT CODE 
      STA CODSC     UPDATE BASE PAGE SC 
      STA CIDSC 
      SZA           IS THERE A CONSOLE? 
      JMP *+3       YES THEN DETERMINE INTERFACE
      LDA CSLDY     NO GET DUMMY CONSOLE
      JMP CF531+1 
      JSB CHSC,I      CHECK AND SAVE SELECT CODE
      STA SVA      SAVE IT FOR I-O LIST UPDATE
      LDA DCO       CHECK IF LINK HAS BEEN LOADED 
      LDB A,I       GET FIRST WORD
      SSB           IF BIT 15 SET THEN
      JMP CF531+1   LINK IS LOADED
      LDB CFSCD     GET POINTER TO SELECT CODE
      JSB ISCR,I       INITIALIZE I-O INSTRUCTIONS
      CLC INTP      GENERATE CRS TO INTERFACE 
CFSC1 CLF SC        CLEAR THE FLAG
CFSC2 SFS SC        IF FLAG 
      RSS              IS STILL 
      JMP CF587          SET THEN 12587 
      LDA CFMRS     IF IT CLEARED THEN 12531/12966
CFSC3 OTA SC        OUTPUT MASTER RESET 
CFSC4 SFS SC        IF FLAG 
      RSS              IS SET 
      JMP CF966          THEN 12966 
CFSC5 LIA SC        CHECK IF 77 STORED
      CPA B77 
      JMP CF531     YES THEN 12531
      LDA SWRX      NO - RESTORE S-REG. 
      OTA SWREG        AND
      LDA DISN           A-REG. AND 
      LDB DIBP                      B-REG.
      HLT 22B            INFORM OPERATOR OF ERROR 
      JMP CFRG      START CONFIGURATION OVER
CF531 LDA CD531     GET POINTER TO 12531
      LDB DCO       AND DRIVER ROUTINE AREA 
      JSB MDVR,I     MOVE CONSOLE DRIVER INTO PLACE 
      DEC -45       (NUMBER OF WORDS TO BE MOVED) 
      JMP CFOP      GO TO OUTPUT COMPUTER OPTIONS 
CF587 LDA CD587     GET POINTER TO 12587
      JMP CF531+1 
CF966 LDA CD966     GET POINTER TO 12966/8
      JMP CF531+1 
* 
CFMRS OCT 150077
CFSCD DEF *+1,I 
      DEF CFSC1 
      DEF CFSC2 
      DEF CFSC3 
      DEF CFSC4 
      DEF CFSC5 
      DEF M1
      SKP 
*          AUTOMATIC CONFIGURATION
* 
CFOP  LDA SWRX      GET LOADER SELECT CODE AND TYPE 
      ALF,ALF 
      RAL,RAL 
      AND B777
      SZA,RSS       IS IT CONVERSATIONAL? 
      JMP CFCON     YES 
      STA 111B      PUT IT IN BASE PAGE 
      AND B77 
      JSB CHSC,I    CHECK AND SAVE SELECT CODE
      LDA SWRX      GET POINTER TO LOADER 
      ALF 
      AND B7
      ADA DINDD 
      LDA A,I 
      SZA           VALID DEVICE? 
      JMP *+3       YES 
      HLT 72B       NO - TELL OPERATOR
      LDA LDDY      USE PSEUDO LOADER WITH HALT 
      LDB DLDVR     GET LOCATION
      JSB MDVR,I           AND MOVE IT
      ABS LDVR-7700B
      LDA LPDYD     PUT JSB TO CONSOLE
      LDB LPDV        IN LP DRIVER
      JSB MDVR,I
      DEC -21 
      JSB CFM,I     MOVE UTILITIES AND DRIVERS
      CLA 
      LDB SWRX
      ELB 
      CLB 
      SEZ           ANY REQUEST?
      LDA DISN      YES - GET IT
      SEZ 
      LDB DIBP
* 
CFLDR STA SVA       SAVE A &
      STB SVB          B - REG. 
      CCB           SET TO REWIND 
      SZA,RSS       SHOULD I? 
      JSB DRI,I     YES 
      LDA SVA       RESTORE REGISTERS 
      LDB SVB 
      JMP 120B        GO TO LOADER
      SKP 
*          MANUAL CONFIGURATION 
* 
* 
SWRCF LDA CTO       GET OPTIONS FOR DISPLAY 
      OTA SWREG 
      HLT 0         WAIT FOR COMPUTER TYPE AND OPTIONS
      LIA SWREG 
      SZA,RSS       IF NO INPUT SKIP UPDATE 
      JMP SWRCS 
      STA CTO       SET THEM IN PLACE 
      ALF,RAL 
      AND B37       GET COMPUTER TIMING 
      ADA CPTOT 
      LDB A,I 
      STB DTMC,I
      STB 110B
      LDA CFCT-2    GET 21XE MICRO TIMER INSTRUCTION
      CPB XETC      IS THIS THE 21XE TIME CONSTANT? 
      STA DTMI,I    YES PUT INSRTUCTION IN TIMER ROUTINE
* 
SWRCS CLA           CLEAR SWITCH REGISTER 
      OTA SWREG 
      HLT 1         WAIT FOR CONSOLE
      LIA SWREG 
      STA SWRX      SAVE SWITCH REGISTER
      SZA           IS THERE A CONSOLE
      JMP SWRCN     YES 
      STA SCX       NO CLEAR SELECT CODE
      STA CODSC 
      STA CIDSC 
      LDA CSLDY     PUT DUMMY IN CONSOLE DRIVER 
      LDB DCO 
      JSB MDVR,I     MOVE IT INTO LOCATION
      DEC -45 
      JMP SWRLP     CONTINUE WITH LINE PRINTER
SWRCN ALF,ALF       DETERMINE 
      RAL,RAL          CONSOLE
      AND B7             TYPE 
      RAL 
      ADA CNSLD 
      STA TMPA
      INA 
      LDB A,I 
      LDA SWRX      PICK UP PARAMETERS
      SZB           ARE ANY REQUIRED
      JSB B,I       YES UPDATE DRIVER 
      LDA SWRX      UPDATE SELECT CODE
      AND B77 
      JSB CHSC,I      CHECK AND SAVE SELECT CODE
      STA CODSC 
      STA CIDSC 
      LDA TMPA,I    MOVE DRIVER INTO LOCATION 
      LDB DCO       (CNSL DEF)
      JSB MDVR,I
      DEC -45 
      SKP 
SWRLP CLA           CLEAR SWITCH REGISTER 
      OTA SWREG 
      HLT 2         WAIT FOR LP 
      LIA SWREG 
      STA SWRX
      STA LPDSC 
      SZA,RSS       IS THERE A LP 
      JMP CFLPD     NO - USE DUMMY
      AND B77       YES 
      JSB CHSC,I      CHECK AND SAVE SELECT CODE
      STA LPDSC 
      LDA SWRX      GET LP TYPE 
      ALF,ALF 
      RAL,RAL 
      AND B7
      ADA LPDF      GET POINTER TO LP DRIVER
      LDA A,I 
      LDB LPDV
      JSB MDVR,I     MOVE LP DRIVER INTO LOCATION 
      DEC -21 
      JMP *+5 
CFLPD LDA LPDYD     USE JSB TO CONSOLE
      LDB LPDV
      JSB MDVR,I     MOVE DRIVER L.P. INTO PLACE
      DEC -21 
* 
      LDA MEM       GET CALCULATED MEMORY 
      OTA SWREG     OUTPUT IT 
      HLT 3         WAIT FOR OPERATOR 
      LIA SWREG     GET INPUT 
      AND B70K      MASK OFF LOWER BITS 
      STA MEM 
      SKP 
      CLA           CLEAR SWITCH REGISTER 
      OTA SWREG 
      HLT 4         WAIT FOR LOADING DEVICE 
      LIA SWREG     GET LOADER SELECT CODE AND TYPE 
      AND B777
      STA 111B      PUT IT IN BASE PAGE 
      AND B77 
      JSB CHSC,I    CHECK AND SAVE SELECT CODE
      LDA 111B      GET POINTER TO LOADER 
      ALF,ALF 
      RAL,RAL 
      AND B7
      ADA DINDD 
      LDA A,I 
      SZA           VALID DEVICE? 
      JMP *+3       YES 
      HLT 72B       NO - TELL OPERATOR
      LDA LDDY      USE PSEUDO LOADER WITH HALT 
      LDB DLDVR     GET LOCATION
      JSB MDVR,I           AND MOVE IT
      ABS LDVR-7700B
      JSB CFM,I     MOVE UTILITIES AND DRIVERS
      CLA 
      CLB 
      OTA SWREG     CLEAR S-REG 
      HLT 77B       CONFIGURATION COMPLETE
      JMP CFLDR     GO TO LOADER
      SKP 
*         CONVERSATIONAL CONFIGURATION
* 
CFCON CLA           DO A CR/LF
      JSB COD,I 
      LDA CTO       GET COMPUTER TYPE 
      ALF 
      AND B17 
      ALS,ALS       MPY BY 4
      ADA CFCTP     CONVERT TO MESSAGE POINTER
      STA *+2 
      JSB MSG,I       OUTPUT COMPUTER TYPE TO CONSOLE 
      NOP           (NO INPUT WITH IT)
      LDA CTO       GET OPTIONS 
      AND B4
      LDB CFDNA     DMA NOT AVAILABLE 
      SZA 
      LDB CFDIV     DMA IS AVAILABLE
      CLA,CLE       OUTPUT MESSAGE TO CONSOLE 
      JSB FMTO,I
      LDA CTO       SKIP MEMORY PROTECT MESSAGE 
      ALF 
      AND B17 
      CPA B4        IF IT'S A 15
      JMP CFMZM     YES SKIP MESSAGE
      CPA B5        OR IF IT'S A 14 
      JMP CFMZM     YES SKIP MESSAGE
      LDA CTO       NOW MEMORY PROTECT
      AND B40 
      LDB CFMNA     MPRT NOT AVAILABLE
      SZA 
      LDB CFMIV     MPRT IS AVAILABLE 
      CLA,CLE 
      JSB FMTO,I    OUTPUT MESSAGE TO CONSOLE 
CFMZM LDA MEM       GET MEMORY SIZE 
      ALF 
      AND B7
      ADA CFMTB 
      LDB A,I 
      CLA,CLE 
      JSB FMTO,I      AND OUTPUT IT TO THE CONSOLE
      CLA,CLE 
      LDB CFMS
      JSB FMTO,I
      CLA           DO CR-LF
      JSB COD,I 
      SKP 
*     ASK FOR LINE PRINTER
* 
CFDOD CLA 
      STA LPDSC     CLEAR SELECT CODE 
      JSB MSG,I       "LINE PRINTER TYPE + SC..." 
      DEF DOTDM 
      JSB CNST,I      SEARCH FOR DEVICE 
      DEF DOTDT 
      JMP CFDOD     NOT FOUND TRY AGAIN 
      STA TMPA      SAVE POINTER
      CPA LPDYD     NONE? 
      JMP CFDLP     YES - SKIP SELECT CODE
      JSB CNSC,I      CONVERT SELECT CODE 
      JMP CFDOD     ERROR TRY AGAIN 
      STA SCX       SAVE FOR MOVE 
      STA LPDSC       AND PUT IT IN BASE PAGE 
CFDLP LDA TMPA
      LDB LPDV
      JSB MDVR,I     MOVE DRIVER INTO LOCATION
      DEC -21 
      CLA           DO CR/LF
      JSB COD,I 
CFDIN JSB MSG,I       "DIAG. INPUT DEVICE + SC.." 
      DEF DINDM 
      JSB CNST,I      SEARCH FOR DEVICE 
      DEF DINDP 
      JMP CFDIN     NOT FOUND TRY AGAIN 
      STA TMPA
      JSB CNSC,I      CONVERT SELECT CODE 
      JMP CFDIN     ERROR TRY AGAIN 
      STA SCX       SAVE FOR MOVE 
      LDB TMPA
      BLF 
      RBL,RBL 
      IOR B          ADD TYPE FOR BASE PAGE 
      STA DRISC 
      LDA TMPA
      ADA DINDD 
      LDA A,I       GET POINTER TO DRIVER 
      LDB DLDVR 
      JSB MDVR,I     MOVE LOADER INTO POSITION
      ABS LDVR-7700B
      CLA           DO CR-LF
      JSB COD,I 
      SKP 
      JSB MSG,I       READY INPUT DEVICE
      DEF LDVRY,I   (NO INPUT)
      CLA 
      JSB COD,I     DO CR/LF
CFSN0 JSB MSG,I       "DIAG. SERIAL NUMBER.." 
      DEF DGSNM 
      CCA,CLE 
      LDB IBUFD 
      JSB AS2N,I
      STA SVA       SAVE SERIAL NUMBER
      LDA B,I       CHECK NEXT CHARACTER FOR ZERO 
      SEZ,RSS 
      ALF,ALF 
      AND B177
      STA SVB 
      SZA,RSS       IS IT?
      JMP CFSN1     YES JUST USE SERIAL NUMBER
      CPA B54       IS IT A COMMA?
      RSS 
      JMP CFSN0     NO SO TRY AGAIN 
      CCA,SEZ,CME   YES 
      INB           MOVE TO NUMBER
      JSB AS2N,I    CONVERT BIT PATTERN 
      STA SVB       SAVE IT 
      LDA B,I 
      SEZ,RSS 
      ALF,ALF 
      AND B177
      SZA           IS IT END OF BUFFER?
      JMP CFSN0     NO SO TRY AGAIN 
CFSN1 CLA 
      STA SCX       CLEAR SELECT CODE FOR MOVE
      JSB CFM,I     MOVE DRIVERS AND UTILITIES TO LAST PAGE 
      LDA SVA       GET SERIAL NUMBER 
      LDB SVB 
      JMP CFLDR 
* 
      REP 104B
      OCT 106075    MEMORY HALT 
      SKP 
*     MOVE UTILITY AND DRIVERS TO UPPER MEMORY
* 
CFMEM NOP 
      LDB DEFT      UPDATE ALL ADDRESS POINTERS 
PTUD  LDA B,I 
      CPA M1        END OF LIST 
      JMP *+6       YES 
      AND M70K      MASK OLD ADDRESS
      IOR MEM       ADD NEW ADDRESS 
      STA B,I 
      INB           MOVE TO NEXT ADDRESS
      JMP PTUD
      CLA           NO SC UPDATE
      STA SCX 
      LDA B6.5K     A = FROM ADDRESS
      LDB MEM       B = TO ADDRESS
      SZB,RSS       IS A MOVE NECESSARY 
      JMP *+4       NO
      ADB A 
      JSB MVDVR 
      ABS 6500B-7700B 
      JMP CFMEM,I   NO RETURN 
* 
*     MOVE DRIVER INTO LOCATION AND UPDATE SELECT CODE
* 
MVDVR NOP 
      STA FROM      SAVE FROM LOCATION
      STB TO        SAVE TO LOCATION
      LDA MVDVR,I   GET NUMBER OF 
      ISZ MVDVR       WORDS TO BE MOVED 
      STA MVCNT 
MVDV0 LDA FROM,I    GET WORD
      LDB FROM,I
      CPB IOGM3     IS IT SWR REF?
      JMP MVDV1     YES - SKIP SC 
      AND IOGM0 
      SZA,RSS       IS IT A HALT
      JMP MVDV1     YES - SKIP SELECT CODE
      LDA FROM,I
      AND IOGM1 
      CPA IOGM2     IS IT AN IO INSTRUCTION 
      ADB SCX       YES - ADD SELECT CODE 
MVDV1 STB TO,I      PUT IT IN PLACE 
      ISZ FROM      INCREMENT ADDRESSES 
      ISZ TO          FOR NEXT WORD 
      ISZ MVCNT     ALL WORDS MOVED?
      JMP MVDV0     NO
      JMP MVDVR,I 
* 
IOGM0 OCT 700 
IOGM1 OCT 172076
IOGM2 OCT 102000
IOGM3 LIA 1,C 
TO    NOP 
FROM  NOP 
MVCNT NOP 
      SKP 
*         INITIALIZE SELECT CODE
* 
ISC   NOP 
      LDA B,I 
      CPA M1        END OF LIST?
      JMP ISC,I     YES 
      CPA M2        INCREMENT SELECT CODE 
      RSS 
      JMP *+3       NO
      ISZ SVA      YES
      JMP *+4         BUT SKIP UPDATE OF M2 
      AND M77       MASK OFF OLD SELECT CODE
      ADA SVA      ADD NEW ONE
      STA B,I       PUT IT BACK IN PLACE
      INB           MOVE TO NEXT ONE
      JMP ISC+1 
* 
*     CHECK AND SAVE SELECT CODE
* 
CKSC  NOP 
      STA SCX       SAVE SELECT CODE
      CLE,ERA 
      CLE,ERA 
      CLE,ERA 
      SZA,RSS 
      JMP *+3 
      LDA SCX       RESTORE SELECT CODE 
      JMP CKSC,I    RETURN
HLT10 HLT 10B       SELECT CODE INPUT ERROR 
      JMP *-1       (NOT RECOVERABLE) 
      SKP 
*         OUTPUT MESSAGE + CALL FOR INPUT 
* 
MSGR  NOP 
      CLA,CLE 
      LDB MSGR,I    OUTPUT MESSAGE
      ELB,CLE,ERB   CLEAR BIT 15
      SZB           SKIP OUTPUT IF NO MESSAGE 
      JSB FMTO,I
      LDB MSGR,I    IS THIS A MESSAGE ONLY
      SSB           ? 
      JMP MSGX      YES - EXIT
      LDA N10       CLEAR 
      LDB IBUFD        BUFFER 
      STB TMPA
      CLB 
      STB TMPA,I
      ISZ TMPA
      INA,SZA 
      JMP *-3 
      LDA D20       CALL FOR INPUT
      LDB IBUFD 
      JSB CID,I 
      SZA,RSS       IF NO INPUT TRY AGAIN 
      JMP MSGR+1
      LDA IBUFD     SET POINTER 
      RAL             FOR GET BLOCK (GETB)
      STA IBUFP 
MSGX  ISZ MSGR
      JMP MSGR,I    RETURN
* 
N10   DEC -10 
D20   DEC 20
IBUF  OCT 0,0,0,0,0,0,0,0,0,0 
      NOP 
      SKP 
* 
*         TABLE SEARCH ROUTINE
* 
CNTS  NOP 
      JSB GETA      GET FOUR CHARACTERS 
      LDB CNTS,I
      ISZ CNTS
CNTS0 LDA B,I       START SEARCH
      CPA M1        END OF LIST?
      JMP CNTS,I    YES-ERROR RETURN
      CPA SVA       DO THE FIRST TWO CHR'S COMPAR?
      JMP *+5       YES 
      INB           NO MOVE TO
CNTS1 INB            NEXT BLOCK 
      INB 
      JMP CNTS0 
      INB 
      LDA B,I 
      CPA SVB       DO THE NEXT TWO CHR'S COMPARE?
      JMP *+2 
      JMP CNTS1     NO
      INB           YES 
      LDA B,I       GET NEXT WORD 
      ISZ CNTS       RETURN P+3 
      JMP CNTS,I
* 
      SKP 
*         GET 4 ASCII CHARACTERS (FROM CONSOLE INPUT BUFFER)
*         IN A & B REG. THEN SKIP TO COMMA OR EOL 
* 
GETA  NOP 
      CLA           CLEAR CHARACTERS FIRST
      STA SVA 
      STA SVB 
      JSB GETCH     FIRST CHARACTER 
      JMP GETAE 
      ALF,ALF 
      STA SVA 
      JSB GETCH     SECOND CHARACTER
      JMP GETAE 
      IOR SVA 
      STA SVA 
      JSB GETCH     THIRD CHARACTER 
      JMP GETAE 
      ALF,ALF 
      STA SVB 
      JSB GETCH     FOURTH CHARACTER
      JMP GETAE 
      IOR SVB 
      STA SVB 
      JSB GETCH     WAIT FOR COMMA OR EOL 
      RSS 
      JMP *-2 
GETAE LDA SVA       GET THE FOUR CHARACTERS 
      LDB SVB 
      JMP GETA,I    RETURN
* 
GETCH NOP 
      LDB IBUFP 
      CLE,ERB 
      LDA B,I 
      SEZ,RSS 
      ALF,ALF 
                                    