* 
*         INITIALIZE SELECT CODE I/O INSTRUCTIONS 
* 
ISC   NOP 
      STA IOSC      SAVE SELECT CODE
IOL   LDA B,I       GET ADDRESS OF LOCATION 
      CPA .-1       IS IT THE TERMINATOR
      JMP ISC,I     YES RETURN TO CALLER
      STA SAVA      SAVE ADDR 
      LDA A,I       GET INSTR 
      AND IOM       MASK OFF OLD SELECT CODE
      IOR IOSC      ADD IN NEW SELECT CODE
      STA SAVA,I       RESTORE  IT
      INB           MOVE TO NEXT ADDRESS
      JMP IOL       DO IT 
* 
* 
*         CONFIGURATION SECTION 
* 
.CONF JSB CONF      CONFIG I-O CHANNEL
      JMP STEX1,I   RETURN TO DIAG CONTROL
* 
CONF  NOP 
      CLC INTP,C    TURN I/O SYSTEM OFF 
CON1  LIA SW        GET SELECT CODE AND OPTIONS 
      STA USSC      SAVE THEM 
      AND .77       ELIMINATE OPTIONS 
      STA LSC       STORE INTO LOWER SC BUFFER
      CMA,INA       CHECK THAT SC > 7 
      STA B 
      ADA .+7 
      SSA           ? 
      JMP *+3       OK GO ON
HLT73 HLT 73B       NO
      JMP CON1      TRY AGAIN 
* 
      LDA USSC      GET SC & OPTIONS AGAIN
      SSA           IS TEST FOR EXTENDER REQUESTED? 
      JMP IOINI     YES 
      AND .7700     NO, MASK OFF UPPER SC 
      ALF,ALF       TRANSFER 2. SC TO BITS 0-5 &
      RAL,RAL         STORE IN UPPER SC BUFFER
      STA USC 
      SZA,RSS       HAS AN UPPER SC BEEN SPECIFIED? 
      JMP IOINI     NO, JUMP OVER 2. SC TEST
      ADA .-1       YES, CHECK IF USC > LSC 
      ADA B 
      SSA 
      JMP HLT73     NO, INPUT ERROR 
IOINI LDA LSC       YES, INITIALIZE TEST I/O TO LOWER SC
      LDB IOID      INITIALIZE TEST I/O 
      JSB ISC         INSTRUCTIONS
      CLA           CLEAR 
      OTA SW          SWITCH REGISTER 
      HLT 74B       ALLOW OPERATOR TO CHANGE SR OPTIONS 
      JMP CONF,I    GO TO EXEC CONTROL SECTION
* 
STEX1 DEF STEX
* 
* 
*     ROUTINE TO TEST IF EXECUTION IS REQUIRED ON SEVERAL I/O BOARDS
* 
MIOTS NOP 
      LDA USC       CHECK IF AN UPPER SC HAS BEEN SPECIFIED 
      SZA,RSS 
      JMP MIOTS,I   NO, RETURN & EXIT TEST
      CPA IOSC      YES, CHECK IF IT IS EQUAL TO CURRENT SC 
      JMP MIOTS,I   YES, RETURN & EXIT TEST 
      LDA IOSC      NO, INCREMENT CURRENT SC
      INA 
      STA T4SCP,I   STORE SC INTO BUFR. F ERR MSG.
      ISZ MIOTS     INCREMENT RETURN ADDRESS & RETURN 
      JMP MIOTS,I 
* 
T4SCP DEF T4SC
* 
* 
*         SUBROUTINE TO CHECK TIME OUT IN TST 04 ON INTFACE BOARDS
* 
TOSBR NOP 
      NOP           GIVE 12554 BOARD TIME TO RESPOND
T4.12 SFC CH        HAS BOARD RECEIVED THE DATA?
      JMP TOSBR,I   YES, RETURN 
      STA TOBFR     NO, STORE A-REG TO SET
      LDA IOSC      NO, TIME OUT ERROR
      JSB N2AO      CONVERT CURRENT SC &
      STA BE32+10     STORE IN MESSAGE
      LDA IOSC      LOAD SC & PRINT ERROR 
E032  JSB ERMS,I      MESSAGE E032
      DEF BE32
      LDA TOBFR     RESTORE A-REG 
      JMP TOSBR,I   RETURN TO TEST
