ASMB,A,B,L,C
      HED 2100 SERIES COMPUTER ALTER-SKIP TEST
      ORG 2B
* 
******************************************************************* 
* 
* 
* DIAGNOSTIC CHECKS ALTER-SKIP INSTR GROUP
* 
* DIAGNOSTIC ASSUMES THE FOLLOWING TESTS HAVE BEEN RUN
* 
*    MEMORY REFERENCE GROUP  DSN 101000 
* 
* RUNS IN 4K OF MEMORY
* 
* TELETYPE NOT REQUIRED 
* 
* DIAGNOSTIC CONFIGURATOR NOT REQUIRED
* 
* DIAGNOSTIC SERIAL NO (DSN) 101001 
* 
* OPERATING INSTRUCTIONS: 
* 
*     1.  LOAD ASG DIAGNOSTIC.
* 
*     2.  SET P REGISTER TO 100.
* 
*     3.  SELECT PROGRAM OPTIONS: 
* 
* 
*************** SWITCH REGISTER OPTIONS *************************** 
* 
*   BIT        MEANING
* 
*    0         LOOP BACK TO REPEAT A FAILING INSTRUCTION
*              BUT HALT 76 BEFORE EXECUTION 
*   1-11       RESERVED 
*   12         CLEAR TO HALT 102077 AT END OF PASS.(A REGISTER =
*              PASS COUNT) SET TO LOOP ON DIAGNOSTIC. 
*   13-15      RESERVED 
* 
* 
*     4.  PRESS PRESET(INT. & EXT. IF PRESENT), AND RUN.
* 
      SKP 
*************** COMPUTER HALTS *************************************
* 
*   HALT       MEANING
* 
*  10200X      X= 1, A OR B ERROR; =2, E ERROR; =4, SKIP ERROR
*              A = ACTUAL A OR B RESULT 
*              B = EXPECTED A OR B RESULT 
*              E = ACTUAL E RESULT
*  102000      ERROR DISPLAY HALT 
*              A = FAILING INSTR CODE 
*              B = ORIGINAL VALUE IN A OR B 
*              E = ORIGINAL VALUE IN E
*  10204X      CLE,CCE,CME,SEZ,RSS ERROR (X=O-6)
*  102076      HALT BEFORE REPEATING ERROR CONDITION
*  102077      END OF PASS HALT. A REG. = PASS #
*  103000      UNEXPECTED CHANGE IN A REG 
*  103001      UNEXPECTED CHANGE IN B REG 
*  106077      UNEXPECTED TRAP CELL HALT
* 
* 
******************************************************************* 
* 
      SKP 
*     UNL 
*     REP 62        FILL TRAP CELLS 
*     OCT 106077    LOC 2 THRU 77 
      UNL 
      REP 62
      OCT 106077
      LST 
      ORG 100B
      JMP START 
      ORG 126B
      OCT 101001    DIAGNOSTIC SERIAL NO
      ORG 130B
      JMP START 
      JMP START 
      SPC 3 
PATA  DEF PAT1
PAT1  OCT 0 
      OCT 177777
      OCT 1 
      OCT 100000
      OCT 100001
      OCT 74170 
      OCT 103607
      OCT 125252
      OCT 52525 
PATE  DEF * 
      SPC 3 
