ASMB,A,B,L,C
      HED 12665 DIAGNOSTIC PROGRAM -- BASIC TESTS 
      ORG 2 
* 
*     12665 DIAGNOSTIC PROGRAM
* 
*     SOURCE TAPES 29005-80001 (1 OF 2)     DATE CODE 1636
*              AND 29005-80002 (2 OF 2)     DATE CODE 1636
* 
*     STARTING ADDRESS 2
* 
*     RESTARTING ADDRESS 100B 
* 
*     REQUIRES TAPE READER ONLY, THE SWITCH REGISTERS ARE 
*     USED FOR ENTERING THE NECESSARY INFORMATION REQUIRED
*     BY THE PROGRAM. THE FOLLGWING TABLE SHOWS THE PROGRAM 
*     WORD ORGANIZATION.
* 
* 
*        ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^
*     BIT^15^14^13^12^11^10^ 9^ 8^ 7^ 6^ 5^ 4^ 3^ 2^ 1^ 0^
*        ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^  ^
*        ^     ^  ^  ^        ^        ^                 ^
*        ^     ^  ^  ^        ^        ^                 ^
*               ^  ^    ^          ^            ^ 
*              /   ^    ^         /            /
*     DMA INDI-   /    /         /            / 
*     CATOR      /  WIRED BIT   /           SELECT CODE 
*     1 - YES   /   LENGTH     COMPUTER     FROM 10 TO 77 
*     0 - NO   /    000- 1US   000- ILL.    OCTAL 
*             /     001- 2US   011-2114/15  BELOW 10B ILL.
*            /      010- 4US   001/010      ILL. HALT 
*       2570 IN-    011- 8US     -2100/16   AT 2
*       DICATOR     100-16US   100 - 21MX 
*       1 - YES     101-32US   101-21MX E-SERIES
*       0 - NO      110- ILL.  ILL. HALT
*                   111- ILL.  AT 1 
*                   ILL. HALT 
*                   AT 3
* 
*     IF HALT HAPPENS AT 1, 2, 3, CORRECT THE SWITCH REGISTERS, 
*     THEN  "RUN" 
*     IF HALT AT ANY OTHER LOCATION, LOOK THE ERROR MESSAGE TABLE 
*     FOR DESCRIPTION OF ERROR, THE OPERATOR WILL THEN HAVE ONE 
*     OPTION TO CHOOSE, 
*     WITH BIT 15   1 --  SKIP THE SCOPE LOOP AND CONTINUE THE NEXT 
*                         TEST AFTER  "RUN" 
*                   0 --  GO INTO SCOPE SERVICE LOOP AFTER "RUN"
* 
*     AT THE COMPLETION OF DIAGNOSIS, THE COMPUTER WILL HALT THE 77B. 
*     TO COMPLETE THE PARITY CHECK IT IS REQUIRED FOR THE OPERATOR
*     TO CONNECT TEST POINT TP18 TO GROUND, THEN "RUN", THE 
*     COMPUTER WILL HALT AT 76B IF THE PARITY LOGIC IS CORRECT, AND 
*     HALT AT 54B INDICATES INCORRECT PARITY LOGIC. 
* 
*     FOR COMPUTER TO COMPUTER SYSTEM CHECK, IT REQUIRES THAT THE 
*     DIAGNOSTIC PROGRAM BE LOADED AND EXECUTED ONCE IN EACH COMPUTER 
*     THEN TIE THESE TWO COMPUTERS TOGETHER THROUGH THE COMMUNICATION 
*     CABLE. TO START THE TEST, SIMPLY LOAD 
* 
*                   ADDRESS 4000B INTO THE ORIGINATING COMPUTER 
* 
*                   ADDRESS 5000B INTO THE RESPONDING COMPUTER
* 
*     THEN "RUN" FOR BOTH COMPUTERS.
* 
*     HALT AT 70B WILL HAPPEN WHENEVER THERE IS ANY ERROR SPOTTED 
*     IN THE TRANSMISSION. TO CONTINUE THE TEST SIMPLY "RUN"
* 
*     RETEST AFTER HALT AT 77B REQUIRES "RUN" ONLY
* 
*     ABBREVIATIONS   US -- MICROSECOND 
*                     MS -- MILLISECOND 
* 
      JMP 110B,I
      ORG 100B      RESTART ADDRESS 
      JMP 101B,I
      ORG 101B      RESTART BASE PAGE LINKAGE 
      DEF ITEST 
      ORG 110B      BASE PAGE LINKAGE 
      DEF START 
      ORG 2000B 