* 
BE32  ASC 12,E032 TIME OUT ON SC XX/
* 
TOBFR OCT 0 
* 
* 
*         TRAP CELL ROUTINE FOR TEST 02, E023 
* 
BI71  NOP 
      CLF INTP      TURN OFF INTRPT SYST
      JSB LDSC      LOAD SC INTO ERROR MESSAGE & A-REG
      STA BE23+5
      LDA IOSC
E023  JSB ERMS,I    E023 CLC CH ERR 
      DEF BE23
      JMP *+1,I 
      DEF B72 
BE23  ASC 19,E023  CLC XX DID NOT CLEAR CONTROL FF/ 
* 
      SKP 
* 
*        CONFIGURATION & SPECIAL HEADER MESSAGE 
*        SUBROUTINE FOR TEST 08 OR 09 
* 
EXTSL NOP 
      LDA STDAS      ASSUME THAT TESTS 00-07
      STA STDA         WILL BE SELECTED 
      LDA USSC       IS TEST FOR EXTENDER REQUESTED?
      SSA,RSS 
      JMP EXTSL,I    NO, STANDARD TEST
      ALF,ALF        YES, CONVERT BUS SWITCH SC1 SPECIFIED
      RAL,RAL          IN S-REG BITS 6-8 TO ASCII & STUFF 
      AND .+7            INTO HEADER MESSAGE
      IOR .70 
      STA BSSC1      STORE BUS SWITCH SC1 
      JSB N2AO
      STA BH60D+11
      LDA USSC       DOES THE SYSTEM UNDER TEST HAVE
      RAL,RAL          REDUNDANT EXTENDERS? (BIT 14 SET)
      SLA,RSS 
      JMP RDCPU      NO, REDUNDANT CPU'S
* 
      ALF,RAL        YES, REDUNDANT EXTENDERS 
      AND .+7        CONVERT BUS SWITCH SC2 SPECIFIED IN
      IOR .70          S-REG BITS 9-11 TO ASCII, STUFF
      STA BSSC2          INTO HEADER MESSAGE & STORE
      JSB N2AO             BUS SWITCH SC2 
      STA BH60E+11
      LDA DFEXD      LINK BH40D DEF STATEMENT WITH BIT 15 
      IOR SW15
      STA DFEXD 
      LDA B60BP      PULL "EXTENDER" DEF STATEMENT & LINK 
      IOR SW15         WITH BIT 15
      JMP DFEB
* 
RDCPU LDA DFEXD      REDUNDANT CPU'S, REMOVE LINKAGE BIT
      AND P7777        IN DEF STATEMENT 
      STA DFEXD 
      LDA B60CP      PULL "CPU" DEF STATEMENT & LINK WITH 
      IOR SW15         BIT 15 
* 
DFEB  STA DFEXB 
      JSB MSGC,I     OUTPUT MESSAGE H040
      DEF BH60A,I 
DFEXB NOP 
DFEXD DEF BH60D 
      DEF BH60E 
      NOP 
* 
      LDA STDAX      SET UP STDA FOR EXTENDER TESTS 
      STA STDA
      JMP EXTSL,I 
* 
B60BP DEF BH60B 
B60CP DEF BH60C 
* 
      SKP 
* 
BH60A OCT 6412
      ASC 22,H060 12979B EXTENDER TEST, WITH REDUNDANT _
BH60B ASC 05,EXTENDERS/ 
BH60C ASC 05,CPU'S    / 
BH60D ASC 13,     BUS SWITCH SC1 = YY/
BH60E ASC 13,                SC2 = ZZ/
* 
BSSC1 OCT 0 
BSSC2 OCT 0 
BSSCX OCT 0 
* 
* 
*       SUBROUTINE TO TEST THAT BOTH EXTENDERS CAN BE 
*       DICONNECTED FROM THE CPU (TEST 08 & 09) 
* 
DISCO NOP 
      LDA EXT09+1    CONFIGURE THE CLC INSTR FOR THE
      AND IOM          EXTENDER ON BSSC2
      IOR BSSC2 
      STA EXT09+1 
