      SKP 
      ORG 1775B 
CFCMP CLA           CLEAR S-REG.
      OTA SW
H074  HLT 74B       CONFIGURATION COMPLETE
      CLC INTP,C    TURN I/O SYSTEM OFF 
      CPB FPMC      DID HE SET FOR FRONT PANNEL?
      JMP WCS21 
      LDA MEMO      CHECK IF ONLY 4K OF MEMORY
      AND B70K
      SZA           ??
      JMP EXCS      GREATER SO DO DIAGNOSTIC
      LDB FPMC      GET MACROINSTRUCTION
      CLA           DO MODULE 0 
      LDY ALPT0     GET TEST PATTERN
      LDX ALPT1     AND BACKGROUND
H000  HLT 0B        WAIT FOR OPERATOR 
WCS21 STF WCS       TURN ON WCS 
      JMP 1         EXECUTE FRONT PANNEL ROUTINE
EXCS  CLA           CLEAR PASS
      STA EOLC        COUNT 
      LDA STDA      SET STANDARD RUN
      STA SINA
      LDB SW10      CHECK TO SUPPRESS HEADER MESSAGE
      JSB SWRT
      JMP *+4       YES 
      LDA HM00C     NO OUTPUT HEADER MESSAGE
      LDB HM00P 
      JSB CNSLO,I 
      LDB SW9       CHECK FOR USER SELECTION REQ
      JSB SWRT
      JMP USR       IT'S USERS CHOICE 
NUSR  LDA STDA      GET STANDARD TEST RUN 
      CLB           AND MEMORY BLOCK
      JMP EXC 
* 
USR   JSB SWDB      DEBOUNCE S-REG. 
      LIA SW        GET S-REGISTER
      AND SWM9      MASK OUT BIT 9
      OTA SW        UPDATE S-REGISTER 
      LDA SINA      RETRIEVE PREVIOUS RUN 
      LDB USADD     AND USER MEMORY BLOCK 
H075  HLT 75B       WAIT FOR USER INPUT 
      SKP 
EXC   STA UINA      SAVE
      STB USADD       USER
      STA SINA          INPUT 
      LDA USADD     CHECK UPER BOUND IS GREATER 
      AND B377
      STA B 
      LDA USADD 
      ALF,ALF 
      AND B377
      CMB,INB 
      SZA,RSS 
      JMP *+4 
      ADA B 
      SSA           IS IT?
      JMP USR       NO ASK AGAIN
      CCA           SET TEST NUMBER 
      STA TSTN      =-1 
      CLA 
      STA TSTA      CLEAR TEST RUN FLAG 
EXCL  LDA UINA      RESTORE A REG.
      RAR           ROTATE FIRST TEST BIT 
      STA UINA      SAVE POSITIONS
      ISZ TSTN      MOVE TEST UP ONE
      NOP 
EXCL1 LDA TSTN
      ADA TSTP      GET IT'S
      LDA A,I         ADDRESS 
      CPA BM1       IS IT END OF LIST 
      JMP EOL       YES 
      LDB UINA
      SSB,RSS       SHOULD IT BE RUN? 
      JMP EXCL      NO
      STA TSTA      YES - SAVE TEST ADDRESS 
      CLA           CLEAR PARITY ERROR
      STA PERRA 
      STA G.R.F     CLEAR GAL READ FLAG 
      STA SFTER     CLEAR SOFT ERROR FLAG 
      STF 5B        TURN ON PARITY ERROR LOGIC
      JSB TSTA,I    GO DO TEST
      SKP 
      LDA LWAA      MOVE CONFIG BACK
      AND B7777 
      LDB LWAA      TO LAST MEMORY LOCATION 
      MVW MCCT      DO IT 
      LDA TSTN      DISPLAY TEST NUMBER IF HALTED 
      LDB SW15      CHECK FOR HALT AT END OF TEST 
      JSB SWRT
      RSS 
      JMP *+3 
      JSB SWDB      DEBOUNCE S-REG. 
H076  HLT 76B       YES WAIT FOR OPERATOR 
      LDB SW9       CHECK FOR ABORT 
      JSB SWRT
      JMP USR       YES 
      LDB SW13      CHECK FOR LOOP ON ROUTINE 
      JSB SWRT
      JMP EXCL1     YES - LOOP
      JMP EXCL      CONTINUE
