* 
*     *   TEST SECTION 3  * 
* 
*         *    LOADS MICROPROGRAMS AND EXECUTES THEM
* 
TST03 EQU * 
TEST3 NOP 
      LDA TEST      ARM MESSAGE 
      JSB TMSG       H030 
      LDA TRSS      ARM RSS 
      STA T.JMP      INSTRUCTION
      LDA MACH1     IS THIS 
      SZA,RSS        A 2100?
      JMP T.450     NO,JUMP TO 21XX TESTING 
      LDA MOD       YES,IS MODULE 
      CPA B1         1 BEING USED?
      JMP T.400     YES,GET MODULE 1 MACROS 
      CPA B2        NO,IS MODULE 2 BEING USED?
      JMP T.401     YES,GET MODULE 2 MACROS 
      JSB CMOD3     NO,FORM MOD #3 MICROCODE
      LDA MAC3      GET MODULE 3 MACROS 
T.402 EQU * 
      STA MAC01     FORM MACRO TO CALL TSTM1 MICRO
      ADA B20 
      STA MAC02     FORM MACRO TO CALL TSTM2 MICRO
      ADA B20 
      STA MAC03     FORM MACRO TO CALL TSTM3 MICRO
      STA TMAC3     SAVE IT 
      JMP T.403 
T.400 EQU * 
      LDA MAC1      LOAD A WITH MOD1 MACRO
      JMP T.402 
T.401 EQU * 
      JSB CMOD2     FORM MOD #2 MICROCODE 
      LDA MAC2      LOAD A WITH MOD2 MACRO
      JMP T.402 
T.403 EQU * 
      JSB L2100     LOAD MICROCODE FOR 2100 
STP17 JSB SSTEP     STEP 17 
      CCA           SET A & B 
      CCB            TO ALL 1'S 
      STA TEMP7     SAVE AS EXPECTED
      STA TEMP8      A & B REGISTERS
MAC01 NOP           CALL TSTM1 TO TEST MICROJUMP
      CPA ONES      IS A OK?
      RSS           YES 
      JMP T.404     NO,GO REPORT E007 
      CPB ONES      IS B OK?
      JMP T.405     YES GO TO NEXT STEP 
T.404 EQU * 
      STA TEMPA     NO,SAVE A & B 
      STB TEMPB      FOR E007 
      LDA MAC01     SAVE
      STA BMAC       MACRO
      JSB ER007     GO REPORT E007
T.405 EQU * 
STP20 JSB CSTEP     STEP 20 
      LDA ZERO      FORM EXPECTED 
      STA TEMP7      A & B REGISTERS
      LDB ONES
      STB TEMP8 
      CCA           SET A & B 
      CCB            TO ALL 1'S 
MAC02 NOP           CALL TSTM2 MICROPROGRAM 
      JMP T.406     GO REPORT E005
      CPA ZERO      IS A OK?
      RSS           YES 
      JMP T.407     NO,GO REPORT E007 
      CPB ONES      IS B OK?
      JMP T.408     YES,GO TO NEXT STEP 
T.407 EQU * 
      STA TEMPA     NO,SAVE A & B 
      STB TEMPB      FOR E007 
      LDA MAC02     SAVE
      STA BMAC       MACRO
      JSB ER007     GO REPORT E007
      JMP T.408 
T.406 EQU * 
      STA TEMPA     SAVE A & B
      STB TEMPB      FOR E005 
      LDA MAC02     SAVE
      STA BMAC       MACRO
      JSB ER005     GO REPORT E005
T.408 EQU * 
STP21 JSB CSTEP     STEP 21 
      CLA           CLEAR 
      STA TEMP4      COUNTER
T.409 EQU * 
      LDA MAC03     GET BITS 0-9 OF MACRO 
      AND MASK9      FOR FORMING EXPECTED B REG 
      AND ONES      FORM IT 
      STA TEMP9     SAVE IT 
      STA TEMP8     SAVE AS EXPECTED B REG
      CCA           SET A & B 
      CCB            TO ALL 1'S 
      STA TEMP7     SAVE AS EXPECTED A REG