EXT09 CLC BSC1       TURN BOTH EXTENDER OFF TO PREVENT
      CLC BSC2         INTERFERENCE 
      LDA SW150      GO TO SUBROUT "DAFSR" & CHECK IF 
      JSB DAFSP,I      FLAG SET OR DATA COMPARED
      RSS            YES, AN EXT. IS STILL CONNECTED
      JMP DISCO,I    NO, BOTH EXT'S ARE DISCONNECTED
* 
      LDA BSSC1      CONVERT BOTH SC TO ASCII & 
      JSB N2AO         STUFF INTO MESSAGE 
      STA BE57+5
      LDA BSSC2 
      JSB N2AO
      STA BE57+9
E057  JSB ERMS,I      PRINT MESSAGE 
      DEF BE57,I
      DEF BE57A 
      JMP DISCO,I 
* 
BE57  ASC 15,E057  CLC XX, CLC YY DID NOT/
BE57A ASC 16,      DISCONNECT BOTH EXTENDERS/ 
* 
DAFSP DEF DAFSR 
* 
* 
*     ROUTINE TO WARN OPERATOR OF INPUT ERROR 
* 
ER61  LDA SINA      RETRIEVE PREVIOUS TEST SELECTION
      LDB SINB
      JSB ERMS,I    GO TO ERR MESG 61 
      DEF BE61
      JMP EXCX,I
* 
EXCX  DEF EXC 
BE61  ASC 18,E061 CONFIG & TEST SEL INCOMPATIBLE/ 
      SKP 
      HED DIAGNOSTIC PROGRAM CONTROL
      ORG 2000B 
STEX  CLC INTP,C    TURN I/O SYSTEM OFF 
      CLE 
      LDA DSN       OUTPUT DSN
      LDB HDMX        WITH THE
      JSB O2AS,I        HEADER MESSAGE
      JSB MSGC,I    PRINT HEADER
      DEF HDMS
      CLA           CLEAR PASS
      STA EOLC        COUNT 
      JSB EXTSL     CHECK IF 12979B EXTENDER TEST 
EXCZ  LDB SW9       CHECK FOR USER SELECTION REQ
      JSB SWRT,I
      JMP USR       IT'S USERS CHOICE 
NUSR  LDA STDA      GET ONE OF THE TWO
      LDB STDB        STANDARD TEST RUNS
      JMP EXC 
* 
USR   LIA SW        READ SW-REG 
      AND SWM9      MASK OFF BIT 9
      OTA SW        OUTPUT TO SW-REG
      LDA SINA      RETRIEVE PREVIOUS RUN 
      LDB SINB
      HLT 75B       WAIT FOR USER INPUT 
EXC   STA UINA      SAVE
      STB UINB        USER
      STA SINA          INPUT 
      STB SINB            PROGRAM 
      LDB SW9       WAS USER CHOICE REQUESTED?
      JSB SWRT,I
      JMP USR       YES, RETURN FOR NEW SELECTION 
      CCA           NO, CONTINUE. 
      STA TSTN      SET TEST NUMBER TO -1 
      STA CFTT
      CLA 
      STA TSTA      CLEAR TEST RUN FLAG 
* 
EXCL  LDA UINA      RESTORE A REG.
      LDB UINB      RESTORE B REG.
      ERA,RAL       ROTATE
      ERB             FIRST 
      ERA               TEST BIT
      STA UINA      SAVE POSITIONS
      STB UINB
      ISZ TSTN      MOVE TEST UP ONE
      NOP 
XCL1  LDA TSTN
      ADA TSTP      GET IT'S
      LDA A,I         ADDRESS 
      CPA .-1       IS IT END OF LIST 
      JMP EOL       YES 
      LDB UINB
      SSB,RSS       SHOULD IT BE RUN? 
      JMP EXCL      NO
      STA TSTA      YES - SAVE TEST ADDRESS 
      JSB ITCH      INITIALIZE TRAP CELL HALTS
      LDA TSTN      CHECK IF OPERATOR CHOSE INCOM-
      ADA .-8         PATIBLE CONFIG & TEST SELECTION 
      XOR USSC          CHECK IF BIT 15 ARE DIFFERENT 
      SSA,RSS 
      JMP ER61      YES, REPORT INCOMPATIBILITY 
      JSB TSTA,I    NO, OK, GO DO TEST