START LIA 1         READ CONTROL WORD FROM SW REGISTERS 
      STA DIAGW     SAVE DIAGNOSTIC CONTROL WORD
      ALF           ROTATE FOUR PLACES
      AND M3        MASK THE LAST TWO BITS
      STA TEMP0     SAVE
      AND M1        MASK BIT 0
      STA A2570     SET 2570 INDICATOR
      LDA TEMP0     FETCH 
      RAR           ROTATE A RIGHT ONE PLACE
      AND M1        MASK BIT 0
      STA ADMA      SAVE IN DMA INDICATOR 
      LDA DIAGW     FETCH CONTROL WORD
      ALF,ALF 
      RAR 
      AND M7        MASK BIT LENGTH INFORMATION 
      STA BLNG
      LDA DIAGW     FETCH CONTROL WORD
      ALF,ALF 
      RAL,RAL 
      AND M7        MASK COMPUTER TYPE INFORMATION
      SZA,RSS 
      JMP *+2 
      JMP *+3 
HLT1  HLT 1         ERROR! CHECK COMPUTER TYPE BITS 6 TO 8
      JMP START     RECONFIGURE 
      STA CTYPE     SAVE
      LDB M67       PREPARE 
      LDA HIS          TRAPS
      STA *+2            FOR
      LDA HI               ILLEGAL
      STA 10B                INTERRUPT
      ISZ *-1                   FROM
      INA                         ANY 
      INB,SZB                      DEVICE 
      JMP *-4 
      LDA DIAGW     FETCH CONTROL WORD
      AND M77       MASK SELECT CODE
      STA ADDR      SAVE ADDRESS
      AND M70       MASK BITS 3,4,5 
      SZA,RSS       CHECK FOR ACCEPTABLE CODE 
      JMP *+2 
      JMP *+3 
HLT2  HLT 2         ERROR! ILLEGAL SELECT CODE
      JMP START     RECONFIGURE 
      JSB ADIN      CONFIGURE ADDRESS INTO INSTRUCTIONS 
      JSB WDTMM     CALCULATE THE TIME MULTIPLIER 
* 
*     INITIAL TEST --- CHECK THE TRANSMITTING/RECEIVING 
*                      MODE F/F, THE FLAG F/F, THE FLAG 
*                      BUFFER F/F, THE CONTROL F/F, THE 
*                      INTERRUPT CIRCUITRY, AND ALL THE 
*                      ASSOCIATED GATES.
* 
ITEST NOP 
      CLC 0,C       TURN-OFF INTERRUPT SYSTEM 
CLC1  CLC 0         SET CARD IN TRANSMITTING MODE 
      LDB CNT3      WAIT
      INB             FOR 
      SZB              AT LEAST 
      JMP *-2             10  US
SFS1  SFS 0         TEST FLAG SET 
      JMP HLT10 
      JMP *+3 
HLT10 HLT 10B       ERROR! FLAG IS NOT SET
      JSB LOOP1 
SFC1  SFC 0         TEST FLAG CLEAR 
      JMP *+3 
HLT11 HLT 11B       ERROR! FLAG IS CLEARED
      JSB LOOP1 
OTA1  OTA 0         CLEAR THE FLAG
SFS2  SFS 0         TEST FLAG 
      JMP *+3 
HLT12 HLT 12B       ERROR! FLAG IS SET
      JSB LOOP1     GO TO SERVICE LOOP
SFC2  SFC 0 
      JMP HLT13 
      JMP *+3 
HLT13 HLT 13B       ERROR! FLAG IS NOT CLEARED
      JSB LOOP1     GO TO  SERVICE LOOP 
      LDB CNT1      FETCH COUNTS
      INB           WAIT
      SZB             ABOUT 
      JMP *-2           1 MS