MAC03 NOP           CALL TSTM3 MICROPROGRAM 
      JMP T.410     GO REPORT E005
      CPA ONES      IS A OK?
      RSS           YES 
      JMP T.411     NO,GO REPORT E007 
      CPB TEMP9     IS B OK?
      JMP T.412     YES 
T.411 EQU * 
      STA TEMPA     NO,SAVE A & B 
      STB TEMPB      FOR E007 
      LDA MAC03     SAVE
      STA BMAC       MACRO
      JSB ER007     GO REPORT E007
      JMP T.412 
T.410 EQU * 
      STA TEMPA     SAVE A & B
      STB TEMPB      FOR E005 
      LDA MAC03     SAVE
      STA BMAC       MACRO
      JSB ER005     GO REPORT E005
T.412 EQU * 
      ISZ TEMP4     IF IN STEP 22,THEN DONE?
T.JMP RSS           SKIP IN STEP21,JMP T.414 STEP22 
      JMP T.413     YES 
STP22 JSB CSTEP     STEP 22 
T.LDA LDA M4        SET 
      STA TEMP4      COUNTER
      LDA TJMP      ARM 
      STA T.JMP      JMP INSTRUCTION
      LDA TMAC3     INSURE MAC03
      STA MAC03      IS CORRECT 
T.414 EQU * 
      LDA MAC03     INCREMENT 
      ADA B7         THE MACRO
      STA MAC03       BY 7
      JMP T.409     GO DO NEW MACRO 
T.413 EQU * 
      LDA LDA1A     ARM LDA 
      STA T.LDA      INSTRUCTION
      LDA TRSS      ARM 
      STA T.JMP      RSS INSTRUCTION
      JSB REMOD     RESTORE 2100 MICROCODE
      JSB REMX      RESTORE 2100 MICROCODE
      JMP TEST3,I 
T.450 EQU * 
      LDA MOD       FORM
      CMA,INA        CORRECT
      LDB MAC0        MACRO 
      ADB B40          FOR
      INA,SZA           CURRENT 
      JMP *-2            MODULE # 
      ADB B1
      STB MAC01 
      ADB B20       FORM
      STB MAC02      REMAINING
      ADB B7          MACROS
      STB MAC03 
      STB TMAC3 
      JSB CMODX     FORM CURRENT MOD MICROCODE
      JSB L21XX     LOAD MICROCODE FOR 21XX 
      JMP STP17 
TJMP  JMP T.414     JMP TO T.414 INSTRUCTION
      HED TSTSS 
* 
*     *   SPECIAL TESTING ROUTINE   * 
* 
*         *    ENTERED WHEN SWITCH REGISTER BIT 1 IS SET
*              DURING PROGRAM EXECUTION. ROUTINE HALTS AND
*              ACCEPTS INFORMATION IN THE A AND B REGISTERS.
*              WHEN HALTED,OPERATOR ENTERS :
* 
*              A REGISTER - (8 BIT WCS ADDRESS)(8 MSB OF MICROWORD) 
* 
*              B REGISTER - (16 LSB OF MICROWORD) 
* 
*              PRESS RUN. PROGRAM HANGS IN A LOOP,WRITING AND 
*              READING THE PATTERN SPECIFIED AT THE LOCATION
*              SPECIFIED. LOOPING CONTINUES UNTIL SWITCH
*              REGISTER BIT 1 IS CLEARED. 
* 
TSTSS EQU * 
      CLA           CLEAR 
      CLB            REGISTERS
HLT63 HLT 63B 
      STA TEMP1     SAVE
      STB TEMP4      ENTRY
SS.1  EQU * 
      LDA TEMP1     WRITE THE 
      LDB TEMP4      PATTERN
      JSB WRITE       ON WCS
      AND MASK3     GET 
      STA TEMP7      ADDRESS
      JSB READ      READ WCS LOCATION 
      LIA 1         CLEARED SW REG
      RAR,SLA        BIT 1 YET? 
      JMP SS.1      NO,LOOP 
      JMP BACK,I    YES,RETURN TO START 
      HED TSTMM 
