ASMB,A,B,L,C
      HED 2100A/S FFP DIAGNOSTIC
      ORG 0      DSN 101110    10 AUGUST 1976    REV 1632 
      SUP 
*     GENERAL OPERATING PROCEDURE 
* 
*         A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP.
*         B. LOAD DIAGNOSTIC MAIN PROGRAM 
*         C. LOAD ADDRESS 100B. 
*         D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS
*         E. PRESS RUN AND WAIT FOR HALT 107074.
*         F. LOAD SWITCH REGISTER 
*                   IF SET =: 
*                   15 = HALT AT END OF EACH TEST 
*                   14 = SUPRESS ERROR HALTS
*                   13 = LOOP ON LAST TEST
*                   12 = LOOP ON DIAGNOSTIC 
*                        (SUPPRESS ALL OPERATOR INTERVENTION) 
*                   11 = SUPRESS ERROR MESSAGES 
*                   10 = SUPRESS NON-ERROR MESSAGES 
*                    9 = GO TO USER CONTROL SECTION 
*                        AT END OF PRESENT TEST 
*                    8= SUPPRESS OPERATOR INTERVENTION TESTS
*                    7
*                      = DIAGNOSTIC OPTIONS 
*                    0
*         NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0
*               USER CONTROL WILL ASK FOR A 32 BIT WORD.
*               EACH BIT WILL = 1 TEST
* 
*         G. PRESS RUN. 
*         H. RESTART - LOAD ADDRESS 2000B 
*         I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B 
* 
*         GENERAL COMPUTER HALTS
* 
*         1020XX    E OR H  000 TO 067
*         1060XX    E OR H  100 TO 167
*         1030XX    E OR H  200 TO 267
*         1070XX    E OR H  300 TO 367
* 
*         CONTROL PROGRAM HALT MESSAGES 
* 
*         102077    END OF DIAG (A = PASS COUNT)
*         102076    END OF TEST (A = TEST #)
*         102075    USER SELECTION REQUEST
*         102074    SELECT CODE INPUT COMPLETE
*         102073    USER SELECT CODE ERROR
*         102072    RESERVED
*         102071    RESERVED
*         102070    RESERVED
* 
*         106077    TRAP CELL HALT
* 
* 
* 
      HED PROGRAM ORGANIZATION CHART
*         ******************************************* 
*         *         CONFIGURATOR            100B    * 
*         *            LINKAGE TABLE                * 
*         ******************************************* 
*         *         EXECUTIVE               130B    * 
*         *         LINKAGE                         * 
*         ******************************************* 
*         *         CONSTANTS               150B    * 
*         *            AND                          * 
*         *         STORAGE                         * 
*         ******************************************* 
*         *                                2000B    * 
*         *         EXECUTIVE CONTROL               * 
*         *                                         * 
*         ******************************************* 
*         *         IF USED                         * 
*         *         BASIC I/O TESTS (TEST 00)       * 
*         *                                ZCEND    * 
*         ******************************************* 
*         *         TABLE OF TEST POINTERS          * 
*         *         TABLE OF I/O INSTR POINTERS     * 
*         ******************************************* 
*         *                                         * 
*         *                                         * 
*         *                                         * 
*         *                                         * 
*         *                                         * 
*         *         MAIN DIAGNOSTICS (1-31)         * 
*         *                                         * 
*         *                                         * 
*         *                                         * 
*         *                                         * 
*         *                                         * 
*         ******************************************* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
      HED CONFIGURATOR LINKAGE TABLE
A     EQU 0         A REGISTER REFERENCE
B     EQU 1         B REGISTER REFERENCE
SW    EQU 1         SWITCH REGISTER REFERENCE 
INTP  EQU 0         INTERRUPT CHANNEL REFERENCE 
CH    EQU 10B       I-O CHANNEL SELECT CODE 
* 
* 
      ORG 100B
* 
      JMP CFIG,I    GO TO CONFIGURATION SECTION 
FAIN  BSS 1         FAST INPUT (PHOTO READER) 
SLOP  BSS 1         SLOW OUTPUT (LIST)
FAOP  BSS 1         FAST OUTPUT (DUMP OR PUNCH) 
SLIN  BSS 1         SLOW INPUT (KEYBOARD) 
FWAM  DEF FWAA      FIRST WORD OF AVBL. MEMORY
LWAM  BSS 1         LAST WORD OF AVBL. MEMORY 
      BSS 1         NOT USED (MAG TAPE) 
OTMC  BSS 1         1 MILL SEC TIME OUT COUNT 
      BSS 4         SELECT CODES FOR I/O
CPTO  BSS 1         COMPUTER TYPE/OPTIONS 
USSC  BSS 1         USER CARD TYPE AND SELECT CODE
MEMO  BSS 1         MEMORY SIZE AND TYPE
ISWR  BSS 1         INTERNAL SWITCH REGISTER
TMRR  BSS 1         1 MILL SEC TIMER
SWRC  BSS 1         CONFIGURATOR SWITCH CK PTR
I2AS  BSS 1         INTEGER TO ASCII CONVERSION 
O2AS  BSS 1         OCTAL TO ASCII CONVERSION 
AS2N  BSS 1         ASCII CONVERSION
DSN   OCT 101110    DIAGNOSTIC SERIAL NUMBER
FMTR  BSS 1         FORMATTER 
* 
* 
*         CONTROL LINKAGE AND DATA REFERENCES 
* 
CFIG  DEF ZCONF     CONFIGURATION SECTION 
MSGC  DEF ZMSGC     MESSAGE WITH NO HALT
MSGH  DEF ZMSGH     MESSAGE WITH HALT 
ERMS  DEF ZERMS     ERROR MESSAGE 
SWRT  DEF ZSWRT     SWITCH REGISTER CHECK ROUTINE 
TSTN  OCT 0         CURRENT TEST NUMBER 
EXRT  DEF ZEXRT     RETURN TO CONTROL PROGRAM 
      NOP           RESERVED
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
      HED EXECUTIVE CONTROL 
      ORG 2000B 
ZSTEX CLC INTP,C    TURN I/O SYSTEM OFF 
      JSB MSGC,I    DO CRLF 
      DEF ZRTLF 
      LDA HDMP      GET INTRODUCTORY MESSAGE
      STA *+2 
      JSB MSGC,I    OUT PUT IT
      NOP 
      CLA           CLEAR PASS
      STA ZEOLC       COUNT 
      LDB ZSW9      CHECK FOR USER SELECTION REQ
      JSB SWRT,I
      JMP ZUSR      IT'S USERS CHOICE 
ZNUSR LDA STDA      GET STANDARD TEST RUN 
      LDB STDB      * 
      JMP ZEXC
* 
ZUSR  LDA ZSINA     RETRIEVE PREVIOUS RUN 
      LDB ZSINB 
      HLT 75B       WAIT FOR USER INPUT 
      NOP 
      NOP 
      NOP 
ZEXC  STA ZUINA     SAVE
      STB ZUINB       USER
      STA ZSINA         INPUT 
      STB ZSINB           PROGRAM 
      LDB ZSW9      CHECK IF SW9 IS DOWN
      JSB SWRT,I
      JMP ZUSR      NO GO AND WAIT
      CCA           SET TEST NUMBER 
      STA TSTN      =-1 
      CLA 
      STA ZTSTA     CLEAR TEST RUN FLAG 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
      SKP 
ZEXCL LDA ZUINA     RESTORE A REG.
      LDB ZUINB     RESTORE B REG.
      ERA,RAL       ROTATE
      ERB             FIRST 
      ERA               TEST BIT
      STA ZUINA     SAVE POSITIONS
      STB ZUINB 
      ISZ TSTN      MOVE TEST UP ONE
      NOP 
ZXCL1 LDA TSTN
      ADA TSTP      GET IT'S
      LDA A,I         ADDRESS 
      CPA Z.M1      IS IT END OF LIST 
      JMP ZEOL      YES 
      LDB ZUINB 
      SSB,RSS       SHOULD IT BE RUN? 
      JMP ZEXCL     NO
      STA ZTSTA     YES - SAVE TEST ADDRESS 
      JSB ZITCH     INITIALIZE TRAP CELL HALTS
      JSB ZTSTA,I   GO DO TEST
ZEXRT LDA TSTN      DISPLAY TEST NUMBER IF HALTED 
      LDB ZSW15     CHECK FOR HALT AT END OF TEST 
      JSB SWRT,I
      HLT 76B       YES WAIT FOR OPERATOR 
      LDB ZSW9      CHECK FOR ABORT 
      JSB SWRT,I
      JMP ZUSR      YES 
      LDB ZSW13     CHECK FOR LOOP ON ROUTINE 
      JSB SWRT,I
      JMP ZXCL1     YES - LOOP
      JMP ZEXCL     CONTINUE
* 
ZEOL  LDA ZTSTA     CHECK IF ANY TESTS WERE RUN 
      SZA,RSS       ? 
      JMP ZNUSR     NO  SO PICK UP STANDARD RUN 
      LDA ZEOLC     UP DATE PASS COUNT
      INA 
      STA ZEOLC 
      CCE 
      LDB ZPSCA     GET PASS COUNT
      ADB Z.2         ADDRESS 
      JSB O2AS,I    CONVERT IT
      JSB MSGC,I    CALL PRINT ROUTINE
ZPSCA DEF ZPSC
      LDB ZSW12     CHECK FOR LOOP ON DIAG. 
      JSB SWRT,I
      JMP *+3       YES 
      LDA ZEOLC 
      HLT 77B       NO WAIT AND DISPLAY PASS COUNT
      LDA ZSINA     RESTORE ORIGINAL
      LDB ZSINB       PROGRAM 
      JMP ZEXC      DO IT ALL AGAIN 
* 
      SKP 
*         MESSAGE OUTPUT WITH OUT HALT
* 
ZMSGC NOP           ENTRY 
      JSB ZMSG      OUTPUT MESSAGE
      OCT 2000      SWITCH 10 CHECK 
      JMP ZMSGC,I   RETURN TO CALLER
* 
*         MESSAGE OUTPUT WITH HALT
* 
ZMSGH NOP           ENTRY 
      JSB ZMSG      OUTPUT MESSAGE
      OCT 2000      SWITCH 10 CHECK 
      LDA ZHLT      GET HALT CODE 
      STA *+2       PUT IT IN PLACE 
      LDA ZSAVA     RESTORE A REGISTER
      NOP           HALT FOR DISPLAY
      JMP ZMSGH,I   RETURN TO CALLER
* 
*         ERROR MESSAGE WITH HALT 
* 
ZERMS NOP           ENTRY 
      JSB ZMSG      OUTPUT MESSAGE
      OCT 4000      SWITCH 11 CHECK 
      CLA 
      LDB ZSW14     CHECK SWR BIT 14 TO SUPPRESS
      JSB SWRT,I    HALT
      STA *+3       PUT  HALT IN PLACE
      LDA ZSAVA     RESTORE A & B 
      LDB ZSAVB 
ZHLT  NOP           WAIT FOR OPERATOR 
      JMP ZERMS,I   RETURN TO CALLER
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
      SKP 
*         OUTPUT MESSAGE
* 
ZMSG  NOP 
      STA ZSAVA     SAVE A AND B REGISTERS
      STB ZSAVB 
      LDB ZMSG,I    GET SWITCH REGISTER BIT 
      LDA ZMSG
      ADA Z.M2      DECREMENT RETURN ADDRESS
      STA ZMSG
      JSB SWRT,I    CHECK TO SUPPRESS MESSAGE 
      JMP ZMSG0     YES 
      LDA ZMSG,I    CHECK IF ERROR
      LDA A,I 
      LDA A,I       IF SO 
      ALF,ALF 
      AND Z.177 
      CPA ZA.E
      JSB ZCFTN     CHECK TO OUTPUT TEST NUMBER 
      LDA ZMSG,I    NO RETRIEVE FORMAT
      LDB A,I         ADDRESS 
      CLA,CLE 
      JSB FMTR,I
ZMSG0 LDA ZMSG,I    CONVERT HALT CODE 
      LDB A,I         FROM ASCII STRING 
      CCA,CCE 
      JSB AS2N,I
      STA ZN2AO     SAVE RESULT 
      AND Z.300     DECODE
      LDB ZH2         HALT CODE 
      CPA Z.100 
      LDB ZH6 
      CPA Z.200 
      LDB ZH3 
      CPA Z.300 
      LDB ZH7 
      LDA ZN2AO     GET HALT NUMBER 
      AND Z.77
      IOR B 
      STA ZHLT      SAVE IT 
      ISZ ZMSG,I    ADJUST RETURN POINTERS
      ISZ ZMSG
      ISZ ZMSG
      ISZ ZMSG
      LDA ZSAVA     RESTORE A AND B REGISTERS 
      LDB ZSAVB 
      JMP ZMSG,I
* 
* 
* 
* 
* 
* 
      SKP 
ZCFTN NOP 
      LDA TSTN      GET TEST NUMBER 
      CPA ZCFTT     IS IT THE SAME ONE? 
      JMP ZCFTN,I   YES SKIP OUTPUT 
      STA ZCFTT     NO - THEN UPDATE IT 
      JSB ZN2AO     CONVERT IT
      STA ZTSTN     PUT IT IN STRING
      CLA           DO A CRLF 
      JSB SLOP,I
      CLA,CLE       INDICATE START OF FORMAT
      LDB ZTSTF 
      JSB FMTR,I
      JMP ZCFTN,I   RETURN
* 
* 
* 
* 
ZSAVA NOP 
ZSAVB NOP 
ZEOLC NOP 
ZTSTA NOP 
ZSINA NOP 
ZSINB NOP 
ZUINA NOP 
ZUINB NOP 
ZBTMP NOP 
Z.2   OCT 2 
Z.7   OCT 7 
Z.10  OCT 10
Z.60  OCT 60
Z.77  OCT 77
Z.177 OCT 177 
Z.M1  DEC -1
Z.M2  DEC -2
ZD100 DEC -100
ZIOM  OCT 177700
ZSW15 OCT 100000
ZSW14 OCT 40000 
ZSW13 OCT 20000 
ZSW12 OCT 10000 
ZS812 OCT 010400
ZSW9  OCT 1000
Z.100 OCT 100 
Z.200 OCT 200 
Z.300 OCT 300 
ZH2   OCT 102000
ZH6   OCT 106000
ZH3   OCT 103000
ZH7   OCT 107000
ZCFTT DEC -1
ZTSTF DEF *+1 
      ASC 3,TEST
ZTSTN ASC 2,XX//
ZRTLF ASC 1,//
ZPSC  ASC 6,PASS XXXXXX/
ZA.E  OCT 105 
      HED GENERAL ROUTINES
* 
* 
ZN2AO NOP 
      STA ZIOAD     SAVE NUMBER 
      AND Z.7       CONVERT FIRST 
      IOR Z.60        NUMBER
      STA B         SAVE IT 
      LDA ZIOAD     GET 
      RAR,RAR         SECOND
      RAR               NUMBER
      AND Z.7       CONVERT 
      IOR Z.60        IT
      ALF,ALF       MOVE TO UPPER HALF
      IOR B         ADD LOWER 
      JMP ZN2AO,I   AND RETURN
* 
* 
* 
*         SWITCH REGISTER CHECK 
* 
ZSWRT NOP 
      STA ZN2AO     SAVE A REGISTER 
      LIA SW        GET SWITCH REG. 
      AND B         MASK OUT BIT
      SZA,RSS       IS IT UP? 
      ISZ ZSWRT     NO
      LDA ZN2AO     RESTORE A REGISTER
      LIB SW        LET B = SWITCH REGISTER 
      JMP ZSWRT,I   RETURN TO CALLER
* 
* 
* 
*         INITIALIZE TRAP CELL HALTS
* 
ZITCH NOP 
      LDA ZTSH      GET STARTING TRAP CELL HALT 
      LDB Z.2       GET FIRST TRAP CELL LOCATION
ZTSHL STA B,I       PUT IT IN PLACE 
      CPB Z.77      AM I FINISHED 
      JMP ZITCH,I   YES 
      INB             NEXT ADDRESS
      JMP ZTSHL 
* 
ZTSH  OCT 106077
* 
* 
* 
      SKP 
*         PUT JSB INSTRUCTION IN TRAP CELL
* 
ZTCJI NOP 
      LDB ZJSBI     GET INSTRUCTION 
      STB ZIOSC,I   PUT IT IN TRAP CELL 
      LDA ZTCJI,I   GET LOCATION
      STA 3B        SAVE IT FOR JSB INSTRUCTION 
      ISZ ZTCJI     ADJUST RETURN 
      JMP ZTCJI,I   RETURN TO CALLER
* 
ZJSBI JSB 3B,I      JSB INSTRUCTION 
* 
* 
*         INITIALIZE SELECT CODE I/O INSTRUCTIONS 
* 
ZISC  NOP 
      STA ZIOSC     SAVE SELECT CODE
      STB ZIOAD     SAVE TABLE ADDRESS
ZIOL  LDB ZIOAD,I   GET ADDRESS OF LOCATION 
      CPB Z.M1      IS IT THE TERMINATOR
      JMP ZISC,I    YES RETURN TO CALLER
      LDA B,I       NO - GET CONTENTS 
      AND ZIOM      MASK OFF OLD SELECT CODE
      IOR ZIOSC     ADD IN NEW SELECT CODE
      STA B,I       RESTORE  IT 
      ISZ ZIOAD     MOVE TO NEXT ADDRESS
      JMP ZIOL      DO IT 
* 
ZIOSC NOP 
ZIOAD NOP 
* 
* 
* 
* 
      SKP 
*         CONFIGURATION SECTION 
* 
ZCONF CLC INTP,C    TURN I/O SYSTEM OFF 
      LIA SW        GET SELECT CODE AND OPTIONS 
      STA USSC      SAVE THEM 
      AND Z.77      ELIMINATE OPTIONS 
      STA TBGSC 
      LDB A 
      CMB,INB       CHECK THAT SC > 7 
      ADB Z.7 
      SSB           ? 
      JMP *+3       OK GO ON
      HLT 73B       NO
      JMP ZCONF     TRY AGAIN 
      LDB IOIP      INITIALIZE TEST I/O 
      JSB ZISC        INSTRUCTIONS
      HLT 74B       ALLOW OPERATOR TO CHANGE SWIT 
      JMP ZSTEX     GO TO EXEC CONTROL SECTION
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
* 
      HED TEST DATA TABLES
********************************************************************
*  SPECIAL TEST TABLE FOR SNGL TESTS
* 
*  OVERFLOW SHOULD BE SET 
********************************************************************
SGHD1 DEC 2 
SGBS1 EQU * 
      OCT 137777    -0.146936793854E-38 
      OCT 177600      LOWER BOUNDARY-INNER RANGE
      OCT 000401
* 
      OCT 0         0.0000000E+00 
      OCT 0 
* 
* 
      OCT 077777    +0.170141163178E+39 
      OCT 177600      UPPER BOUNDARY-OUTER RANGE
      OCT 000376
* 
      OCT 077777    +0.1701412E+39
      OCT 177776
* 
* 
********************************************************************
* 
* 
********************************************************************
*  SPECIAL TEST TABLE FOR SNGL TEST 
* 
*  OVERFLOW SHOULD NOT BE SET 
********************************************************************
* 
SGHD2 DEC 2 
SGBS2 EQU * 
      OCT 137777    LOWER BOUNDARY-INNER RANGE
      OCT 177600
      OCT 000001
* 
      OCT 137777
      OCT 177401
* 
* 
      OCT 077777    UPPER BOUNDARY-OUTER RANGE
      OCT 177577
      OCT 177776
* 
      OCT 077777
      OCT 177776
* 
* 
********************************************************************
* 
* 
********************************************************************
*  SPECIAL TEST TABLE XADD TEST 
* 
*  OVERFLOW SHOULD BE SET 
********************************************************************
* 
ADHD1 EQU * 
      DEC 4 
* 
ADBS1 EQU * 
      OCT 045526    +0.100141183461E+39 
      OCT 076612      UPPER BOUNDARY-OUTER RANGE
      OCT 024776
* 
*  DO NOT CHANGE THE FOLLOWING 3 WORDS TO 0!!!! 
*  THE INTERRUPT TEST FOR "XADD" USES THIS ENTRY; A "0" IN
*  THESE WORDS WILL EXIT THE MICRO WITHOUT TESTING FOR
*  INTERRUPT. THEREFOR THE INTERRUPT TEST WILL FAIL.
* 
      OCT 064523    +0.699999999999E+38 
      OCT 002353
      OCT 126774
* 
      OCT 077777    +0.170141183460E+39 
      OCT 177777
      OCT 177776
* 
* 
      OCT 132251    -0.100141183461E+39 
      OCT 101165      LOWER BOUNDARY-OUTER RANGE
      OCT 153776
* 
      OCT 113254    -0.699999999999E+38 
      OCT 175424
      OCT 050374
* 
      OCT 100000    -0.170141183460E+39 
      OCT 0 
      OCT 000376
* 
* 
      OCT 077777    +0.293873587705E-38 
      OCT 177777      UPPER BOUNDARY-INNER RANGE
      OCT 177401
* 
      OCT 137777    -0.146936793854E-38 
      OCT 177777
      OCT 177401
* 
      OCT 0         0.00E00 
      OCT 0 
      OCT 0 
* 
* 
      OCT 137777    -0.293873587707E-38 
      OCT 177777      LOWER BOUNDARY-INNER RANGE
      OCT 177403
* 
      OCT 040000    +0.146936793854E-38 
      OCT 0 
      OCT 001001
* 
      OCT 0         0.00E00 
      OCT 0 
      OCT 0 
* 
* 
********************************************************************
* 
* 
********************************************************************
*  SPECIAL TEST TABLE FOR XADD TEST 
* 
*  OVERFLOW SHOULD NOT BE SET 
********************************************************************
* 
ADHD2 EQU * 
      DEC 4 
ADBS2 EQU * 
      OCT 045526    UPPER BOUNDARY-OUTER RANGE
      OCT 076612
      OCT 024776
* 
      OCT 064523
      OCT 002353
      OCT 125774
* 
      OCT 077777
      OCT 177777
      OCT 177776
* 
* 
      OCT 132251    LOWER BOUNDARY-OUTER RANGE
      OCT 101165
      OCT 153776
* 
      OCT 113254
      OCT 175424
      OCT 050774
* 
      OCT 100000
      OCT 0 
      OCT 000376
* 
* 
      OCT 040000    UPPER BOUNDARY-INNER RANGE
      OCT 0 
      OCT 000001
* 
      OCT 0 
      OCT 0 
      OCT 0 
* 
      OCT 040000
      OCT 0 
      OCT 000001
* 
* 
      OCT 137777    LOWER BOUNDARY-INNER RANGE
      OCT 177777
      OCT 177403
* 
      OCT 040000
      OCT 0 
      OCT 000401
* 
      OCT 137777
      OCT 177777
      OCT 177401
* 
* 
********************************************************************
* 
* 
* 
                                                                                                                                                                                                                                                      