EOL   LDA TSTA      CHECK IF ANY TESTS WERE RUN 
      SZA,RSS       ? 
      JMP NUSR      NO  SO PICK UP STANDARD RUN 
      ISZ EOLC      UP DATE PASS COUNT
      CLE 
      LDA EOLC      CONVERT PASS COUNT FOR DISPLAY
      LDB HM77X 
      JSB O2AS,I
      LDB SW10      CHECK TO SKIP OUTPUT OF PASS COUNT
      JSB SWRT
      JMP *+4       YES 
      LDA D21 
      LDB HM77P 
      JSB CNSLO,I 
      LDB SW12      CHECK FOR LOOP ON DIAG. 
      JSB SWRT
      JMP H077+1    YES 
      LDA EOLC
      JSB SWDB      DEBOUNCE S-REG. 
H077  HLT 77B       NO WAIT AND DISPLAY PASS COUNT
      LDA SINA      RESTORE ORIGINAL
      LDB USADD       PROGRAM 
      JMP EXC       DO IT ALL AGAIN 
* 
HM77X DEF HM77+5
HM77P DEF HM77
HM77  ASC 12,H077 PASS XXXXXX 
* 
HM00C DEC 42
HM00P DEF HM00
HM00  ASC 21,MICROCODED SEMICONDUCTOR MEMORY DIAGNOSTIC 
      SKP 
*     MEMORY ADDRESS TEST (SOFTWARE)
* 
TST00 EQU * 
ADDPT NOP 
      CLA           FIRST TIME THROUGH
      JSB TBLK      GET TEST AREA 
      JMP ADDPT,I   DONE ALL OF MEMORY EXIT 
      LDA LOADD     GET STARTING ADDRESS
      CAX           PUT IT IN X-REG.
      AND B7777     USE ONLY 4K MODULE ADDRESS
      LDB A 
ADD00 SBX 0         PUT ADDRESS IN ADDRESS LOCATION 
      CXA 
      CPA HIADD     IS THIS THE LAST ADDRESS? 
      JMP *+4       YES - GO VERIFY 
      INB           MOVE TO NEXT LOCATION 
      ISX 
      JMP ADD00     AND DO IT 
      LDA LOADD     GET LOWER LIMIT 
      CAX           PUT IT IN X-REG.
      AND B7777     CHECK ONLY 4K MODULE ADDRESS
      LDB A 
ADD01 LAX 0         GET CONTENTS
      STB BG        SAVE EXPECTED 
      CPA B         DID ADDRESS STORE?
      JMP ADD02     YES 
      JSB HLTS      REPORT ERROR
      DEF EM10
E010  HLT 10B 
ADD02 LIA SW        CHECK BIT 9 
      ALF,ALF 
      RAR,SLA 
      JMP .USR,I    ABORT TEST
      CXA 
      CPA HIADD     END OF CHECK? 
      JMP *+4       YES 
      INB           NO - MOVE TO NEXT LOCATION
      ISX 
      JMP ADD01 
      SKP 
*     MEMORY PATTERN TEST  (SOFTWARE) 
* 
      LDA LOADD     GET STARTING ADDRESS
      CAX           PUT IT IN X-REG.
      LDB ALPT0     GET 052525
      STB TMP       SAVE THE PATTERN
PAT00 SBX 0         PUT IT IN LOCATION
      CMB 
      CXA           PUT ADDRESS IN A REG
      CPA HIADD     DONE 4K BLOCK?
      JMP *+3       YES - VERIFY IT 
      ISX 
      JMP PAT00     NO DO NEXT LOCATION 
      LDA LOADD     RESET TO STARTING OF BLOCK
      CAX           PUT IT IN X-REG.
      LDB TMP       GET ORIGINAL PATTERN
PAT01 LAX 0         GET CONTENTS
      STB BG        SAVE EXPECTED 
      CPA B         IS THIS PATTERN OK? 
      JMP PAT02     YES 
      JSB HLTS      NOW REPORT ERROR
      DEF EM10
