      CLA           SET UP
      STA ZBF5        FLAGS 
      STA ZBI5        FOR TEST
      STA ZBTMP 
ZBS51 STC CH        TURN ON 
ZBS52 STF CH          CARD
      STF INTP      AND INTERRUPTS
      STC 1         * 
      STF 1         * 
      CLC 1         * 
      CLF 1         *  NO INTERRUPT 
      JMP *+1,I     *  SHOULD OCCURR
      DEF *+1       *  HERE 
      JSB *+1,I     * 
      DEF *+1       * 
ZBF5  NOP           * 
      ISZ ZBTMP     INT. SHOULD BE HERE 
      ISZ ZBTMP 
      CLF INTP      TURN I/O SYSTEM OFF 
      LDA ZBI5      DID IT INTERRUPT? 
      SZA 
      JMP *+4 
E014  JSB ERMS,I    E014 NO INT 
      DEF ZBE14 
      JMP ZBIO6     ABORT REST OF SECTION 
      LDA ZBTMP     CHECK FOR CORRECT INTERRUPT 
      CPA Z.2       ? 
      JMP *+3 
E026  JSB ERMS,I    E026 INT EXECUTION ERROR
      DEF ZBE26 
ZBS53 CLF CH        TURN OFF CH FLAG
      JMP ZBIO6     GO TO NEXT SECTION
* 
ZBD5  DEF ZBF5-1
ZBD5A DEF ZBF5+1
* 
ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/
ZBE13 ASC 12,E013 SECOND INT OCURRED/ 
ZBE14 ASC 06,E014 NO INT/ 
ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ 
ZBE26 ASC 13,E026 INT EXECUTION ERROR/
* 
* 
* 
* 
      SKP 
ZBI5  NOP 
      CLF INTP      TURN I/O SYSTEM OFF 
      LDA ZBD5      CHECK TO SEE IF ALL 
      CPA ZBF5          INSTRUCTION COMPLETED 
      JMP *+3       YES 
E012  JSB ERMS,I    E012 INT DURING HOLD OFF
      DEF ZBE12 
      LDA ZBD5A     CHECK RETURN ADDRESS
      LDB CPTO      IF 210X 
      SSB           ADD ONE 
      INA 
      CPA ZBI5
      JMP ZBI5A 
E015  JSB ERMS,I    E015 INT RTN ADDR ERROR 
      DEF ZBE15 
      JMP ZBIO6 
ZBI5A JSB ZTCJI     SET SECOND INT TRAP 
      DEF ZBT5
      STF INTP      TURN I/O SYSTEM ON
      JMP ZBI5,I    CONTINUE TEST 
* 
* 
ZBT5  NOP 
      CLF INTP      TURN I/O SYSTEM OFF 
E013  JSB ERMS,I    E013 SECOND INT OCURRED 
      DEF ZBE13 
* 
* 
* 
* 
* 
      SKP 
*               CLC CH AND CLC 0
* 
ZBIO6 JSB ZTCJI     SET JSB INSTRUCTION 
      DEF ZBI61 
ZBS61 STC CH        SET CH CONTROL
ZBS62 STF CH        SET CH FLAG 
      STF INTP      TURN ON INTERRUPTS
ZBS63 CLC CH        CLEAR CH CONTROL
      NOP           GIVE IT A CHANCE
      NOP 
      CLF INTP      TURN INTS OFF 
ZB60  JSB ZTCJI     SET JSB INSTRUCTION 
      DEF ZBI62 
ZBS64 CLF CH        CLEAR CH FLAG 
ZBS65 STC CH        SET CH CONTROL
ZBS66 STF CH        SET CH FLAG 
      STF INTP      TURN ON INTS
      CLC INTP      CLEAR I/O SYSTEM
      NOP           GIVE IT A CHANCE
      NOP 
      CLF INTP      TURN OFF INTS 
      JMP ZBIO7 
* 
* 
ZBI61 NOP 
      CLF INTP      TURN OFF INTS 
E016  JSB ERMS,I    E016 CLC CH ERROR 
      DEF ZBE16 
      JMP ZB60
* 
ZBI62 NOP 
      CLF INTP      TURN OFF INTS 
E017  JSB ERMS,I    E017 CLC 0 ERROR
      DEF ZBE17 
      JMP ZBIO7 
* 
ZBE16 ASC 9,E016 CLC CH ERROR/
ZBE17 ASC 9,E017 CLC 0 ERROR/ 
* 
* 
* 
* 
* 
      SKP 