AAB   NOP           ACTUAL A OR B REG RESULT
ARG   NOP           ORIGINAL CONTENTS IN A OR B REG.
EAB   NOP           EXPECTED A OR B REG RESULT
EE    NOP           EXPECTED E REGISTER RESULT
ESKP  NOP           EXPECTED SKIP FLAG (0=NO SKIP)
IE    NOP           INITIAL CONTENTS OF E REGISTER
PCA   NOP           PASS COUNT
PT    NOP           DATA POINTER
SKPEI NOP           SKIP ERROR INDICATOR: 0=ERROR 
BIT0  OCT 1 
BIT1  OCT 2 
BIT2  OCT 4 
BIT3  OCT 10
BIT5  OCT 40
BIT6  OCT 100 
BIT7  OCT 200 
BIT8  OCT 400 
BIT9  OCT 1000
BIT11 OCT 4000
BIT12 OCT 10000 
BIT15 OCT 100000
B3    OCT 3 
B11   OCT 11
B20   OCT 20
B21   OCT 21
B31   OCT 31
B41   OCT 41
B73   OCT 73
B300  OCT 300 
.0    OCT 0 
.1    OCT 1 
M1    DEC -1
M2    DEC -2
A1400 OCT 1400
A2001 OCT 2001
A4000 OCT 4000
I0001 OCT 100001
PATX  OCT 43210     DATA FOR NON WORKING REGISTER 
.0X   EQU 00
B     EQU 1         B REGISTER
      SPC 3 
* EXECUTE & CHECK ROUTINE FOR ALTER SKIP INSTRUCTIONS 
* 
E.C   NOP 
      LDB INSTR     B _ INSTRUCTION 
      LDA ESKP
      CPA .0        TEST EXPECTED SKIP
      JMP NSE         NO SKIP EXPECTED
      STB INSTX     SKIP EXPECTED 
      JSB INITT     INITIALIZE
      JMP *+2       JUMP OVER REPEAT HALT 
RPTS  HLT 76B         HALT BEFORE REPEAT
INSTX NOP           EXECUTE ALTER SKIP INSTRUCTION
      ISZ SKPEI     DID NOT SKIP - STEP INDICATOR 
      JMP E.C2
NSE   JSB INITT     INITIALIZE
      JMP *+2       JUMP OVER REPEAT HALT 
RPTNS HLT 76B         HALT BEFORE REPEAT
INSTR NOP           EXECUTE ALTER SKIP INSTRUCTION
      JMP *+2         OK - IT DID NOT SKIP
      ISZ SKPEI     UNEXPECTED SKIP - STEP INDICATOR
E.C2  STA AAB       ASSUME ACTUAL A OR B IS A REG.
      LDA INSTR 
      AND BIT11 
      CPA BIT11     TEST REGISTER INVOLVED
      JMP E.C4      ACTUAL REG. IS B
      CPB PATX
      JMP E.C5
      LDA INSTR     ERROR: UNEXPECTED CHANGE IN B 
      OCT 103001      HALT: T_103001, A_INSTR 
      JMP E.C9        GO CHECK FOR REPEAT 
E.C4  LDA AAB       RESTORE A REGISTER RESULT 
      STB AAB       WORKING REGISTER IS B 
      CPA PATX
      JMP E.C5
      LDB INSTR     ERROR: UNEXPECTED CHANGE IN A 
      OCT 103000      HALT: T_103000, B_INSTR 
      JMP E.C9        GO CHECK FOR REPEAT 
E.C5  CLB           INITIALIZE POSSIBLE HALT CODE 
      ISZ SKPEI     CHECK SKIP INDICATOR - IT SHOULD
      JMP *+2         HAVE BEEN -2
      ADB BIT2      WAS -1: SKIP OR NO SKIP ERROR 
      LDA EAB 
      CPA AAB       COMPARE ACTUAL & EXPECTED A OR B
      JMP *+2         REGISTER RESULTS
      ADB BIT0      A OR B REGISTER ERROR 
      LDA .0
      SEZ 
      LDA M1        A _ ACTUAL E REG: -1 IF NOT 0 
      CPA EE        CHECK ACTUAL & EXPECTED E RESULT
      JMP *+2 
      ADB BIT1      E REGISTER RESULT ERROR 
      CPB .0
      JMP E.C,I     B=0, NO ERRORS, RETURN P+1
* 
* ERROR HALT & DISPLAY 1
* 
      ADB HLT0
      STB HLTI      A _ ACTUAL A OR B REG. RESULT 
      LDA AAB       B _ EXPECTED A OR B REG. RESULT 
      LDB EAB       E _ ACTUAL E REGISTER RESULT