* 
*     *   MULTIPLE MODULE TESTING ROUTINE   * 
* 
*         *    CONTROLS TESTING TO RUN DIAGNOSTIC ON ALL WCS
*              MODULES PRESENT. ENTERED WHEN SWITCH REGISTER
*              BIT 0 IS SET AND DIAGNOSTIC HAS COMPLETED
*              CURRENT PASS ON LOWEST ORDER WCS MODULE PRESENT. 
*              WHEN HALTED,OPERATOR ENTERS :
* 
*              HALT 102060- 
* 
*              A REGISTER : 
* 
*              BITS 0  THRU  5 - SELECT CODE OF NEXT HIGHER ORDER 
*              WCS MODULE PRESENT.
* 
*              BITS 6 THRU 11 - CLEARED 
* 
*              BITS 12 THRU 15 - CONTROL STORE MODULE BEING USED. 
* 
* 
* 
*              B REGISTER : 
* 
*              BITS 0  THRU  5 - SELECT CODE OF HIGHEST ORDER 
*              WCS MODULE PRESENT.
* 
*              BITS  6 THRU 11 - CLEARED
* 
*              BITS 12 THRU 15 - CONTROL STORE MODULE BEING USED
* 
*              IF THERE IS NO 3RD WCS MODULE AND ONLY 2 WCS MODULES 
*              WILL BE TESTED,CLEAR THE B REGISTER. 
* 
*              PRESS RUN. PROGRAM WILL PERFORM DIAGNOSTIC ON EACH 
*              WCS MODULE PRESENT. IT WILL DO THE LOWEST ORDER WCS
*              MODULE,THEN NEXT HIGHER,NEXT HIGHER(IF PRESENT) AND
*              THEN REPORT A PASS. MULTIPLE MODULE TESTING
*              CONTINUES UNTIL SWITCH REGISTER BIT 0 IS CLEARED.
* 
*              NOTE**  IF ONE MODULE IS MAKING ERRORS,HIGHER ORDER
*              MODULES MAY BE EFFECTED. 
* 
TSTMM EQU * 
      LDA PASS      IN SAME 
      CPA SPASS      PASS?
      JMP MM.4      YES 
      STA SPASS     NO,FIRST TIME THRU THIS PASS
      LDA MMFLG     HAS TSTMM 
      SZA            BEEN CONFIGURED? 
      JMP MM.3      YES 
      LDA JBACM     SET PROGRAM OPTION
      STA JBAC1      BIT12 FOR USE
      STA JBAC2       WITH TSTMM
      CLA           CLEAR REGISTERS 
      CLB            FOR TSTMM ENTRIES
HLT60 HLT 60B       HALT FOR ENTRIES
      STA TEMP7     SAVE A REGISTER 
      STB TEMP3     SAVE B REG
      AND MASK6     GET MODULE
      ALF            # OF NEXT
      STA TEMP8       HIGHER ORDER WCS
      CMA,INA       MAKE INTO -#
      ADA MOD       IS IT HIGHER
      SSA,RSS        THAN LOW ORDER WCS?
      JMP MM.8      NO,INVALID
      LDA TEMP3     YES,NOW 
      AND MASK6      CHECK NEXT 
      ALF             HIGHER ORDER WCS
      SZA,RSS       IS IT PRESENT?
      JMP MM.9      NO,SKIP 
      CMA,INA 
      ADA TEMP8 
      SSA           OK? 
      JMP MM.9      YES 
MM.8  EQU * 
      LDA TEMP7     NO,LOAD 
      LDB TEMP3      ENTRIES
HLT54 HLT 54B 
      JMP HLT60+1   TRY AGAIN 
MM.9  EQU * 
      LDA TEMP7 
      JSB CONF1     GO CONFIGURE
      LDA MOD       SAVE NEXT ORDER 
      LDB SC         WCS SELECT CODE
      STA SAVE6       AND CONTROL STORE 
      STB SAVE7        MODULE # 
      LDA TEMP3     LOAD B REG ENTRY
      SZA           DEFAULT CASE? 
      JMP MM.1      NO
      CLA           YES,ONLY TWO WCS
      STA SAVE8      MODULES ARE PRESENT
      STA SAVE9 
      JMP MM.2