*               EXTERNAL & INTERNAL PRESET TEST 
* 
ZBIO7 LDB ZS812     CHECK TO SUPPRESS 
      JSB SWRT,I    ? 
      JMP H025      YES - SKIP PRESET TEST
H024  JSB MSGC,I    TELL OPERATOR 
      DEF ZBM24     PRESS PRESET
* 
ZBS71 CLF CH        CLEAR CH FLAG 
      STF INTP      TURN ON INTS
      JSB ZTCJI     SET TRAP CELL JSB INSTRUCTION 
      DEF ZBI70 
      HLT 24B       WAIT FOR OPERATOR 
      CLA,INA       SET UP FLAGS FOR TESTS
      SFS INTP      CHECK INTP FLAG 
      CLA           NOT SET SO CLEAR FLAG 
      RAL           MOVE TO NEXT FLAG 
      CLF INTP      TURN OFF ONTPS
ZBS72 SFS CH        CHECK CHANNEL FLAG
      INA           NOT SET SO FLAG IT
      RAL           MOVE TO NEXT FLAG 
      LIB 0         CHECK I/O BUSS
      SZB           SHOULD BE ZERO
      INA           NOT SO FLAG IT
      RAL           MOVE TO NEXT FLAG 
      STF INTP      CHECK CONTROL ON CARD 
      NOP           GIVE IT A CHANCE
      NOP 
      CLF INTP      TURN OFF INTPS
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
      SKP 
ZB70  SLA,RSS       CHECK FOR ERRORS
      JMP *+3 
E022  JSB ERMS,I    E022 DID NOT CLEAR CONTROL
      DEF ZBE22 
      RAR 
      SLA,RSS 
      JMP *+3 
E023  JSB ERMS,I    E023 I/O LINES NOT CLEAR
      DEF ZBE23 
      RAR 
      SLA,RSS 
      JMP *+3 
E020  JSB ERMS,I    E020 FLAG NOT SET 
      DEF ZBE20 
      RAR 
      SLA,RSS 
      JMP *+3 
E021  JSB ERMS,I    E021 DID NOT DIABLE INTS
      DEF ZBE21 
H025  JSB MSGC,I    TELL OPERATOR 
      DEF ZBM25     BASIC I/O IS COMPLETE 
      JMP ZBIO,I    RETURN TO CALLER
* 
ZBI70 NOP           CONTROL FAILED
      CLF INTP      TURN OFF INTPS
      INA 
      JMP ZB70
* 
ZBE20 ASC 15,E020 PRESET DID NOT SET FLAG/  
ZBE21 ASC 17,E021 PRESET DID NOT DISABLE INTS/  
ZBE22 ASC 17,E022 PRESET DID NOT CLEAR CONTROL/ 
ZBE23 ASC 18,E023 PRESET DID NOT CLEAR I-O LINES/ 
ZBM24 ASC 12,H024 PRESS PRESET, RUN/  
ZBM25 ASC 08,H025 BI-O COMP/
      SKP 
ZBIOD DEF *+1 
      DEF ZBS21 
      DEF ZBS22 
      DEF ZBS23 
      DEF ZBS24 
      DEF ZBS25 
      DEF ZBS26 
      DEF ZBS27 
      DEF ZBS31 
      DEF ZBS32 
      DEF ZBS33 
      DEF ZBS41 
      DEF ZBS42 
      DEF ZBS51 
      DEF ZBS52 
      DEF ZBS53 
      DEF ZBS61 
      DEF ZBS62 
      DEF ZBS63 
      DEF ZBS64 
      DEF ZBS65 
      DEF ZBS66 
      DEF ZBS71 
      DEF ZBS72 
      DEC -1
* 
ZCEND EQU * 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
      HED MESSAGES
E031  ASC 5,E031 XMA/ 
E032  ASC 5,E032 XMB/ 
E033  ASC 5,E033 XMM/ 
E034  ASC 5,E034 XMM/ 
E035  ASC 5,E035 XMM/ 
E036  ASC 5,E036 XMM/ 
E037  ASC 5,E037 SYA/ 
E040  ASC 5,E040 SYB/ 
E041  ASC 5,E041 USA/ 
E042  ASC 5,E042 USB/ 
E043  ASC 5,E043 PAA/ 
E044  ASC 5,E044 PAB/ 
E045  ASC 5,E045 PBA/ 
E046  ASC 5,E046 PBB/ 
E047  ASC 12,E047 INTERFERENCE ERROR/ 
E304  ASC 6,E304 A-REG/ 
E305  ASC 6,E305 B-REG/ 
E306  ASC 6,E306 X-REG/ 
E307  ASC 6,E307 A-REG/ 
E310  ASC 6,E310 B-REG/ 
E311  ASC 6,E311 X-REG/ 
E312  ASC 6,E312 A-REG/ 
E313  ASC 6,E313 A-REG/ 
E314  ASC 6,E314 A-REG/ 
E315  ASC 6,E315 A-REG/ 
E122  ASC 5,E122 MWF/ 
E123  ASC 5,E123 MWF/ 
E124  ASC 5,E124 MWI/ 
E125  ASC 5,E125 MWI/ 
E126  ASC 5,E126 MWW/ 
E127  ASC 5,E127 MWW/ 
      HED *** XMA-XMB *** TRANSFER MAPS INTERNALLY PER A B
      ORG 4000B 