HLTI  HLT .0X       T _ 10200X
* 
* 2ND DISPLAY HALT
* 
      LDA IE
      CCE           E _ ORIGNAL E REG. CONTENTS 
      CPA .0        A _ ALTER SKIP INSTRUCTION
      CLE           B _ ORIGINAL A OR B REG. CONTENT
      LDA INSTR     T _ 102000
      LDB ARG 
HLT0  HLT 0 
* 
E.C9  LIA 1 
      AND BIT0
      CPA .0        SWITCH 0 CLEAR
      JMP E.C,I       DON'T LOOP REPEAT ON ERROR
      LDA ESKP      BEFORE REPEATING, CHECK THE 
      CPA .0          EXPECTED SKIP INDICATOR AGAIN 
      JMP E.C3
      JSB INITT     REINITIALIZE
      JMP RPTS        DO AGAIN - SKIP EXPECTED
E.C3  JSB INITT 
      JMP RPTNS       DO AGAIN - NO SKIP EXPECTED 
* 
INITT NOP 
      LDB M2
      STB SKPEI     RESET SKIP INDICATOR TO -2
      LDA IE
      CCE 
      CPA .0
      CLE           INITIALIZE E REGISTER 
      LDA INSTR 
      AND BIT11 
      CPA BIT11 
      JMP INIT1 
      LDA ARG       A REG. INSTRUCTION
      LDB PATX        A_ARG, B_043210 
      JMP INITT,I 
INIT1 LDA PATX      B REG. INSTRUCTION
      LDB ARG         A_043210, B_ARG 
      JMP INITT,I 
      SPC 3 
START CLC 0,C       TURN EVERYTHING OFF 
      CLA 
      STA PCA       RESET END OF PASS COUNT 
* 
SOP   RSS 
      HLT 40B       RSS FAILED
* 
      CLE 
      SEZ           CLE 
      HLT 41B       SEZ COMBINATION FAILED
* 
      CLE 
      SEZ,RSS 
      JMP *+2       CLE 
      HLT 42B       SEZ,RSS COMBINATION FAILED
* 
      CCE 
      SEZ,RSS       CCE 
      HLT 43B       SEZ,RSS COMBINATION FAILED
* 
      CCE 
      SEZ 
      JMP *+2       CCE 
      HLT 44B       SEZ COMBINATION FAILED
* 
      CLE 
      CME           CLE 
      SEZ,RSS       CME 
      HLT 45B       SEZ,RSS COMBINATION FAILED
* 
      CCE 
      CME           CCE 
      SEZ           CME 
      HLT 46B       SEZ COMBINATION FIALED
      SPC 3 
      LDA A2001     START WITH OCTAL 2001 
X1    STA INSTR     SAVE NEXT INSTRUCTION 
      LDA .0
X2    STA IE        FOR E = 0,1 
      LDB PATA
X3    STB PT        FOR 9 DATA PATTERNS 
      LDA B,I 
      STA ARG       ARG _ NEXT DATA PATTERN 
      STA EAB       ASSUME EAB = ARG
      LDB .0
      STB ESKP      ASSUME NO SKIP EXPECTED 
      LDA IE
      STA EE        ASSUME EE = IE
      LDA INSTR 
      AND A1400 
      CPA BIT8
      STB EAB       CLA OR CLB:  EAB _ 0
      LDB M1
      CPA A1400 
      STB EAB       CCA OR CCB:  EAB _ 177777 
      CPA BIT9
      JMP *+2 
      JMP X4
      LDA ARG 
      XOR M1        CMA OR CMB: 
      STA EAB         EAB _ 1'S COMPLIMENT OF ARG 
X4    LDA INSTR 
      AND B41 
      CPA BIT5
      JMP *+2 
      JMP X5        NOT SEZ 
      LDA IE
      CPA .0
      STB ESKP      SEZ & E=0:  ESKP _ -1 
      JMP X6