* 
*     10 US ONE - SHOT TEST 
* 
CLCC1 CLC 0,C       SET CARD IN RECEIVING MODE
LIA1  LIA 0         READ A DATA WORD, CLEAR FLAG
CLC2  CLC 0         SET CARD IN TRANSMITTING MODE 
      NOP           WAIT
SFS3  SFS 0         TEST FLAG SET 
      JMP *+3       OK! 
HLT14 HLT 14B       ERROR! FLAG IS SET TOO SOON 
      JSB LOOP1     GO TO SERVICE LOOP
      LDB CNT2      WAIT
      INB             AT LEAST
      SZB                 10
      JMP *-2              US 
SFS4  SFS 0         TEST FLAG 
      JMP HLT15 
      JMP *+3 
HLT15 HLT 15B       ERROR! FLAG IS NOT SET YET
      JSB LOOP1     GO TO SERVICE LOOP
* 
*     INTERRUPT LOGIC TEST
* 
      CLC 0,C       TURN-OFF INTERRUPT SYSTEM 
CLCC2 CLC 0,C       SET CARD IN RECEIVING MODE
LIA2  LIA 0         CLEAR FLAG
STCC1 STC 0,C       SET CONTROL 
SFC3  SFC 0         TEST FLAG CLEAR 
      JMP HLT16 
      JMP *+3 
HLT16 HLT 16B       ERROR! FLAG IS NOT CLEARED
      JSB LOOP1     GO TO SERVICE LOOP
      LDA ERR       SET ERROR IN
      STA ADDR,I         TRAP CELL
      STF 0         TURN-ON INTERRUPT SYSTEM
      NOP           WAIT
      NOP 
      LDA OK        SET OK IN 
      STA ADDR,I         TRAP CELL
STC1  STC 0         SET CONTROL 
      LDB CNT3      WAIT
      INB             FOR 
      SZB               INTERRUPT 
      JMP *-2 
      NOP 
HLT0  HLT 0         ERROR! WRONG INTERRUPT
      JSB LOOP1     GO TO SERVICE LOOP
OKXX  LDA HLT0      RESTORE 
      IOR ADDR         TRAP 
      STA ADDR,I          CELL
      CLF 0         TURN-OFF INTERRUPT SYSTEM 
* 
*     TRANSMITTER/RECEIVER TEST 
* 
CLCC3 CLC 0,C       SET CARD IN RECEIVING MODE
LIA3  LIA 0         CLEAR FLAG
SFC4  SFC 0         TEST FLAG CLEAR 
      JMP HLT17 
      JMP *+3 
HLT17 HLT 17B       ERROR! FLAG IS NOT CLEARED
      JMP LOOP2     GO TO SERVICE LOOP
LIAC1 LIA 0,C       READ STATUS WORD
LIAC2 LIA 0,C       READ STATUS WORD
* 
*     AFTER READ DATA WORD AND STATUS WORD THE RECEIVER 
*     ENABLED , MISSED WORD, RECEIVER IN PROCESS AND PARITY 
*     FLIP-FLOPS SHOULD ALL BE CLEARED
* 
      SLA           CHECK 
      JMP HLT20       RECEIVER ENABLE 
      JMP *+3                FLIP FLOP
HLT20 HLT 20B       ERROR! RECEIVER IS DISABLED 
      JSB LOOP2     GO TO SERVICE LOOP
      SSA           CHECK 
      JMP HLT21        PARITY 
      JMP *+3              F/F
HLT21 HLT 21B       ERROR! PARITY F/F IS SET
      JSB LOOP2     GO TO SERVICE LOOP
      RAR,RAR 
      SSA           CHECK 
      JMP HLT22        MISSED WORD
      JMP *+3               F/F 
HLT22 HLT 22B       ERROR! M.W. F/F IS SET
      JSB LOOP3     GO TO SERVICE LOOP
      SLA           CHECK 
      JMP HLT23        RECEIVER IN PROCESS
      JMP *+3                  F/F
HLT23 HLT 23B       ERROR!  R.I.P. F/F IS SET 
      JSB LOOP2     GO TO SERVICE LOOP
* 
* 
*     TRANSMIT A WORD TO CHECK STATUS BITS, ONLY THE REC. 
*     IN PROCESS F/F SHOULD CHANGE STATE
* 
OTA2  OTA 0         TRANSMIT A WORD 
      ISZ .5WTM     WAIT FOR ABOUT
      JMP *-1          HALF A WORD TIME 