* 
* 
* 
* 
*     XMA/XMB  - TRANSFER MAPS
*           CALLING SEQUENCE: 
*               LDA WORD1 
*               XMA/B.
* 
*           WORD FORMAT:
*                         A/B(15)=0=SYSTEM
*                         A/B(15)=1=USER
*                         A/B(0) =0=PORT1 
*                         A/B(1) =1=PORT2 
* 
*           EG. A=100001 XFER USER TO PORT2 
*               A=000000 XFER SYSTEM TO PORT1 
*               A=000001 XFER SYSTEM TO PORT2 
* 
*     TEST 02 VERIFIES PROPER OPERATION OF THE HARDWARE AND FIRMWARE
*     REQUIRED TO EXECUTE AN XMA/B INSTRUCTION. 
* 
*     TEST 02 IS MADE UP OF EIGHT SUBTESTS, EACH OF WHICH TEST ONE
*     FUNCTION OF THE XMA/B INSTRUCTIONS. 
* 
* 
* 
*     IF AN ERROR IS DETECTED IN TST02, ONE OF TWO MESSAGES WILL BE 
*     OUTPUT OT THE CONSOLE,  "E031 XMA"  OR  "E032 XMB".  IN EITHER
*     CASE, THE A,B,X AND Y REGISTERS WILL CONTAIN THE FOLLOWING
*     INFORMATION:
* 
*              T=HALT CODE
*              A=GOOD PATTERN 
*              B=BAD PATTERN
*              X=FAILING REGISTER 
*              Y=ADDRESS OF THE FAILURE 
* 
* 
* 
      SKP 