X5    CPA B41 
      JMP *+2 
      JMP X6        NOT SEZ,RSS 
      LDA IE
      CPA M1
      STB ESKP      SEZ,RSS & E=1:  ESKP _ -1 
X6    LDA INSTR 
      LDB .0
      AND B300
      CPA BIT6
      STB EE        CLE:  EE _ 0
      LDB M1
      CPA B300
      STB EE        CCE: EE _ -1
      CPA BIT7
      JMP *+2 
      JMP X7        NOT CME 
      LDA IE
      XOR M1        CME:
      STA EE          EE _ 1'S COMPLIMENT OF IE 
X7    LDA INSTR 
      AND B31 
      CPA B31 
      JMP *+2 
      JMP X8        NOT SS*,SL*,RSS 
      LDA EAB 
      AND I0001 
      CPA I0001     SS*,SL*,RSS & BIT15 = BIT0 = 1: 
      STB ESKP        ESKP _ -1 
      JMP X12 
X8    LDA INSTR 
      AND B21 
      CPA B21 
      JMP *+2 
      JMP X9        NOT SS*,RSS 
      LDA EAB 
      AND BIT15 
      CPA BIT15 
      STB ESKP      SS*,RSS & BIT 15=1:  ESKP _ -1
      JMP X10 
X9    CPA B20 
      JMP *+2 
      JMP X10       NOT SS* 
      LDA EAB 
      AND BIT15 
      CPA .0
      STB ESKP
X10   LDA INSTR     SS* & BIT15=0: ESKP _ -1
      AND B11 
      CPA B11 
      JMP *+2 
      JMP X11       NOT SL*,RSS 
      LDA EAB 
      AND BIT0
      CPA BIT0
      STB ESKP      SL*,RSS & BIT0=1: ESKP _ -1 
      JMP X12 
X11   CPA BIT3
      JMP *+2 
      JMP X12       NOT SL* 
      LDA EAB 
      AND BIT0
      CPA .0
      STB ESKP      SL* & BIT0=0:  ESKP _ -1
X12   LDA INSTR 
      AND BIT2
      CPA .0
      JMP X13       NOT IN* 
      LDA EAB 
      CPA M1
      STA EE        IN* & REG=177777: EE _ -1 
      ADA .1
      STA EAB       IN*:  EAB _ EAB+1 
X13   LDA INSTR 
      AND B3
      CPA B3
      JMP *+2 
      JMP X14       NOT SZ*,RSS 
      LDA EAB 
      CPA .0
      JMP X15 
      STB ESKP      SZ*,RSS & REG NOT 0:  ESKP _ -1 
      JMP X15 
X14   CPA BIT1
      JMP *+2 
      JMP X15       NOT SZ* 
      LDA EAB 
      CPA .0
      STB ESKP      SZ* & REG=0:  ESKP _ -1 
X15   LDA INSTR 
      AND B73 
      CPA BIT0
      STB ESKP      RSS:  ESKP _ -1 
      JSB E.C       GO EXECUTE & CHECK
      LDB PT
      ADB .1
      CPB PATE
      JMP *+2 
      JMP X3        NEXT DATA PATTERN 
      LDA IE
      ADA M1
      CPA M1
      JMP X2        REPEAT FOR E=1
      LDA INSTR 
      ADA .1        INSTR _ INSTR + 1 
      CPA A4000 
      ADA A2001     MAKE 6001 IF 4000 
      CPA BIT12 
      JMP EOP       END OF PASS IF 10000
      JMP X1          ELSE DO NEXT INSTRUCTION
      SPC 3 
EOP   LDA PCA       STEP END OF PASS COUNT
      ADA .1
      STA PCA 
      LIA 1 
      AND BIT12 
      CPA BIT12 
      JMP SOP 
      LDA PCA 
      HLT 77B       END OF PASS HALT
      JMP SOP       GO AROUND AGAIN 
* 
      END 
                                                                                                                                                    