MM.1  EQU * 
      JSB CONF1     GO CONFIGURE
      LDA MOD       SAVE HIGH ORDER 
      LDB SC        WCS SELECT CODE 
      STA SAVE8       AND CONTROL STORE 
      STB SAVE9        MODULE # 
MM.2  EQU * 
      CCA           SET TSTMM 
      STA MMFLG      CONFIGURATION FLAG 
HL74  HLT 74B       GOOD CONFIGURATION
MM.3  EQU * 
      LDA SAVE4     FORM UP LOW ORDER 
      ALF,ALF        WCS MODULE SELECT
      ALF             CODE AND CONTROL
      IOR SAVE5        STORE MODULE # 
      JSB CONF1     GO CONFIGURE PROGRAM
      JMP MM.5
MM.4  EQU * 
      LDA MOD       ARE WE ON 
      CPA SAVE4      2ND TIME THRU? 
      RSS           YES 
      JMP MM.6      NO
      LDA SAVE6     FORM UP NEXT HIGHER 
      ALF,ALF        ORDER WCS MODULE 
      ALF             SELECT CODE AND 
      IOR SAVE7        CONTROL STORE MODULE # 
      JSB CONF1     GO CONFIGURE PROGRAM
      JMP MM.5
MM.6  EQU * 
      LDA SAVE8     THIRD TIME THRU 
      SZA,RSS        IS WCS PRESENT?
      JMP MM.7      NO
      CPA MOD       COMPLETED PASS? 
      JMP MM.7      YES 
      ALF,ALF       NO,FORM UP HIGH ORDER 
      ALF            WCS MODULE SELECT
      IOR SAVE9       CODE AND CONTROL STORE MOD. # 
      JSB CONF1     GO CONFIGURE
MM.5  EQU * 
      JMP BACK,I    NO,GO DO IT 
MM.7  EQU * 
      LDA PP8,I     PUT ASTERIX AT
      AND MASK2      END OF PASS MSG
      IOR ASTRX       TO INDICATE MULTIPLE
      STA PP8,I        MODULE TESTING PASS
      JMP PMRTN,I   REPORT PASS 
      HED TSTLL 
* 
*     *   MICROCODE LOOP ROUTINE   *
* 
* 
*              ENTERED WHEN SWITCH REGISTER BIT 6 IS SET DURING 
*              PROGRAM EXECUTION. SELECTS MACROINSTRUCTION WHICH
*              CALLS LOOP IN MICROCODE OF CURRENT CONTROL STORE 
*              MODULE. LOOPS UNTIL SWITCH REGISTER BIT 6 IS 
*              CLEARED. 
*              NOTE**  IF A JMP MICROINSTRUCTION WON'T WORK(IE. 
*              STEP 17 GIVES ERRORS),THEN THE PERFORMANCE OF
*              THIS ROUTINE IS UNPREDICTABLE. 
* 
TSTLL EQU * 
      LDA MACH1     IS THIS 
      SZA            A 2100?
      JMP LL.0      YES 
      LDA MOD       NO,FORM 
      CMA,INA        MACRO
      LDB MAC0        TO
      ADB B40          CALL 
      INA,SZA           LOOP
      JMP *-2            IN 21XX
      ADB B36 
      STB MAC04 
      JMP LL.4
LL.0  EQU * 
      LDA MOD       GET CURRENT MODULE #
      ADA M2
      SSA           IS IT 1?
      JMP LL.1      YES 
      ADA M1        NO
      SSA           IS IT 2?
      JMP LL.2      YES 
      LDA MAC3      NO,MUST BE 3
LL.3  EQU * 
      ADA B100      FORM MACRO
      STA MAC04      TO CALL LOOP 
      JMP LL.4
LL.1  EQU * 
      LDA MAC1      USE MODULE 1 MACRO
      JMP LL.3
LL.2  EQU * 
      LDA MAC2      USE MODULE 2 MACRO
      JMP LL.3
LL.4  EQU * 
MAC04 NOP           CALL LOOP 
      LIA 1         GET SW REG
      AND BIT6      IS BIT 6
      SZA            STILL SET? 
      JMP LL.4      YES 
      JMP BACK,I    NO,RETURN TO START
      HED REMX