TST02 EQU * 
      SPC 1 
      NOP 
      JSB RDZRO     CLEAR THE READ TABLE
      LDA PTRN1     MAKE THE SYSTEM 
      LDB PTRN2          TABLE CONTENTS 
      JSB MKTBL               EQUAL TO
      OCT 040000                   PATTERN1/2 
      JSB XMMSY     WRITE THE SYSTEM MAP REGISTERS
      SPC 1 
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      LDA XFRS1     XFER SYSTEM TO PORTA WORD 
      XMA            USING THE XMA INSTRUCTION
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      SPC 1 
      JSB P1XMM     READ PORTA MAP
      LDA LTSYS     VERIFY PROPER OPERATION 
      LDB RTPTA          OF XMA SYS-PA, BY
      JSB TBCMP               COMPARING THE TABLES
      JSB XMAER      ERROR DETECTED, REPORT.
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      SPC 2 
      LDA PTRN2     SET UP THE SYSTEM 
      LDB PTRN1          TABLE CONTENTS 
      JSB MKTBL               FOR THE NEXT
      OCT 040000                   TRANSFER 
      JSB XMMSY     WRITE THE SYSTEM MAP REGISTERS
      NOP 
      SPC 1 
      LDA XFRS2     XFER THE CONTENTS OF THE
      XMA            SYSTEM MAP TO THE PORT B MAP 
      NOP 
      SPC 1 
      JSB P2XMM     READ THE PORT B MAP 
      LDA LTSYS     VERIFY PROPER OPERATION 
      LDB RTPTB          OF XMA SYS-PB, BY
      JSB TBCMP               COMPARING THE TABLES
      JSB XMAER      REPORT THE DETECTED ERROR
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      SPC 2 
      JSB CLTBL     ZERO BOTH TABLES
      LDA PTRN1     SET UP THE USER 
      LDB PTRN2          TABLE CONTENTS 
      JSB MKTBL               FOR XFER TO 
      OCT 020000                   PORT A MAP 
      JSB XMMUS     LOAD THE USER MAP REGISTERS 
      SPC 1 
      LDA XFRU1     SETUP AND EXECUTE 
      XMA            THE USER TO PORT A TRANSFER
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      SKP 
      JSB P1XMM     READ THE CONTENTS OF PORT A MAP 
      LDA LTUSR          AND COMPARE THE TWO TABLES 
      LDB RTPTA               FOR PROPER OPERATION
      JSB TBCMP                    OF THE TRANSFER
      JSB XMAER      REPORT THE DETECTED ERROR
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      SPC 1 
      LDA PTRN2     CHANGE THE PATTERN IN 
      LDB PTRN1          THE LOADER TABLE 
      JSB MKTBL               AND LOAD UP 
      OCT 020000                   THE USER MAP 
      JSB XMMUS                         REGISTERS 
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      SPC 1 
      LDA XFRU2     SETUP AND EXECUTE THE USER MAP
      XMA            TO PORTB MAP TRANSFER
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      SPC 1 
      JSB P2XMM     READ THE CONTENTS OF PORT B MAP 
      LDA LTUSR          AND COMPARE THE TWO TABLES 
      LDB RTPTB             FOR PROPER OPERATION
      JSB TBCMP                    OF THE TRANSFER
      JSB XMAER     REPORT ERROR
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      SPC 1 
      JSB RDZRO     CLEAR READ TABLE
      LDA PTRN1     LOAD UP THE 
      LDB PTRN2          SYSTEM MAP 
      JSB MKTBL               LOAD TABLE, 
      OCT 040000                   AND STORE INTO 
      JSB XMMSY                         SYSTEM MAP
      SPC 1 
      LDB XFRS1     EXECUTE THE 
      XMB            XMB INSTRUCTION
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      SPC 1 
      JSB P1XMM     READ THE PORT A MAP 
      LDA LTSYS          AND DO A 
      LDB RTPTA               COMPARISON OF 
      JSB TBCMP                    THE TWO TABLES 
      JSB XMBER      REPORT XMB FAILURE 
      NOP 
      SPC 2 
      LDA PTRN2     CHANGE THE PATTERN
      LDB PTRN1          IN THE SYSTEM MAP TABLE
      JSB MKTBL               AND RELOAD THE
      OCT 040000                   SYSTEM MAP 
      JSB XMMSY                         LOAD TABLE
      SKP 
      LDB XFRS2     EXECUTE XMB 
      XMB            SYSTEM TO PORT B MAP 
      SPC 1 
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      JSB P2XMM     READ THE PORT B MAP 
      LDA LTSYS          AND VERIFY PROPER EXECUTION
      LDB RTPTB               OF XMS BY COMPARING 
      JSB TBCMP                    THE TWO TABLES 
      JSB XMBER      REPORT THE FAILURE 
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      SPC 2 
      LDA PTRN1     SET UP THE USER MAP 
      LDB PTRN2          LOAD TABLE WITH A
      JSB MKTBL          RECOGNIZABLE 
      OCT 020000              PATTERN AND LOAD UP 
      JSB XMMUS                    THE USER MAP 
      SPC 1 
      LDB XFRU1     EXECUTE THE XMB 
      XMB            USER TO PORT A MAP 
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      SPC 1 
      JSB P1XMM     READ THE PORT A MAP 
      LDA LTUSR          AND VERIFY PROPER EXECUTION
      LDB RTPTA               OF XMS BY COMPARING 
      JSB TBCMP                    THE TWO TABLES 
      JSB XMBER      REPORT PROBLEM 
      NOP 
      SPC 2 
      LDA PTRN2     CHANGE THE PATTERN IN THE 
      LDB PTRN1          USER LOAD TABLE AND LOAD 
      JSB MKTBL               THE USER MAP
      OCT 020000              * 
      JSB XMMUS               * 
      SPC 1 
      LDB XFRU2     EXECUTE THE XMB 
      XMB            USER TO PORT B MAP 
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      SPC 1 
      JSB P2XMM     READ THE PORT B MAP AND 
      LDA LTUSR          VERIFY PROPER EXECUTION OF 
      LDB RTPTB               XMS BY COMPARING
      JSB TBCMP                    TWO TABLES 
      JSB XMBER      REPORT DIFFERENCE BETWEEN TABLES 
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      JMP TST02,I 
      SKP 
XFRS1 OCT 0 
XFRS2 OCT 1 
XFRU1 OCT 100000
XFRU2 OCT 100001
      SPC 2 
XMAER NOP 
      JSB RGSVE     SAVE THE REGISTERS
      LDY XMAER     GET THE FAIL FLAG 
      LDX REGNR     GET THE FAILING REGISTER
      JSB ERMS,I    PREPORT XMA 
      DEF E031       FAILURE
      JSB RGRS2     RESTORE X & Y 
      JMP TCPHR     CONTINUE
      SPC 3 