EO10  HLT 10B 
PAT02 LIA SW        CHECK BIT 9 
      ALF,ALF 
      RAR,SLA 
      JMP .USR,I    ABORT TEST
      CMB           REVERSE PATTERN 
      CXA           PUT ADDRESS IN A
      CPA HIADD     DONE ALL OF 4K BLOCK? 
      JMP *+3 
      ISX           NO MOVE TO NEXT LOCATION
      JMP PAT01       AND DO IT 
      LDB TMP       YES - GET ORIGINAL PATTERN
      CPB ALPT0     DONE SECOND PATTERN 
      JMP *+3       YES 
      CCA           CALL FOR NEXT BLOCK 
      JMP ADDPT+2 
      CMB           REVERSE PATTERN 
      LDA LOADD     RESET LOW ADDRESS 
      CAX           PUT IT IN X-REG.
      JMP PAT00-1   DO THE OPPSITE PATTERN
* 
* 
EM10  ASC 10,E010 ADDR.PAT ERROR
      OCT -1
      SKP 
*     GALLOPING READ RECOVERY 
* 
TST01 EQU * 
G.R01 NOP 
      LDA ALPT1 
      LDB ALPT0     GET 052525
      JSB G.R       EXECUTE GAL.READ
      JMP G.R01,I   RETURN
* 
TST02 EQU * 
G.R02 NOP 
      LDA ALPT0 
      LDB ALPT1     GET 125252
      JSB G.R       EXECUTE GAL.READ
      JMP G.R02,I   RETURN
* 
TST03 EQU * 
G.R03 NOP 
      LDA B3
      LDB BM2       GET 177776 FOR PARITY CHIP
      JSB G.R       EXECUTE GAL.READ
      JMP G.R03,I   RETURN
* 
TST04 EQU * 
G.R04 NOP 
      LDA BM2 
      LDB B3        GET 000003 FOR PARITY CHIP
      JSB G.R       EXECUTE GAL.READ
      JMP G.R04,I   RETURN
      SKP 
G.R   NOP 
      STA TP        SAVE TEST PATTERN 
      STB BG          AND BACKGROUND
      CLA           FIRST TIME THROUGH
      JSB TBLK      GET TEST AREA 
      JMP G.R,I     DONE ALL OF MEMORY
      JSB TSTR      GO TO MACRO EXECUTION ROUTINE 
      OCT 105622    EXECUTE WRT.READ
      DEF EM11
E011  HLT 11B       WRITE.READ ERROR
      JSB TSTR      GO TO MACRO EXECUTION ROUTINE 
      OCT 105623    EXECUTE READ
      DEF EM12
E012  HLT 12B       ERROR HALT CODE 
      LDA D32       SET GAL.READ FLAG FOR ERROR MESSAGE 
      STA G.R.F 
      JSB TSTR      GO TO MACRO ECECUTION ROUTINE 
      OCT 105624    EXECUTE GAL.READ
      DEF EM13
E013  HLT 13B       GAL.READ ERROR HALT 
      CLA           CLEAR GAL.READ FLAG 
      STA G.R.F 
      JSB TSTR      GO TO MACRO EXECUTION ROUTINE 
      OCT 105622    EXECUTE WRT.READ TO LOAD MEMORY 
      DEF EM14
E014  HLT 14B       WRITE.READ ERROR
      JSB TSTR      GO TO MACRO EXECUTION ROUTINE 
      OCT 105625    EXECUTE REFRESH 
      DEF *-* 
E015  HLT 15B       ERROR HALT CODE SHOULD NEVER OCCUR
      JSB TSTR      GO TO MACRO ECECUTION ROUTINE 
      OCT 105623    EXECUTE READ TO CHECK MEMORY
      DEF EM16
E016  HLT 16B       REFRESH ERROR HALT
      CCA 
      JMP G.R+4 
* 
* 
EM11  ASC 10,E011 WRT.READ ERROR
      OCT -1
EM12  ASC 10,E012 READ ERROR
      OCT -1
EM13  ASC 10,E013 GAL.READ ERROR
      OCT -1
EM14  ASC 10,E014 WRT.READ ERROR
      OCT -1
EM16  ASC 10,E016 READ ERROR
      OCT -1
      SKP 