.EXRT LDA TSTN      DISPLAY TEST NUMBER IF HALTED 
      LDB SW15      CHECK FOR HALT AT END OF TEST 
      JSB SWRT,I
      HLT 76B       YES WAIT FOR OPERATOR 
      LDB SW9       CHECK FOR ABORT 
      JSB SWRT,I
      JMP USR       YES 
      LDB SW13      CHECK FOR LOOP ON ROUTINE 
      JSB SWRT,I
      JMP XCL1      YES - LOOP
      JMP EXCL      CONTINUE
* 
EOL   LDA TSTA      CHECK IF ANY TESTS WERE RUN 
      SZA,RSS       ? 
      JMP NUSR      NO, SO PICK UP STANDARD RUN 
      LDA EOLC      UP DATE PASS COUNT
      INA 
      STA EOLC
      CCE 
      LDB PSCA      GET PASS COUNT
      ADB .+2         ADDRESS 
      JSB O2AS,I    CONVERT IT
      JSB MSGC,I    CALL PRINT ROUTINE
PSCA  DEF PSC 
      LDB SW12      CHECK FOR LOOP ON DIAG. 
      JSB SWRT,I
      JMP *+3       YES 
      LDA EOLC
      HLT 77B       NO WAIT AND DISPLAY PASS COUNT
      LDA SINA      RESTORE ORIGINAL PROGRAM
      LDB SINB      NO, STANDARD TEST 
      JMP EXC       DO IT ALL AGAIN 
* 
* 
* 
*************************************************************** 
      SKP 
      HED TEST 00 
* 
* 
*         TEST 00 
*         ------- 
*         INTERRUPT FLAG CHECK (STF00, CLF00, SFS00, SFC00) 
*         OVERFLOW REGISTER CHECK (STF01, CLF01, SFS01, SFC01)
*         INTERFACE BOARD(S) FLAG CHECK (STFXX, CLFXX, SFSXX, SFCXX)
* 
* 
TST00 EQU * 
      NOP 
      JSB T00       DO BASIC I/O
      CLC INTP,C    TURN OFF ALL I/O
      JMP TST00,I 
* 
T00   NOP 
      CLC INTP,C    TURN OFF ALL I/O
* 
      LDA IOSPT     FETCH THE FIRST SOURCE ADDRESS OF 
      STA IOSAD       THE INSTRUCTION TABLE & STORE IN IOSAD
      CLA           SET SC=00 (INTRPT) INTO THE VALUE 
      STA SCVA        OF THE SC 
      JSB IO1       EXERCISE TEST W STANDARD CLF,STF,SFS,SFC
      JSB IO1           "     "   " SPECIAL  CLF,STF
      JSB IO1           "     "   "    "     SFC,SFS
      JSB IO1           "     "   " STANDARD SFC,C SFS,C SFS
      JSB IO1           "     "   " SPECIAL  SFC,C SFS,C SFS
* 
      LDA IOSPT     RECONFIGURE THE SC TO 01 (OVERFLOW REG) 
      STA IOSAD       & REPEAT THE SAME TESTS AS ABOVE
      ISZ SCVA
      JSB IO1 
      JSB IO1 
      JSB IO1 
      JSB IO1 
      JSB IO1 
* 
      LDA LSC       RECONFIGURE THE SC TO THE SPECIFIED 
      STA SCVA        INTERFACE CARD & REPEAT THE SAME
T00RP LDA IOSPT         TESTS AS ABOVE EXCLUDING
      STA IOSAD           THE LAST 2 SUBROUTINES
      JSB IO1               BECOUSE OF 21MX M-SERIES
      JSB IO1                 REV. 1813 & LATER)
      JSB IO1 
* 
      LDA USC       LOAD THE UPPER SC 
      SZA,RSS       IS ONE? 
      JMP T00,I     NO, EXIT TEST 
      CPA SCVA      YES, IS IT = SC JUST TESTED 
      JMP T00,I     YES, EXIT TEST
      ISZ SCVA      NO, INCREMENT SC & REPEAT TEST
      JMP T00RP 
* 
      SKP 