XMBER NOP 
      JSB RGSVE     SAVE REGISTERS
      LDX REGNR     GET FAILING REGISTER NUMBER 
      LDY XMBER      AND THE FAIL FLAG
      JSB ERMS,I    REPORT XMB
      DEF E032       FAILURE
      JSB RGRS2     RESTORE X & Y TO CONTINUE 
      JMP TCPHR     CONTINUE
      SPC 3 
      HED *** MEM DIAGNOSTIC *** - XMM
*     XMM - EXCHANGE MAPS AND MEMORY
*           CALLING SEQUENCE: 
* 
*              LDA  WORD1 
*              LDB  WORD2 
*              LDX  WORD3 
*              XMM
* 
* 
* 
* 
*           WORD FORMAT:
* 
*     WORD 1 - MAP ADDRESS OF FIRST REGISTER
*              TO BE LOADED BY XMM
* 
*              REGISTER   0-31 -  SYSTEM MAP
*              REGISTER  32-63 -  USER MAP
*              REGISTER  64-95 -  PORT 1 MAP
*              REGISTER  96-127-  PORT 2 MAP
* 
*     WORD 2 - ADDRESS OF THE FIRST WORD
*              OF THE MEMORY TABLE TO BE
*              USED FOR THE LOAD.  THIS 
*              TABLE CONTAINS THE ABSOLUTE
*              PAGE NUMBERS BEING ASSIGNED
*              TO THE MAP REGISTERS.
* 
* 
*     WORD 3 - NUMBER OF REGISTERS TO BE LOADED 
* 
*              (POSITIVE NUMBER LOADS THE REGISTERS)
*              (NEGATIVE NUMBER LOADS MEMORY) 
* 
* 
* 
* 
* 
* 
      SKP 
* 
* 
* 
* 
*     TST00  -  XMM 
* 
*     THIS TEST VERIFIES PROPER OPERATION OF THE HARDWARE AND 
*     FIRMWARE REQUIRED TO EXECUTE AN XMM INSTRUCTION.  THE TEST
*     STARTS BY DOING A REGISTER ADDRESS TEST, ONE REGISTER AT A
*     TIME.  WHEN ALL REGISTERS HAVE BEEN LOADED, READ AND VERIFIED 
*     FOR LOAD/READ ABILITY, EACH MAP IS THEN TESTED USING VARIOUS
*     DATA PATTERNS, SUCH AS,ALL ONES, OR ALL ZEROS, ALTERNATE
*     ONES AND ZEROS, ETC.  WHEN ALL FOUR MAPS HAVE BEEN TESTED 
*     IN THIS MANNER, THE ABILITY TO EXECUTE LOAD/READ INSTRUCTIONS 
*     ACROSS MAP BOUNDRIES IS VERIFIED.  FINALLY THE XMM LOAD/READ
*     IS PERFORMED GIVING ALL FOUR MAPS AS THE CHARACTER COUNT
*     AND THE ROUTINE IS EXITED.
* 
* 
*     IF AN ERROR IS DETECTED WHILE RUNNING TST00, THE COMPUTER WILL
*     HALT WITH THE FOLLOWING INFORMATION AVAILABLE:
* 
*         T REGISTER = HALT CODE
*         A REGISTER = GOOD PATTERN 
*         B REGISTER = BAD  PATTERN 
*         X REGISTER = FAILING REGISTER 
*         Y REGISTER = ADDRESS OF FAILURE 
* 
* 
* 
* 
* 
      SKP 
TST00 EQU * 
      SPC 1 
      NOP 
      SPC 1 
*               SINGLE REGISTER XMM - LOAD, READ AND COMPARE
      SPC 1 
      JSB LTZRO     CLEAR THE LOAD TABLE
      LDA ND128 
      STA TSTA1     INITIALIZE ROUTINES 
      CLA                XTHRU
      STA TSTA2               COUNTER 
      INA                AND REGISTER NUMBER
      STA TSTA3               AND REGISTER COUNT
TSTA. LDA TSTA2     GET THE REGISTER NUMBER 
      LDB TSTA4      AND THE TABLE POINTER
      LDX TSTA3      AND THE COUNT
      XMM            AND LOAD THE MAP REGISTER
      NOP           CHANGE TO JMP *-N FOR LOOP/ 
      SPC 1 
      LDA TSTA2     GET REGISTER NUMBER 
                                                                                                          