*     MODULE 0 TEST (FIRST 4K)
* 
TST05 EQU * 
.4K   NOP 
      LDA USADD     CHECK IF IT'S USER SELECTION
      SZA 
      JMP .4K,I     YES - EXIT THIS TEST
      LDA B2        MOVE PROGRAM TO SECOND 4K 
      LDB B10K
      ADB B2
      MVW B10K
      LDA B2        CHECK MOVE
      LDB B10K
      ADB B2
      CMW B10K
      LDA .4KPE 
      STA 3B
      LIA SW        UPDATE S-REG. 
      AND SWMM
      JMP *+1,I 
      DEF *+1+10000B GO TO SECOND 4K MODULE 
      SKP 
*     ADDRESS TEST
* 
      OTA SW
      LDA .4KJX     SET RESTART AT 10000
      LDB .10K      PUT AT 10000
      STA B,I 
      INB 
      LDA .4KJD     SET LINK
      STA B,I 
      LDA .6        GET STARTING ADDRESS
      CAX           PUT IT IN X-REG.
      LDB .6
AD4K0 SBX 0         PUT ADDRESS IN ADDRESS LOCATION 
      CPB .7777     IS THIS THE LAST ADDRESS? 
      JMP *+4       YES - GO VERIFY 
      INB           MOVE TO NEXT LOCATION 
      ISX 
      JMP AD4K0     AND DO IT 
      LDA .6        GET LOWER LIMIT 
      CAX           PUT IT IN X-REG.
      LDB .6
AD4K1 LAX 0         GET CONTENTS
      CPA B         DID ADDRESS STORE?
      JMP *+2       YES 
E020  HLT 20B       NO TELL OPERATOR
      LIA SW        CHECK BIT 9 
      ALF,ALF 
      RAL,SLA 
      JMP .4KEX     ABORT TEST
      CPB .7777     END OF CHECK? 
      JMP *+4       YES 
      INB           NO - MOVE TO NEXT LOCATION
      ISX 
      JMP AD4K1 
      SKP 
*     PATTERN TEST
* 
* _ 
      LDA .6        GET STARTING ADDRESS
      CAX           PUT IT IN X-REG.
      LDB .ALP0     GET 052525
      STB .SAVA     SAVE THE PATTERN
PT4K0 SBX 0         PUT IT IN LOCATION
      CMB 
      CXA           PUT ADDRESS IN A REG
      CPA .7777     DONE 4K BLOCK?
      JMP *+3       YES - VERIFY IT 
      ISX 
      JMP PT4K0     NO DO NEXT LOCATION 
      LDA .6        RESET TO STARTING OF BLOCK
      CAX           PUT IT IN X-REG.
      LDB .SAVA     GET ORIGINAL PATTERN
PT4K1 LAX 0         GET CONTENTS
      CPA B         IS THIS PATTERN OK? 
      JMP *+2       YES 
EO20  HLT 20B       NO TELL OPERATOR
      LIA SW        CHECK BIT 9 
      ALF,ALF 
      RAL,SLA 
      JMP .4KEX     ABORT TEST
      CMB           REVERSE PATTERN 
      CXA           PUT ADDRESS IN A
      CPA .7777     DONE ALL OF 4K BLOCK? 
      JMP *+3 
      ISX           NO MOVE TO NEXT LOCATION
      JMP PT4K1       AND DO IT 
      LDB .SAVA     YES - GET ORIGINAL PATTERN
      CPB .ALP1     DONE SECOND PATTERN 
      JMP *+5       YES 
      CMB           REVERSE PATTERN 
      LDA .6        RESET LOW ADDRESS 
      CAX           PUT IT IN X-REG.
      JMP PT4K0-1   DO THE OPPSITE PATTERN
      SKP 
*     MICROCODED GALLOPING READ RECOVERY AND REFRESH
* 
      LDA .ALP1 
      LDB .ALP0 
      JSB .4KR      DO 125252 
      LDA .ALP0 
      LDB .ALP1 
      JSB .4KR      DO 052525 
      LDA .3
      LDB .M2 
      JSB .4KR      DO 000003 
      LDA .M2 
      LDB .3
      JSB .4KR      DO 177775 
* 
.4KEX LDA .10K      MOVE PROGRAM BACK 
      ADA .2
      LDB .2
      MVW .10K+10000B 
      JMP .4K,I     RETURN TO EXEC