* 
*     *   RESTORE 21XX MICROCODE ROUTINE   *
* 
*         *    RESTORES MICROCODE FOR 21XX FOR USE IN MODULE #3 
* 
*              CALLING SEQUENCE : 
* 
*              JSB REMX 
* 
REMX  NOP 
      LDA BBUF1     INITIALIZE
      STA TEMP8      POINTERS 
      LDB PMODX 
RMX.1 EQU * 
      LDA B,I       RESTORE HIGH
      STA TEMP8,I    8 BITS 
      INB 
      ISZ TEMP8 
      LDA B,I       RESTORE LOW 
      STA TEMP8,I    16 BITS
      INB 
      ISZ TEMP8 
      CPB EMODX     DONE UNCD JMPS? 
      RSS           YES 
      JMP RMX.1     NO
      LDA TEMP8     BUMP
      ADA B732       POINTER
      STA TEMP8 
      LDA B,I       RESTORE 
      STA TEMP8,I    THE
      INB             CNDX JMP
      ISZ TEMP8 
      LDA B,I 
      STA TEMP8,I 
      JMP REMX,I
      HED CMODX 
* 
*     *   CHANGE 21XX MICROCODE ROUTINE   * 
* 
*         *    MODIFIES MICROCODE FOR 21XX FOR USE IN CURRENT 
*              CONTROL STORE MODULE.
* 
*              CALLING SEQUENCE : 
* 
*              JSB CMODX
* 
CMODX NOP 
      LDA PMODX     INITIALIZE
      STA TEMP7      VARIABLES
      LDA B2000 
      CMA,INA 
      STA TEMP9 
      CLA 
      STA TEMP1 
      LDA BBUF1 
      STA TEMP8 
      LDA B3
CMX.5 CPA MOD       GOT MODULE #? 
      JMP CMODX,I   YES,RETURN
      STA TEMP4     NO,STORE IT 
      LDB TEMP1     FORM
      ADB B2000      CURRENT
      STB TEMP1       MODIFICATION
      LDB TEMP7     POINT TO LOW
      INB            16 BITS OF MICROWORD 
      ISZ TEMP8 
CMX.1 EQU * 
      CLE           CLEAR EXTEND BIT
      LDA B,I       CHANGE
      ADA TEMP1      LOW 16 BITS
      STA TEMP8,I     OF MICROWORD
      SEZ,RSS       EXTEND BIT SET? 
      JMP CMX.2     NO
      LDA TEMP8     YES 
      ADA M1        POINT BACK
      STA TEMP8      TO HIGH 8
      ADB M1          BITS OF MICROWORD 
      LDA B,I       CARRY OVER
      INA            OVERFLOW 
      STA TEMP8,I 
      INB           BUMP
      ISZ TEMP8      POINTERS 
CMX.2 EQU * 
      INB 
      ISZ TEMP8 
      CPB EMODX     DONE ALL UNCD JMPS? 
      JMP CMX.3     YES 
      INB           NO,BUMP 
      ISZ TEMP8      POINTERS AGAIN 
      JMP CMX.1 
CMX.3 EQU * 
      LDA B733      BUMP
      ADA TEMP8      POINTER
      STA TEMP8       TO MX375+1
      INB           BUMP POINTER
      LDA MOD       NEED TO CHANGE
      SLA            CNDX JMP?
      JMP CMX.0     NO
      LDA B,I       CHANGE
      ADA TEMP9      MICROCODE
      STA TEMP8,I 
CMX.4 EQU * 
      LDA BBUF1 
      STA TEMP8 
      LDA TEMP4 
      INA 
      JMP CMX.5 
CMX.0 EQU * 
      LDA B7771     RESTORE CORRECT 
      STA TEMP8,I    CNDX JMP 
      JMP CMX.4 
      HED INIT