LIAC3 LIA 0,C       READ STATUS 
      SLA           CHECK 
      JMP HLT24        REC. 
      JMP *+3             ENA. F/F
HLT24 HLT 24B       ERROR! RECEIVER IS DISABLED TOO 
      JSB LOOP2       SOON; BIT TIME MAY BE WRONG 
      RAR 
      SLA           CHECK 
      JMP HLT25        M.W. F/F 
      JMP *+3 
HLT25 HLT 25B       ERROR! M.W. F/F SHOULD NOT BE SET 
      JSB LOOP3     GO TO SERVICE LOOP
      RAR 
      SLA           CHECK 
      JMP *+3          R.I.P. F/F 
HLT26 HLT 26B       ERROR! R.I.P. F/F IS NOT SET
      JSB LOOP2            EITHER F/F OR CLOCK IS BAD 
      ISZ WTM       WAIT FOR
      JMP *-1         ONE COMPLETE WORD TIME
SFS5  SFS 0         TEST
      JMP HLT27        FLAG 
      JMP *+3              SET
HLT27 HLT 27B       ERROR! FLAG DID NOT SET 
      JSB LOOP2     GO TO SERVICE LOOP
* 
      LDA CNT       RESTORE 
      STA WTM        TIMING 
      LDA .5CNT        MULTIPLIERS
      STA .5WTM 
* 
*     READ STATUS BEFORE READ DATA, SHOULD FIND THAT
*     RECEIVER IS DISABLED
* 
LIAC4 LIA 0,C       READ STATUS 
      SLA           TEST
      JMP *+3         R. ENA. F/F 
HLT30 HLT 30B       ERROR! RECEIVER IS NOT DISABLED 
      JSB LOOP2     GO TO SERVICE LOOP
* 
*     TRANSMIT ANOTHER WORD WOULD CAUSE M.W. F/F TO BE SET
* 
OTA3  OTA 0         TRANSMIT ANOTHER WORD 
      LDB CNT1      FETCH COUNTS FOR DELAY
      INB           WAIT
      SZB             ABOUT 
      JMP *-2            1 MS 
LIAC5 LIA 0,C       READ STATUS WORD AGAIN
      SLA           CHECK 
      JMP *+3          R.ENA. F/F 
HLT31 HLT 31B       ERROR! RECEIVER IS NOT DISABLED 
      JSB LOOP3     GO TO SERVICE LOOP
      RAR 
      SLA           CHECK M.W. F/F
      JMP *+3       OK! 
HLT32 HLT 32B       ERROR! M.W. F/F IS NOT SET
      JSB LOOP3     GO TO SERVICE LOOP
LIAC6 LIA 0,C       READ STATUS AGAIN 
* 
*     SHOULD CLEAR M.W. F/F,R.D. F/F REMAIN SET AND FLAG SET
* 
      SLA           CHECK 
      JMP *+3          R. ENA. F/F
HLT33 HLT 33B       ERROR! RECEIVER IS NOT DISABLED 
      JSB LOOP2     GO TO SERVICE LOOP
      RAR 
      SLA           CHECK M.W. F/F AGAIN
      JMP HLT34 
      JMP *+3       OK! 
HLT34 HLT 34B       ERROR! M.W. F/F IS NOT CLEARED
      JSB LOOP3     GO TO SERVICE LOOP
SFS6  SFS 0         TEST FLAG 
      JMP HLT35 
      JMP *+3       OK! 
HLT35 HLT 35B       ERROR! FLAG DID NOT STAY SET
      JSB LOOP2     GO TO SERVICE LOOP
* 
*     READ DATA WORD SHOULD CLEAR FLAG , THEN READ STATUS 
*     SHOULD CLEAR ALL FOUR STATUS BITS 
* 
LIA4  LIA 0         READ DATA WORD
SFC5  SFC 0         TEST FLAG CLEAR 
      JMP HLT36 
      JMP *+3       OK! 
HLT36 HLT 36B       ERROR! FLAG DID NOT CLEAR 
      JSB LOOP2     GO TO SERVICE LOOP