* 
*         SUBROUTINE TO SET THE INSTRUCTION COUNTER TO 7, 
*         SET THE DESTINATION & SOURCE ADDRESSES, 
*         CONFIGURE THE I/O INSTRUCTIONS & RUN ONE TEST LOOP
* 
IO1   NOP 
      LDA .-7       7 I/O INSTR HAVE TO BE CONFIGURED & 
      STA ISCT        MOVED INTO THE TEST 
      LDB IODPT     STORE DESTINATION ADDRESS OF
      STB IODAD       1. INSTRUCTION IN GROUP AWAY
      JSB STIO      CONFIGURE & STORE I/O INSTR INTO TEST 
      JSB BIO1      EXERCISE TEST 
      JMP IO1,I 
* 
ISCT  OCT 0 
* 
* 
* 
*         SUBROUTINE TO PULL I/O INSTRUCTION FROM SOURCE, 
*         CONFIGURE IT & STORE IT INTO THE DESTINATION IN 
*         THE TEST. (SC MUST BE IN SCVA, NUMBER OF INSTR
*         TO BE MOVED IN ISCT, DESTINATION ADDRESS OF 1.
*         INSTRUCTION IN "IODAD" AND SOURCE ADDRESS OF NEXT 
*         INSTRUCTION IN "IOSAD") 
* 
STIO  NOP 
      LDA IOSAD,I   LOAD INSTR FROM SOURCE
      IOR SCVA      CONFIGURE I/O INSTR 
      LDB IODAD,I   FETCH DESTIN. ADDRESS POINTER 
      STA B,I       STORE INSTR VIA POINTER INTO TEST 
* 
      ISZ IOSAD     INCREMENT SOURCE ADDRESS
      NOP 
      ISZ ISCT      CHECK IF PREDEFINED # OF I/O INSTR
      RSS             HAVE BEEN TRANSFERED? 
      JMP STIO,I    YES, EXIT SUBROUTINE
      ISZ IODAD     NO, INCREMENT DESTINATION ADDRESSES 
      NOP 
      JMP STIO+1    RETURN FOR TRANSFER OF NEXT INSTR 
* 
IOSAD OCT 0 
IODAD OCT 0 
      SKP 
* 
*         SUBROUTINE TO TEST STF, CLF, SFS & SFC INSTRUCTIONS 
* 
BIO1  NOP 
      NOP           TOGGLE FLAG ON, 
      NOP             THEN OFF
      NOP           IS IT CLEARED?
E000  JSB ER000     NO, ERROR 
      NOP           YES, IS IT SET? 
      RSS           NO, OK
E001  JSB ER001     YES, ERROR
      NOP           SET FLAG
      NOP           IS IT SET?
E002  JSB ER002     NO, ERROR 
      NOP           YES, IS IT CLEARED? 
      RSS           NO, OK
E003  JSB ER003     YES, ERROR
      JMP BIO1,I
* 
      SKP 
* 
*         I/O INSTRUCTION TABLE TO BE CONFIGURED &
*         TRANSFERED INTO TEST
* 
IOSPT DEF *+1 
* 
      OCT 102100    STF 
      OCT 103100    CLF 
      OCT 102200    SFC 
      OCT 102300    SFS 
      OCT 102100    STF 
      OCT 102300    SFS 
      OCT 102200    SFC 
* 
      OCT 102100    STF 
      OCT 107100    CLF WITH BIT 11 SET 
      OCT 102200    SFC 
      OCT 102300    SFS 
      OCT 106100    STF  "    "  "   "
      OCT 102300    SFS 
      OCT 102200    SFC 
* 
      OCT 102100    STF 
      OCT 103100    CLF 
      OCT 106200    SFC WITH BIT 11 SET 
      OCT 106300    SFS  "    "  "   "
      OCT 102100    STF 
      OCT 106300    SFS  "    "  "   "
      OCT 106200    SFC  "    "  "   "
* 
      OCT 102100    STF 
      OCT 103100    CLF 
      OCT 103200    SFC,C 
      OCT 102300    SFS 
      OCT 102100    STF 
      OCT 103300    SFS,C 
      OCT 102300    SFS 
* 
      OCT 102100    STF 
      OCT 103100    CLF 
      OCT 107200    SFC,C WITH BIT 11 SET 
      OCT 102300    SFS 
      OCT 102100    STF 
      OCT 107300    SFS,C  "    "  "   "
      OCT 106300    SFS WITH BIT 11 SET 