* 
.4KR  NOP 
      STA .TP       SAVE TEST PATTERN 
      STB .BG        AND BACKGROUND 
      JSB T4KR      GO TO MACRO EXECUTION ROUTINE 
      OCT 105622    EXECUTE WRT.READ
E021  HLT 21B       WRITE.READ ERROR
      JSB T4KR      GO TO MACRO EXECUTION ROUTINE 
      OCT 105623    EXECUTE READ
E022  HLT 22B       ERROR HALT CODE 
      JSB T4KR      GO TO MACRO ECECUTION ROUTINE 
      OCT 105624    EXECUTE GAL.READ
E023  HLT 23B       GAL.READ ERROR HALT 
      JSB T4KR      GO TO MACRO EXECUTION ROUTINE 
      OCT 105622    EXECUTE WRT.READ TO LOAD MEMORY 
E024  HLT 24B       WRITE.READ ERROR
      JSB T4KR      GO TO MACRO EXECUTION ROUTINE 
      OCT 105625    EXECUTE REFRESH 
E025  HLT 25B       ERROR HALT CODE SHOULD NEVER OCCUR
      JSB T4KR      GO TO MACRO ECECUTION ROUTINE 
      OCT 105623    EXECUTE READ TO CHECK MEMORY
E026  HLT 26B       REFRESH ERROR HALT
      JMP .4KR,I    RETURN
* 
      SKP 
T4KR  NOP 
      LDA T4KR,I    GET MACRO INSTRUCTION TO BE EXECUTED
      STA MAC4K 
      ISZ T4KR
      LDA T4KR,I    GET HALT CODE 
      STA T4KEX 
      ISZ T4KR
      LDA .6        GET STARING ADDRESS 
      CAX           PUT IT IN X 
      LDA .7777       AND ENDING ADDRESS
      CAY           PUT IT IN Y 
      LDA .TP       TEST PATTERN IF APP 
      LDB .BG        AND BACKGROUND 
W.SSF STF WCS       TURN ON WCS 
MAC4K NOP 
W.SCF CLF WCS       TURN OFF WCS
      STA .SAVA     SAVE ACTUAL DATA
      CXA           PUT X REG IN TO A REG 
      SSA           IS THIS AN ERROR? 
      JMP T4KER     YES 
      CYA           PUT Y REG IN A REG
      SSA,RSS       IS THIS OPERATOR INTERRUPT? 
      JMP T4KR,I    NO THEN COMPLETE
T4KRN LIA SW
      ALF,ALF       CHECK BIT 9 FOR ABORT 
      RAR,SLA       ? 
      JMP .4KEX     YES EXIT TEST 
      CXA           CLEAR BIT 15 IN X REG 
      ELA,CLE,ERA 
      CAX 
      STA .SAVA 
      CYA           NOW DO THE Y REG
      ELA,CLE,ERA 
      CAY 
      CPA .7777     LAST ADDRESS? 
      XOR .SAVA 
      SZA,RSS 
      JMP T4KR,I    YES EXIT
      LDA MAC4K     CHECH IF GAL READ REENTER 
      CPA M4KGL     ??
      LDA M4KGR     YES GET DIFFERENT MACRO 
      STA MAC4K 
      CPA M4KGR     IS THIS A RETURN TO GAL.READ? 
      RSS           YES DONT UPDATE X REG 
      ISX           UPDATE X-REG. 
      JMP MAC4K-1   CONTINUE EXECUTION
* 
M4KGL OCT 105624
M4KGR OCT 105627
* 
T4KER LDA .SAVA     RESTORE A REGISTER
T4KEX NOP           SET TO ERROR HALT 
      JMP T4KRN     CONTINUE
      SKP 
.2    OCT 2 
.3    OCT 3 
.6    OCT 6 
.7777 OCT 7777
.M2   OCT -2
.10K  OCT 10000 
.4KPE OCT 102064
.ALP0 OCT 125252
.ALP1 OCT 052525
.SAVA NOP 
.TP   NOP 
.BG   NOP 
.4KJX OCT 126001
.4KJD DEF .4KEX+10000B
                                                                                                                                                                                                                                                