LIAC7 LIA 0,C       READ STATUS WORD
      SSA           CHECK PARITY F/F
      JMP HLT37 
      JMP *+3       OK! 
HLT37 HLT 37B       ERROR! PARITY F/F IS SET
      JSB LOOP2     GO TO SERVICE LOOP
      SLA           CHECK R. ENA. F/F 
      JMP HLT40 
      JMP *+3       OK! 
HLT40 HLT 40B       ERROR! RECEIVER IS NOT ENABLED
      JSB LOOP2     GO TO SERVICE LOOP
      RAR,RAR 
      SSA 
      JMP HLT41 
      JMP *+3       OK! 
HLT41 HLT 41B       ERROR! M.W. F/F IS NOT CLEARED
      JSB LOOP3     GO TO SERVICE LOOP
      SLA           CHECK I.P. F/F
      JMP HLT42 
      JMP *+3 
HLT42 HLT 42B       ERROR! I.P. F/F IS SET
      JSB LOOP2 
* 
*     THE FOLLOWING SUBROUTINE IS DESIGNED TO TEST
*     BLOCK TRANSMITTING AND RECEIVING WITH 1'S AND 
*     0'S PROPAGATING THROUGH THE TRANSMISSION WORDS
* 
      LDB CNT4
      STB CNT5      SET COUNTER 
CLC3  CLC 0         SET CARD IN TRANSMIT MODE 
      LDA ADATA 
      STA IDATA     SET START ADDRESS OF DATA BLOCK 
PLOOP NOP 
      LDA IDATA,I   LOAD DATA 
OTA4  OTA 0         TRANSMIT DATA 
      LDB CNT1
      INB           WAIT
      SZB             ABOUT 
      JMP *-2           1 MS
LIA5  LIA 0         READ DATA WORD
      STA TEMP0 
LIBC1 LIB 0,C       READ STATUS WORD
      SSB           CHECK PARITY BIT
      JMP HLT43 
      JMP *+3       OK! 
HLT43 HLT 43B       ERROR! PARITY F/F 
      JSB LOOP2     GO TO SERVICE LOOP
      LDB A2570     READ 2570 INDICATOR 
      SLB 
      JMP P1        YES, CARD IS WIRED FOR 2570 
      CMA,INA 
      ADA IDATA,I   ADD ORIGINAL DATA TO THE COMPLE-
*                                     MENT OF THE RECEIVED DATA 
      JMP P2
P1    NOP 
      LDA IDATA,I   LOAD ORIGINAL DATA
      AND M3777     MASK OFF THE UNWANTED BITS
      ALF           SHIFT 
      RAL              5 BITS LEFT
      STA TEMP1     SAVE
      LDA TEMP0     LOAD THE RECEIVED DATA
      CMA,INA       CHANGE TO NEGATIVE NUMBER 
      ADA TEMP1     ADD TO THE TRANSMITTED DATA 
P2    SZA           TEST RESULT 
      JMP *+2 
      JMP *+3 
HLT44 HLT 44B       ERROR! SUM IS NOT ZERO
      JSB LOOP2 
      LDA IDATA     LOAD THE ADDRESS OF DATA
      INA           INCREMENT ONE 
      STA IDATA     RESTORE THE CURRENT ADDRESS 
      ISZ CNT5      INCREMENT ADDRESS COUNTER, TEST 
      JMP PLOOP     GO BACK TO TRANSMIT NEXT WORD 
      LDA ADMA      FETCH DMA INDICATOR 
      SLA           CHECK TO SEE IF DMAT IS NEEDED
      JSB DMAT      GO ON TO TEST DMA IN AND OUT
      HLT 77B       TEST COMPLETION 
      JSB PARIT     CHECK PARITY LOGIC
      JMP ITEST+1 
      HED 12665 DIAGNOSTIC PROGRAM -- ROUTINES AND SERVICE LOOPS
*     PREPARE WORD TIME MULTIPLIER
* 
WDTMM NOP 
      LDB CTYPE 
      CPB A3
      JMP P1415 
      CPB M1
      JMP P0016 
      CPB A2
      JMP P0016 
      CPB A4
      JMP PMX 
      CPB A5
      JMP PXE 
      JMP HLT1      UNRECOGNIZABLE COMPUTER TYPE