* 
      OCT 177777
      SKP 
* 
*         DESTINATION ADDRESSES OF I/O INSTRUCTIONS 
* 
IODPT DEF *+1 
* 
      DEF BIO1+1
      DEF BIO1+2
      DEF BIO1+3
      DEF BIO1+5
      DEF BIO1+8
      DEF BIO1+9
      DEF BIO1+11 
* 
      SKP 
* 
*         ERROR SUBROUTINE, CONVERTS THE 2 FAILING INSTRUCTIONS 
*         TO ASCII & STORES THEM INTO THE ERROR MESSAGE STRING, 
*         INSERTS THE CURRENT SC INTO THE ERROR MESSAGE STRINGS,
*         CHECKS THE ENTERY POINTS TO THE SUBROUTINES & OUTPUTS 
*         ERROR MESSAGES. 
* 
ER000 NOP 
      CLA 
      STA ENPTC 
      LDA E000-2
      LDB E000-1
      JMP STLOK 
ER001 NOP 
      LDA .+1 
      STA ENPTC 
      LDA E001-5
      LDB E001-2     MARK THE ENTERY POINT IN "ENPTC" & 
      JMP STLOK        LOAD THE 2 FAILING INSTRUCTIONS
ER002 NOP                FROM THE TEST & JUMP TO THE
      LDA .+2              ERROR SUBROUTINE 
      STA ENPTC 
      LDA E002-2
      LDB E002-1
      JMP STLOK 
ER003 NOP 
      LDA .+3 
      STA ENPTC 
      LDA E003-5
      LDB E003-2
* 
STLOK CLC INTP,C     TURN ALL I/O OFF 
      STA FIINS      STORE THE 2 FAILING INSTRUCTIONS 
      STB SEINS 
      CLE            CONVERT THE 2 FAILING INSTRUCTIONS FROM
      LDB BEADP        OCTAL TO ASCII & STORE THEM INTO 
      JSB O2AS,I         THE "BEAD" STRING. 
      CCE 
      LDA SEINS 
      LDB BEADP 
      ADB .+3 
      JSB O2AS,I
* 
      LDA SCVA       CONVERT THE SC WHICH IS STORED IN
      JSB N2AO         MEM LOC "SCVA" FROM OCTAL TO 
      STA BE00+5         ASCII & STORE IT INTO THE
      STA BE01+5           ERROR MESSAGES E000, E001, 
      STA BE02+5             E002 & E003. 
      STA BE03+5
      STA BESC
* 
      SKP 
* 
      LDA FIINS      DETERMEN ENTERY POINT OF ERROR 
      LDB ENPTC        SUBROUTINE SO THAT CORRECT 
      SZB,RSS            ERROR MESSAGE CAN BE 
      JMP EX000            ACCESSED.
      CPB .+1 
      JMP EX001 
      CPB .+2 
      JMP EX002 
* 
EX003 LDB SEINS      OUTPUT THE APPROPRIATE 
      JSB ERMS,I       ERROR MESSAGE
      DEF BE03,I
      DEF BESC,I
      DEF BEAD
      JMP ER003,I 
EX002 LDB SEINS 
      JSB ERMS,I
      DEF BE02,I
      DEF BESC,I
      DEF BEAD
      JMP ER002,I 
EX001 LDB SEINS 
      JSB ERMS,I
      DEF BE01,I
      DEF BESC,I
      DEF BEAD
      JMP ER001,I 
EX000 LDB SEINS 
      JSB ERMS,I
      DEF BE00,I
      DEF BESC,I
      DEF BEAD
      JMP ER000,I 
* 
* 
ENPTC OCT 0 
FIINS OCT 0 
SEINS OCT 0 
* 
BEADP DEF BEAD+3
* 
BE00  ASC 09,E000  CLF XX SFC _ 
BE01  ASC 09,E001  CLF XX SFS _ 
BE02  ASC 09,E002  STF XX SFS _ 
BE03  ASC 09,E003  STF XX SFC _ 
BESC  ASC 04,XX ERR/
BEAD  ASC 10,      XXXXXX XXXXXX/ 
* 
* 
* 
*************************************************************** 
      SKP 
                                  