* 
*     *   INITIAL CONFIGURATION ROUTINE   * 
* 
*         *    CONFIGURES WCS SELECT CODE INTO I/O INSTRUCTIONS.
*              INDICATES PRESENCE OF DMA AND CONSOLE DEVICE(SLOW
*              OUTPUT). SAVES CONTROL STORE MODULE # FOR PROGRAM
*              USE. 
* 
INIT  NOP 
      CLC 0,C       INTERRUPT OFF,CLEAR I/O 
      LDA ETAB      FORM RELATIVE 
      CMA            ERROR TABLE
      STA METAB       INDEX 
      LDA C.112     IS THERE A CONSOLE
      SZA            DEVICE IN SYSTEM?
      JMP *+3       YES 
      CCA           NO,SET
      STA TFLAG      NO TTY FLAG
      LDA C.115     CHECK 
      AND MASK1      FOR
      SZA             DMA 
      JMP INIT2     DMA IS THERE
      CCA 
      STA DMAFG     NO DMA
INIT2 EQU * 
      LDA C.115     GET COMPUTER
      AND MASK6      TYPE 
      ALF 
      ADA M10       IS IT 
      SSA            A 2100?
      JMP INIT5     YES 
      CCA           NO,MUST BE A 21XX 
      STA MFLAG     SET MODULE 1 FLAG 
      STA MACH2     SET 21XX FLAG 
      LDB DBUF1     GO USE 2100 MICROPROGRAM
      JSB IBUFF      BUFFER FOR DATA BUFFER 
      JMP INIT6 
INIT5 EQU * 
      CCA           SET 2100
      STA MACH1      FLAG 
      LDB DBUF2     GO USE 21XX MICROPROGRAM
      JSB IBUFF      BUFFER FOR DATA BUFFER 
INIT6 EQU * 
      JSB CONF      GO CONFIGURE PROGRAM
      LDA MOD       SAVE LOW ORDER
      LDB SC         WCS SELECT CODE AND
      STA SAVE4       MODULE # FOR
      STB SAVE5        PROGRAM USE
HLT74 HLT 74B       CONFIGURATION COMPLETE
      JMP 130B      GO START MAIN PROGRAM 
      HED CONF
* 
*     *   CONFIGURATION ROUTINE   * 
* 
*         *    CONFIGURES CURRENT WCS SELECT CODE INTO I/O
*              INSTRUCTIONS. SAVE CONTROL STORE MODULE # FOR
*              PROGRAM USE. 
* 
*              CALLING SEQUENCE : 
* 
*              JSB CONF       (INCLUDES LIA 1)
* 
*              OR 
* 
*              LDA (MOD# & SELECT CODE) 
*              JSB CONF1
* 
CONF  NOP 
      LIA 1         GET SW REG AND
      JMP INIT8 
CONF1 NOP 
      LDB CONF1     SET RETURN
      STB CONF       ADDRESS
INIT8 EQU * 
      STA TEMP0     SAVE IT 
      AND MASK0     IS SELECT 
      ADA M10        CODE ENTRY 
      SSA,RSS         LESS THAN 10(OCTAL)?
      JMP INIT0     NO,OK 
      CLB 
      LDA TEMP0     LOAD BAD ENTRY
HLT73 HLT 73B       YES,SELECT CODE ENTERED WAS <7B 
      JMP CONF+1    TRY AGAIN 
INIT0 EQU * 
      LDA TEMP0     IS SELECT 
      AND MASK0      CODE ENTRY 
      ADA M26         GREATER THAN
      SSA              25 OCTAL?
      JMP INIT1     NO
      CLB 
      LDA TEMP0     LOAD BAD ENTRY
HLT51 HLT 51B       YES,SELECT CODE ENTERED WAS >25B
      JMP CONF+1    TRY AGAIN 
INIT1 EQU * 
      LDA TEMP0 
      AND MASK0     GET CURRENT WCS 
      STA SC         SELECT CODE
      LDA TEMP0     GET CURRENT 
      AND MASK6      CONTROL STORE
      ALF             MODULE #
      STA TEMP7        AND SAVE IT
      LDA MFLAG     IS MACHINE
      SZA            A 2100?
      JMP CONF2     NO,MUST BE 21XX 
      LDA TEMP7 
      ADA M1        YES,TRYING TO 
      SSA            USE MODULE 0?
                      