P0016 LDA A2570     CHECK 2570 INDICATOR
      LDB A4        FETCH A4
      SLA 
      LDB A3        FETCH A3
      JMP P3
P1415 LDA A2570     FETCH 2570 INDICATOR
      LDB A3        FETCH A3
      SLA 
      LDB A2        FETCH A2
      JMP P3
PXE   LDA A2570     FETCH 2570 INDICATOR
      LDB A9
      SLA 
      LDB A7
      LDA DM4 
      STA CNT2
      LDA DM5 
      STA CNT3
      LDA DM300 
      STA CNT1
      JMP P4
PMX   LDA A2570     FETCH 2570 INDICATOR
      LDB A5        NO, FETCH A5
      SLA 
      LDB A4        FETCH A4
P3    LDA DM2 
      STA CNT2
      LDA DM3 
      STA CNT3
      LDA DM160 
      STA CNT1
P4    STB MPLR      SET BASIC MULTIPLIER
      LDA BLNG      LOAD BIT LENGTH INFORMATION 
      ADA M6
      SSA,RSS       CHECK FOR ILLEGAL BIT LENGTH
      JMP HLT3      YES 
      LDA BLNG      NO, LOAD BIT LENGTH INFORMATION 
      CMA,RSS 
      BLS           CHECK BITS AND DOUBLE COUNTER 
      INA,SZA 
      JMP *-2 
P7    CMB,INB       CHANGE TO NEGATIVE NUMBER 
      STB CNT       FINAL WORD TIME MULTIPLIER
      STB WTM 
      BRS 
      STB .5CNT     HALF WORD TIME MULTIPLIER 
      STB .5WTM 
      JMP *+3 
HLT3  HLT 3 
      JMP START     RECONFIGURE 
      JMP WDTMM,I   RETURN TO MAIN PROGRAM
* 
*     DMA TEST ROUTINE
* 
DMAT  NOP           DMA OUTPUT
      LDA ADDR      PREPARE 
      OTA 6 
      CLC 2            DMA
      LDA CW2 
      OTA 2              TO 
      STC 2 
      LDA CW3             OUTPUT A WORD 
      OTA 2 
CLCC4 CLC 0,C       SET CARD IN RECEIVING MODE
LIA6  LIA 0         CLEAR THE FLAG OF 12665 
      STC 6B,C      ACTIVATE DMA
OTA5  OTA 0         SET THE FLAG, CARD IS ACTIVATED 
      NOP           WAIT
      NOP              FOR FLAG TO BE CLEARED 
SFS7  SFS 0         TEST FLAG 
      JMP *+3 
HLT45 HLT 45B       ERROR! FLAG SHOULD BE CLEARED 
      JSB LOOP5     GO TO DMA OUTPUT SERVICE LOOP 
      LDB CNT1
      BLS 
      INB           WAIT
      SZB             ABOUT 
      JMP *-2            2 MS 
      CLC 6,C 
SFC6  SFC 0         TEST FLAG 
      JMP *+3 
HLT46 HLT 46B       ERROR! FLAG IS NOT SET
      JSB LOOP5     GO TO SERVICE LOOP
LIAC8 LIA 0,C       READ STATUS 
      SLA           TEST R. ENA. F/F
      JMP *+3 
HLT47 HLT 47B       ERROR! R. ENA.F/F IS NOT SET
      JSB LOOP5 
      AND M1006 
      SZA           TEST FOR ZERO 
      JMP *+2 
      JMP *+3 
HLT50 HLT 50B       ERROR!
      JSB LOOP5 
LIA7  LIA 0         READ DATA 
      STA RWDA      SAVE
      CMA,INA       CONVERT TO NEGATIVE NUMBER
      ADA WDA       ADD TO THE WORD TRANSMITTED BY DMA
      SZA           CHECK 
      JMP *+2       NO
      JMP *+3       OK
HLT51 HLT 51B       ERROR! WORD RECEIVED IS ERRONEOUS 
      JSB LOOP5     GO TO DMA OUTPUT SERVICE LOOP 
* 
*      END OF TAPE 29005-80001
*      CONTINUATION OF PROGRAM ON TAPE 29005-80002
* 
                                    