      SKP 
RDYXF NOP 
      CLA           CLEAR 
      STA NULL       TEST 
      STA NULL+1      ADDRESSES 
      LDA ANULL     GET ADDR POINTER. 
      STA PADDR     SAVE IT 
      LDB M2        SET LOOP
      STB CNTR       TEST COUNTER.
      IOR BIT15     MAR CONTROL WORD TO INPUT.
      JMP RDYXF,I   RETURN. 
      SPC 1 
RDYD1 NOP 
      CCB           WORD COUNT=-1 
      LDA ANULL     XFER ADDR POINTER.
      JSB OUT1      INITIALIZE DMA1 OUT.
      JMP RDYD1,I 
      SPC 2 
RDYD2 NOP 
      CCB           WORD COUNT=-1 
      LDA ANULL     XFER ADDR POINTER.
      JSB OUT2      INITIALIZE DMA2 OUT.
      JMP RDYD2,I 
      SKP 
TCLC1 NOP 
      JSB CLCC      TURN OFF INTERFACE
      OTA 6         OUTPUT TO DMA1. 
      XOR BIT13     TRY TO CHANGE DMA1 CONTROL
      OTA 7          BY CHANGING DMA2.
      STC 6,C       TURN ON DMA1. 
      JSB STC       SET I-O CONTROL FF. 
      CLC 6         CLR DMA CTL TO AVOID DMA INT. 
      CLA           SET TO TIME OUT 
      INA,SZA,RSS 
      JMP *+3 
      SFS 6         WAIT FOR DMA
      JMP *-3 
      JSB STF       SET I-O FLAG FF.
      STF 0         NO I-O INT SHOULD OCCUR 
      NOP            SINCE DMA1 SHOULD CLC. 
      JMP TCLC1,I 
      SPC 2 
TCLC2 NOP 
      JSB CLCC      TURN OFF INTERFACE
      OTA 7         OUTPUT TO DMA2. 
      XOR BIT13     TRY TO CHANGE DMA2 CONTROL
      OTA 6          BY CHANGING DMA1.
      STC 7,C       TURN ON DMA2. 
      JSB STC       SET I-O CTL FF. 
      CLC 7         DISABLE DMA2 INTERRUPT. 
      CLA           SET TIME OUT
      INA,SZA,RSS 
      JMP *+3 
      SFS 7         WAIT FOR DMA2.
      JMP *-3 
      JSB STF       SET I-O FLAG FF.
      STF 0         NO I-O INT SHOULD OCCUR 
      NOP             SINCE DMA2 SHOULD CLC.
      JMP TCLC2,I 
      SKP 
*         MESSAGE OUTPUT WITHOUT HALT 
* 
MSGCO NOP 
      JSB MSGRT     OUTPUT MESSAGE
      OCT 2000      S-REG 10 CHECK
      JMP MSGCO,I   RETURN TO CALLER
* 
*         ERROR MESSAGE WITH HALT 
* 
ERMSG NOP 
      JSB MSGRT     OUTPUT MESSAGE
B4000 OCT 4000      S-REG 11 CHECK
      CLA 
      LDB BIT14     CHECK SWR BIT 14 TO 
      JSB SWRT       SUPPRESS HALTS.
      STA ERHLT     PUT HALT IN LINE
      LDA SAVA      RESTORE THE 
      LDB SAVB       A & B REGISTERS. 
ERHLT NOP           ERROR HALT. 
      CLB,INB       SWR BIT 0 
      JSB SWRT      CHECK SWR BIT 0 
      JMP *+3       SWR BIT 0 IS SET
      LDB SAVB      RESTORE B-REG 
      JMP ERMSG,I   SWR BIT 0 NOT SET RETURN TO CALLER
      LIA SR        READ SWR
      AND N76       MASK OFF BIT 0
      OTA SR        CLEAR SWR BIT 0 
      JMP TRETN     EXIT CURRENT TEST 
* 
*         OUTPUT MESSAGE
* 
MSGRT NOP 
      STA SAVA      SAVE A AND
      STB SAVB       B REGISTERS. 
      CCA           READY INT SYSTEM MARKER.
      SFS 0         INT SYSTEM ON?
      CLA            NO! CLEAR MARKER.
      STA INTON     SET INT SYSTEM MARKER.
      CLF 0         SHUT OFF INT SYSTEM.
      LDB MSGRT,I   GET SWITCH REGISTER BIT 
      LDA MSGRT     GET RETURN ADDRESS. 
      ADA M2        DECREMENT AND 
      STA MSGRT      RESTORE RETURN ADDRESS.
      JSB SWRT      CHECK TO SUPPRESS MESSAGES
      JMP CNVTH      YES? DON'T PRINT MESSAGE.
      LDA MSGRT,I     NO? GET ERROR 
      LDA A,I              MESSAGE
      LDA A,I               POINTER.
      ALF,CLE,ALF   CHECK IF
      AND B177       THIS IS AN 
      CPA B105        ERROR MESSAGE. IS IT? 
      JMP GETTN         YES! CHECK TO OUTPUT TEST #.
GETPT LDA MSGRT,I       NO! RETRIEVE FORMAT 
      LDB A,I                ADDRESS
      CLA,CLE                  AND
      JSB FMTR,I                 PRINT MESSAGE. 
CNVTH LDB ERMSG,I   CONVERT HALT CODE 
      CCA,CCE          TO 
      JSB AS2N,I        OCTAL.
      STA SAVEA     SAVE ERROR CODE.
      AND B77       MASK TO SC. 
      IOR HLT0      MERGE IN HALT 102000. 
      LDB SAVEA     GET ERROR CODE AGAIN. 
      BLF,BLF       POSITION UPPER ERROR CODE #.
      SSB           1060XX OR 1070XX HALT?
      IOR B4000      YES! MERGE IN BIT11. 
      RBL           POSITION LOWER DIGIT. 
      SSB           1030XX OR 1070XX HALT?
      IOR BIT9       YES! MERGE BIT 9.
      STA ERHLT     SAVE HALT.
      ISZ MSGRT,I   ADJUST
      ISZ MSGRT      RETURN ADDRESS 
      ISZ MSGRT       POINTERS. 
      ISZ MSGRT 
      LDA INTON     GET INT SYSTEM MARKER.
      SZA           WAS INT SYSTEM ON?
      STF 0          YES! TURN IT BACK ON.
      LDA SAVA      RESTORE A AND 
      LDB SAVB        B REGS
      JMP MSGRT,I   RETURN
GETTN LDA TSTN      GET TEST NUMBER 
      CPA TESTI     IS IT THE SAME ONE? 
      JMP GETPT       YES! SKIP OUTPUT
      STA TESTI       NO!  THEN UPDATE IT 
      CLB           CONVERT THE 
      AND B37         TEST NUMBER.
      ADA M10       IS TEST NUMBER
      SEZ            GREATER THAN 10? 
      LDB B400        YES! SET UP AN ASCII 1. 
      SEZ,RSS       TEST NUMBER>10?IS > 10
      ADA B12        NO! CONVERT TO POSITIVE. 
      IOR B         MERGE IN UPPER
      IOR ASC00      DIGIT THEN 
      STA TSTNX          PUT IT IN STRING 
      CLA           DO A CRLF 
      JSB SLOP,I     TO CONSOLE.
      CLA,CLE       INDICATE START OF FORMAT
      LDB TSTFN     GET TEST # MESG. POINTER. 
      JSB FMTR,I    PRINT TEST # MESSAGE. 
      JMP GETPT     RETURN
      SKP 
TSTFN DEF *+1 
      ASC  3,TEST 
TSTNX ASC  2,XX// 
PSCMS ASC  6,PASS XXXXXX/ 
      SPC 3 
RDYIO NOP 
      LDA PATT1     GET FIRST DATA PATTERN. 
      JSB OTA       OUTPUT TO TEST INTERFACE. 
      CMA           COMPLEMENT PATTERN. 
      JSB STCC      GATE DATA TO INPUT BUFR.
      JSB OTA       OUTPUT 2ND DATA PATTERN.
      JMP RDYIO,I   RETURN. 
      HED DIAGNOSTIC CONTROL
ENTRY CLC 0,C       TURN I/O SYSTEM OFF 
GETSR LIA SR        GET SR CONTENTS.
      AND B77       MASK TO SC. 
      CLE           READY TO CHECK
      ADA M10B        SELECT CODE.
      SEZ           SC>7? 
      JMP *+3        YES! GO AHEAD NORMALLY.
      HLT 73B        NO! REPORT ERROR.
      JMP GETSR     GO TRY AGAIN. 
      LIA SR        GET SR CONTENTS 
      AND B77        BACK AGAIN.
      STA USRSC     SAVE USER SC. 
      LDB FIRST     UPDATE
GETIO LDA B,I        ALL
      CPA M1          I-O 
      JMP CLRPC        INSTRUCTIONS 
      STA SAVA          TO
      LDA A,I            THE
      AND NB77            USER
      IOR USRSC            SELECT 
      STA SAVA,I             CODE.
      INB 
      JMP GETIO 
CLRPC LIA SR        GET SR CONTENTS 
      AND B7777     MASK OFF SC'S 
      STA USSC      STORE BOTH SC'S 
      AND B7700     MASK OFF SC-2 
      SZA,RSS       1 OR 2 SC'S ? 
      JMP CLRP      1, DO STANDARD TEST RUN 
      ALF,ALF       POSITION SC IN
      RAL,RAL         BITS 0-5
      CLE           READY TO CHECK
      ADA M10B        SELECT CODE 
      SEZ           SC>7? 
      JMP *+3        YES! GO AHEAD
      HLT 73B       NO! REPORT ERROR
      JMP GETSR     GO TRY AGAIN
      LDA USSC      TEST
      AND B77        BOTH 
      STA B            SC 
      LDA USSC          FOR 
      ALF,ALF            THE
      RAL,RAL             SAME
      AND B77              VALUE
      STA SAVA      SAVE SC IN BITS 6-9 
      CPA B         BOTH THE SAME ? 
      JMP *+2       YES! SAME VALUE 
      JMP *+3       OK-DIFFERENT
      HLT 71B       REPORT ERROR
      JMP GETSR     GO TRY AGAIN
      LDA CH3I,I    CONFIGURE CLC INSTRUCTION 
      AND NB77      MASK OFF SC 
      IOR SAVA      MERGE IN NEW SC 
      STA CH3I,I    STORE INSTRUCTION 
      JSB REV       CONFIGURE STC INSTRUCTION 
      CLA           CLEAR SR
      OTA SR          FOR OPERATOR
      CCA           SET UP FLAG 
      STA XYZ         TO DO TST15 
      JMP HLT74     HLT FOR SR OPTIONS
CLRP  CLA           DO STANDARD TEST RUN
      STA XYZ       CLEAR TST15 FLAG
      LDA PATT1     GET A TEST PATTERN. 
      JSB OTA       OUTPUT IT TO THE TEST 
      JSB STCC        INTERFACE AND TURN IT ON. 
      JSB LIA       GET PATTERN BACK. 
      CPA PATT1     IS THIS A 16-BIT BOARD? 
      RSS            YES! GO TO HALT 74.
      CPA PATCK     8 BIT BOARD?
      JMP *+3        YES! GO HLT 74.
      HLT 72B        NO! TELL OPERATOR I-O FAILED.. 
      JMP GETSR     GO TRY ANOTHER SELECT CODE? 
      STA MARKB     SAVE BOARD TYPE.
HLT74 HLT 74B       CONFIGURATION COMPLETE. 
      SKP 
MAIND CLC 0,C       CLEAR I-O.
      JSB TRAPC     INITIALIZE TRAP CELLS.
      JSB MSGCO     PRINT THE 
      DEF INTRO       INTRODUCTORY MESSAGE. 
      CLA           CLEAR PASS
      STA EOTCT       COUNT.
NEWSR LDA XYZ       TEST
      SZA,RSS         FOR TST15 
      JMP NEWS      NO TST15 - DO STANDARD TEST RUN 
      LDA BIT15     GET BIT 15
      CLB             FOR TST15 
      STA SAVIA     SAVE TEST 
      STA SVINA       NUMBER
      JMP STLP1     SET UP TST15
NEWS  LDA STDA      GET THE STANDARD TEST SET.
      LDB BIT9      USER TEST 
      JSB SWRT       SELECTION? 
      RSS              YES! GO GET USER INPUT.
      JMP STLP      GO SAVE TEST SET. 
OPIN  LDA SVINA     RETRIEVE PREVIOUS 
      CLB            TEST SET.
      HLT 75B       WAIT FOR USER INPUT 
      AND STDA
STLP  CLB           GET STANDARD TEST SET.
      STA SAVIA     SAVE USER 
      STA SVINA         INPUT TEST SET. 
      LDB BIT9      CHECK IF SW9 IS DOWN
      JSB SWRT      IS IT?
      JMP OPIN       NO! GO HALT AGAIN. 
STLP1 CCA            YES! SET THE TEST
      STA TSTN              NUMBER TO -1. 
      STA TESTI     CLEAR PRESENT TEST. 
      CLA           CLEAR 
      STA TSTNN      TEST RUN FLAG
STLPL LDA SAVIA     RESTORE A REG.
      RAR           ROTATE TEST BITS. 
      STA SAVIA     SAVE TEST BIT 
      ISZ TSTN      MOVE TEST NUMBER UP ONE 
      NOP 
NEXTL LDA TSTN      GET TEST NUMBER.
      ADA TSTP      GET THE TEST SECTION
      LDA A,I        STARTING ADDRESS.
      CPA M1        IS THIS THE END OF TESTS? 
      JMP EOTL       YES! GO TO THE END OF TEST.
      LDB SAVIA      NO! GET TEST INDICATOR.
      SSB,RSS       SHOULD THIS TEST BE RUN?
      JMP STLPL      NO! GO TRY NEXT TEST.
      STA TSTNN      YES! SAVE STARTING ADDRESS.
      JSB CLCC      INSURE INTERFACE IS OFF 
      STF 6            AND DMA
      STF 7 
      CLC 0,C       TURN OF SYSTEM
      JSB TRAPC     SET TRAP CELLS TO A HALT
      JSB RDYD1     READY DMA1. 
      JSB RDYD1     READY DMA2. 
      JMP TSTNN,I   GO DO TEST
TRETN CLC 0,C       CLEAR I-O.
      LDA TSTN      GET THE TEST NUMBER.
      LDB BIT15     CHECK FOR HALT AT END OF TEST 
      JSB SWRT      HALT REQUESTED? 
      HLT 76B        YES! WAIT FOR OPERATOR.
      LDA XYZ       IS THIS TEST TST15 ?
      SZA 
      JMP *+4       YES 
      LDB BIT9      CHECK FOR USER SELECTION. 
      JSB SWRT      IS USER SELECTION REQUESTED?
      JMP OPIN       YES! GO HALT.
      LDB BIT13     CHECK FOR LOOP ON TEST SECTION. 
      JSB SWRT      LOOP REQUESTED? 
      JMP NEXTL      YES! GO DO TEST AGAIN. 
      JMP STLPL      NO! DO NEXT TEST.
      SKP 
EOTL  LDA TSTNN     WERE ANY TESTS
      SZA,RSS        RUN? 
      JMP NEWSR       NO! GET STANDARD TEST SET.
      LDA EOTCT     UPDATE
      INA            PASS 
      STA EOTCT       COUNT.
      CCE           READY FOR CONVERSION. 
      LDB PRNTP     GET PASS COUNT
      ADB B2          ADDRESS.
      JSB O2AS,I    CONVERT IT TO ASCII.
      JSB MSGCO     CALL PRINT ROUTINE
PRNTP DEF PSCMS     MESSAGE POINTER.
      LDB BIT12     CHECK FOR LOOP ON DIAG. 
      JSB SWRT      LOOP ON DIAGNOSTIC REQUESTED? 
      JMP *+3        YES! BYPASS HLT 77B. 
      LDA EOTCT      NO! GET PASS COUNT.
      HLT 77B             AND HALT. 
      CLB 
      LDA SVINA     CHECK 
      SSA,RSS        FOR
      JMP STLP        STANDARD
      STA SAVIA        RUN
      STA SVINA         OR
      JMP STLP1          TEST 15
      SPC 4 
      ORG 2000B 
      JMP MAIND     GO TO TEST CONTROL. 
      HED TST00 DMA FLAG TEST 
* TST00 -- TEST ABILITY TO SET AND CLEAR THE DMA FLAGS
* 
TST00 CLF 6         CLEAR DMA1 FLAG 
      SFS 6 
      JMP E000+2
E000  JSB ERMSG     DMA1--CLF DID NOT CLR FLG OR SFS
      DEF EE000             CAUSED SKIP WITH FLG CLR
      SFC 6 
      RSS 
      JMP E001+2
E001  JSB ERMSG     DMA1--SFC CAUSED NO 
      DEF EE001             SKIP WITH FLG CLR 
      STF 6         SET DMA1 FLAG 
      SFC 6 
      JMP E002+2
E002  JSB ERMSG     DMA1--STF DID NOT SET FLG OR SFC
      DEF EE002            CAUSED SKIP WITH FLG SET 
      SFS 6 
      RSS 
      JMP E003+2
E003  JSB ERMSG     DMA1--SFS CAUSED NO 
      DEF EE003              SKIP WITH FLG SET
      CLF 7         CLEAR DMA-2 FLAG
      SFS 7 
      JMP E004+2
E004  JSB ERMSG     DMA2--CLF DID NOT CLR FLG OR SFS
      DEF EE004             CAUSED SKIP WITH FLG CLR
      SFC 7 
      RSS 
      JMP E005+2
E005  JSB ERMSG     DMA2--SFC CAUSED NO 
      DEF EE005             SKIP WITH FLG CLR 
      STF 7         SET DMA2 FLAG 
      SFC 7 
      JMP E006+2
E006  JSB ERMSG     DMA2--STF DID NOT SET FLG OR SFC
      DEF EE006             CAUSED SKIP WITH FLG SET
      SFS 7 
      RSS 
      JMP TRETN 
E007  JSB ERMSG     DMA2--SFS CAUSED NO 
      DEF EE007              SKIP WITH FLG SET
      JMP TRETN 
      HED TST01 DMA INTERRUPT TEST
* TST01 -- INSURE DMA DOESN'T INTERRUPT WITH THE INTERRUPT SYSTEM OFF 
* 
TST01 JSB STUF6     PUT RETURN JMP IN THE 
      DEF E010       DMA1 TRAP CELL 
      STC 6         SET DMA1 TO INTERRUPT AS
      STF 6          IF INT SYS WERE ON.
      NOP           ALLOW TIME FOR INTERRUPT
      CLC 6,C       TURN DMA1 OFF 
      JMP E010+2    DMA1 SHOULD NOT INTERRUPT.
      JSB FIXMS     UPDATE
      ASC 1,10        ERROR 
      DEF EE010+1      MESSAGE. 
E010  JSB ERMSG     ILLEGAL DMA1 INT
      DEF EE010      WITH INT SYSTEM OFF. 
      JSB STUF7     PUT A RETURN JMP IN 
      DEF E011        THE DMA2 TRAP CELL. 
      STC 7         SET DMA2 TO INTERRUPT AS
      STF 7          IF INT SYS WERE ON.
      NOP           ALLOW TIME FOR INTERRUPT
      CLC 7,C       TURN DMA2 OFF 
      JMP E011+2    DMA2 SHOULDN'T INTERRUPT. 
      JSB FIXMS     UPDATE
      ASC 1,11        ERROR 
      DEF EE011+1       MESSAGE.
E011  JSB ERMSG     ILLEGAL DMA2 INTERRUPT
      DEF EE011      WITH INT SYSTEM OFF. 
      SKP 
*       -- TEST INTERRUPT CAPABILITY OF DMA 
* 
      JSB STUF6     SET UP RETURN JMP 
      DEF RTR02       IN DMA1 TRAP CELL.
      LDA JSBLK     UPDATE TRAP CELL TO 
      STA 6           A JSB.
      STC 6         DMA1 INTERRUPT
      STF 6          REQUEST. 
      STF 0         ENABLE INT SYSTEM.
      STC 1         NO INTERRUPTS HERE. 
      NOP           DMA1 SHOULD INTERRUPT HERE. 
      JSB FIXMS        NO? UPDATE 
      ASC 1,12               ERROR
      DEF EE012+1              MESSAGE. 
E012  JSB ERMSG     DMA1 DID NOT INTERRUPT
      DEF EE012 
* 
RET02 JSB STUF7     SET UP RETURN JMP 
      DEF RTX02      IN DMA2 TRAP CELL. 
      LDA JSBLK     UPDATE TRAP CELL
      STA 7          TO A JSB.
      STC 7         DMA2 INTERRUPT
      STF 7           REQUEST.
      STF 0         ENABLE INT SYSTEM.
      STC 1         NO INTERRUPTS HERE. 
      NOP           DMA2 SHOULD INTERRUPT HERE. 
      JSB FIXMS       NO? UPDATE
      ASC 1,15             ERROR
      DEF EE015+1            MESSAGE. 
E015  JSB ERMSG     DMA2 DID NOT INTERRUPT
      DEF EE015 
      JMP TRETN     EXIT TEST SECTION.
      SKP 
*     DMA INTERRUPT ROUTINES
* 
RTR02 NOP           DMA1 INTERRUPT SUBROUTINE 
      CLF 0         DISABLE INT SYSTEM. 
      JSB STUF6     SET UP DMA1 TRAP CELL 
      DEF E013       IN CASE IAK DIDN'T WORK. 
      STF 0         TEST INTERRUPT ACKNOWLEDGE. 
      NOP           DMA1 SHOULDN'T INTERRUPT. 
      CLC 6,C       TURN DMA1 OFF 
REX02 LDA RTR02     DID INTERRUPT OCCUR AT THE
      CPA ADDR1      CORRECT MEM LOCATION?
      JMP RET02         YES! GO CHECK DMA2. 
      JSB FIXMS         NO! UPDATE
      ASC 1,14                ERROR 
      DEF EE010+1              MESSAGE. 
      LDA RTR02     FORM ACTUAL INTERRUPT 
      ADA M1          LOCATION. 
      LDB ADDR1     FORM EXPECTED 
      ADB M1          INTERRUPT LOCATION. 
E014  JSB ERMSG     DMA1 RETURN ADDR IS INCORRECT 
      DEF EE010 
*          A=ACTUAL INTERRUPT LOCATION  B=EXPECTED
      JMP RET02     GO DO NEXT TEST.
RTX02 NOP           DMA2 INTERRUPT SUBROUTINE 
      CLF 0         DISABLE INT SYSTEM. 
      JSB STUF7     SET UP DMA2 TRAP CELL 
      DEF E016       IN CASE IAK DIDN'T WORK. 
      STF 0         TEST INTERRUPT ACKNOWLEDGE. 
      NOP           DMA2 SHOULDN'T INTERRUPT. 
      CLC 6,C       TURN DMA2 OFF 
RTE02 LDA RTX02     DID INTERRUPT OCCUR AT THE
      CPA ADDR2      CORRECT MEM LOCATION?
      JMP TRETN         YES! EXIT TEST SECTION. 
      JSB FIXMS         NO! UPDATE
      ASC 1,17               ERROR
      DEF EE011+1             MESSAGE.
      LDA RTX02     FORM ACTUAL 
      ADA M1         INTERRUPT LOCATION.
      LDB ADDR2     FORM EXPECTED 
      ADB M1          INTERRUPT LOCATION. 
E017  JSB ERMSG     DMA2 RETURN ADDR IS INCORRECT 
      DEF EE011 
*        A=ACTUAL INTERRUPT LOCATION   B=EXPECTED 
      JMP TRETN     EXIT TEST SECTION.
E013  JSB FIXMS     UPDATE
      ASC 1,13        ERROR 
      DEF EE010+1        MESSAGE. 
      JSB ERMSG     DMA1 IAK DID NOT
      DEF EE010       DISABLE DMA1 INTERRUPTS.
      JMP REX02     RETURN TO NEXT TEST.
E016  JSB FIXMS     UPDATE
      ASC 1,16        ERROR 
      DEF EE011+1       MESSAGE.
      JSB ERMSG     DMA2 IAK DID NOT
      DEF EE011      DISABLE DMA2 INTERRUPTS. 
      JMP RTE02     RETURN TO NEXT TEST.
      HED TST02 CONTROL RESET TEST
* TST02 -- TEST CONTROL RESET TO DMA
* 
TST02 JSB STUF6     SET UP DMA1 TRAP
      DEF E020       CELL IN CASE OF ERROR. 
      STC 6         ENABLE DMA1 
      STF 6          INTERRUPT. 
      CLC 0         SHOULD CLEAR DMA1 CONTROL.
      STF 0         ENABLE INT SYSTEM.
      NOP           ALLOW TIME FOR INTERRUPT
      JMP CRSD1     NO INTERRUPT HERE.
E020  JSB FIXMS     UPDATE
      ASC 1,20       ERROR
      DEF EE020+1     RETURN. 
      JSB ERMSG     CLC 0 DID NOT CLEAR 
      DEF EE020       DMA1 CONTROL. 
CRSD1 JSB STUF6     SET UP DMA1 TRAP CELL IN
      DEF E022       CASE OF AN ERROR.
      STC 6         ENABLE DMA1 INTERRUPT.
      CLC 6         CLEAR DMA1 CONTROL. 
      NOP           ALLOW TIME FOR INTERRUPT
      JMP E022+2    NO INTERRUPT HERE.
E022  JSB ERMSG     CLC 6 DID NOT CLEAR 
      DEF EE022       DMA2 CONTROL. 
      CLC 6,C       TURN DMA1 OFF 
      JSB STUF7     SET UP DMA2 TRAP CELL IN
      DEF E021       CASE OF ERROR. 
      STC 7         ENABLE A DMA2 
      STF 7           INTERRUPT.
      CLC 0         SHOULD CLEAR DMA2 CONTROL.
      STF 0         ENABLE INT SYSTEM.
      NOP           ALLOW TIME FOR INTERRUPT
      JMP CRSD2     NO INTERRUPT HERE.
E021  JSB FIXMS     UPDATE
      ASC 1,21       ERROR
      DEF EE021+1     MESSAGE.
      JSB ERMSG     CLC 0 DID NOT CLEAR 
      DEF EE021       DMA2 CONTROL. 
CRSD2 JSB STUF7     SET UP DMA2 TRAP CELL IN
      DEF E023       CASE OF AN ERROR.
      STC 7         ENABLE DMA2 INTERRUPT.
      CLC 7         CLEAR DMA2 CONTROL. 
      NOP           ALLOW TIME FOR INTERRUPT
      JMP E023+2    NO INTERRUPT HERE.
E023  JSB ERMSG     CLC 7 DID NOT CLEAR 
      DEF EE023       DMA2 CONTROL. 
      CLC 7,C       TURN OFF DMA2 
      CLF 0         TURN OFF INTERRUPTS 
      JMP TRETN     EXIT TEST SECTION.
      HED TST03 PRESET TEST 
* TST03 -- PRESET TEST
* 
TST03 LDB BT812     SUPPRESS
      JSB SWRT       PRESET TEST? 
      JMP TRETN       YES! EXIT TEST SECTION. 
      CLF 6         CLEAR DMA1 AND DMA2 
      CLF 7           FLAGS FOR PRESET TEST.
      JSB MSGCO     PRINT PRESET
      DEF PRSET       MESSAGE.
      JSB DEBON     DEBOUNCE SW.REG.
      OCT 107024    PRESS PRESET THEN PRESS RUN.
      SFC 6         PRESET SET DMA1 FLAG? 
      JMP E024+2     YES! CHECK DMA2. 
E024  JSB ERMSG      NO! REPORT ERROR.
      DEF EE024     PRESET DIDN'T SET DMA1 FLAG.
      SFC 7         PRESET SET DMA2 FLAG? 
      JMP TRETN       YES! EXIT TEST SECTION. 
E025  JSB ERMSG       NO! REPORT ERROR. 
      DEF EE025     PRESET DIDN'T SET DMA2 FLAG.
      JMP TRETN     EXIT TEST SECTION.
      HED TST04 PRIORITY TEST 
* TST04 -- PRIORITY TEST
* 
TST04 LDA CLF0      PUT A CLF0 IN 
      STA 6           THE DMA1 TRAP CELL. 
      JSB STUF7     SET UP AN ERROR RETURN
      DEF E026       JMP IN THE DMA2 TRAP CELL. 
      STF 6         ENABLE INTERRUPTS 
      STF 7          FOR
      STC 6            DMA1 AND 
      STC 7              DMA2.
      STF 0         INT SYSTEM ON.
      NOP           ALLOW TIME FOR INTERRUPT
      JMP NXPT1     DMA1 SHOULD INT HERE. 
E026  JSB FIXMS      NO? UPDATE 
      ASC 1,26            ERROR 
      DEF EE026+1          MESSAGE. 
      JSB ERMSG     DMA2 TOOK PRIORITY OVER DMA1
      DEF EE026 
NXPT1 LDA CLF0      PUT A CLF0 IN THE 
      STA 7           DMA2 TRAP CELL. 
      JSB STUFI     SET UP AN ERROR RETURN
      DEF E027       JMP IN THE I-O TRAP CELL.
      JSB STF       ENABLE AN I-O 
      JSB STC         INTERRUPT.
      CLF 6         ENABLE DMA2 INT.
      STF 0         INT SYSTEM ON.
      NOP           ALLOW TIME FOR INTERRUPT
      JMP NXPT2     DMA2 SHOULD INT HERE. 
E027  JSB FIXMS       NO? UPDATE
      ASC 1,27             ERROR
      DEF EE026+1           MESSAGE.
      JSB ERMSG     I/O SC TOOK PRIORITY OVER DMA2
      DEF EE026 
      SKP 
NXPT2 JSB TRAPC     INITIALIZE TRAP CELLS.
      CLF 7         ENABLE I-O PRIORITY.
      LDA CLF0      PUT A CLF0 IN THE 
      STA 6           DMA1 TRAP CELL. 
      JSB STUFI     SET UP AN ERROR RETURN
      DEF E030       IN THE I-O TRAP CELL.
      STF 6         ENABLE A DMA1 INTERRUPT.
      STF 0         INT SYSTEM ON.
      JMP NXPT3     DMA1 SHOULD INT HERE. 
E030  JSB FIXMS       NO? UPDATE
      ASC 1,30             ERROR
      DEF EE026+1           MESSAGE.
      JSB ERMSG     I/O SC TOOK PRIORITY OVER DMA1
      DEF EE026 
NXPT3 JSB STUFI     SET UP AN ERROR RETURN
      DEF E031       IN THE I-O TRAP CELL.
      JSB RDYD1     READY DMA1. 
      CLC 7,C       SHUT OFF CHANNEL TWO. 
      STF 0         ENABLE INT SYSTEM.
      STC 6,C       START TRANSFER. 
      JMP NXPT4     DMA CYCLE SHOULD HOLD OFF I-O.
E031  JSB FIXMS      NO? UPDATE 
      ASC 1,31            ERROR 
      DEF EE026+1          MESSAGE. 
      JSB ERMSG     DMA DID NOT INHIBIT I/O INT 
      DEF EE026 
NXPT4 JMP TRETN     EXIT TEST SECTION.
      HED TST05 - TEST WORD COUNT REGISTERS 
* TST05 --  TESTS ABILITY TO SET AND READ 
*             THE WORD COUNT REGISTERS
* 
TST05 CLA           START WITH WORD COUNT=0 
WC1   STC 2         READY WCR1. 
      STC 3         READY WCR2. 
      OTA 2         OUTPUT PATTERN TO WCR1
      OTA 3           AND WCR2. 
      STA DAOUT     SAVE PATTERN. 
      LIB 2         GET WCR1 CONTENTS.
      CPA B         WCR1 AS EXPECTED? 
      JMP E033+2     YES! DO NEXT PATTERN.
      DST SVRES      NO! SAVE RESULTS.
      JSB PDATA     READY ERROR MESSAGE.
      JSB FIXMS     UPDATE
      ASC 1,33        ERROR 
      DEF EE033+1       MESSAGE.
E033  JSB FIX33     REPORT BAD WCR1.
*                   A=EXPECTED WCR1 CONTENTS
*                   B=ACTUAL WCR1 CONTENTS
      LDA DAOUT     RESTORE PATTERN.
      LIB 3         GET WCR2 CONTENTS.
      CPA B         IS WCR2 AS EXPECTED?
      JMP E034+2     YES! DO NEXT PATTERN.
      DST SVRES      NO! SAVE RESULTS.
      JSB PDATA     READY ERROR MESSAGE.
      JSB FIXMS     UPDATE
      ASC 1,34        ERROR 
      DEF EE033+1       MESSAGE.
E034  JSB FIX34     REPORT BAD WCR2.
*                   A=EXPECTED WCR2 CONTENTS
*                   B=ACTUAL WCR2 CONTENTS
      LDA DAOUT     RESTORE PATTERN.
      INA,SZA       UPDATE PATTERN. FINISHED? 
      JMP WC1        NO! DO NEXT PATTERN. 
      SKP 
* 
* -- CHECK CRS CLEARS CONTROL FF TO WCR 
* 
      STC 2         READY WCR1. 
      STC 3         READY WCR2. 
      OTA 2         SET WCR1 TO ZERO
      OTA 3         SET WCR2 TO ZERO. 
      CLC 0         SHOULD CLEAR CTL FF'S TO WCRS.
      CCA           SHOULD NOT BE ABLE
      OTA 2          TO CHANGE WCR1 
      OTA 3           OR WCR2.
      LIA 2         INPUT WCR1 CONTENTS.
      SZA,RSS       IS WCR1 CHANGED?
      JMP E035+2     NO! TEST WCR2. 
      JSB FIXMS      YES! UPDATE
      ASC 1,35             ERROR
      DEF EE020+1           MESSAGE.
E035  JSB ERMSG     CRS DID NOT CLEAR WCR1
      DEF EE020       CONTROL FF. 
      LIA 3         GET WCR2 CONTENTS.
      SZA,RSS       WAS WCR2 CHANGED? 
      JMP TRETN      NO! EXIT TEST SECTION. 
      JSB FIXMS      YES! UPDATE
      ASC 1,36             ERROR
      DEF EE021+1           MESSAGE.
E036  JSB ERMSG     CRS DID NOT CLEAR WCR2
      DEF EE021      CONTROL FF.
      JMP TRETN     EXIT TEST SECTION.
      HED TST06 - TEST WORD COUNT ROLLOVER
*  TST06 -- THIS TEST CHECKS THE WORD COUNT ROLLOVER
*            BY SETTING THE WORD COUNT TO -1 AND
*              FORCING A TRANSFER.
* 
TST06 JSB STUFI     SET UP ERROR RETURN 
      DEF E037       IN CASE I-O INTERRUPTS.
      JSB STUF6     SETUP RETURN JMP IN 
      DEF RTN1        THE DMA1 TRAP CELL. 
      LIA 3         GET WCR2. 
      STA SAVWC     SAVE IT.
      JSB RDYD1     READY DMA1. 
      STF 0         ENABLE INT SYSTEM.
      STC 6,C       TURN ON DMA1. 
      JSB STCC      DMA1 SHOULD INTERRUPT HERE. 
      NOP           ALLOW TIME FOR INTERRUPT
E037  JSB FIXMS       NO? UPDATE
      ASC 1,37             ERROR
      DEF EE012+1           MESSAGE.
      JSB ERMSG     DMA1 DID NOT INTERRUPT AFTER XFR
      DEF EE012 
RET07 JSB TRAPC     INITIALIZE TRAP CELLS.
      CLC 6,C       TURN OFF DMA1 
      JSB STUFI     SET UP ERROR RETURN 
      DEF E040        IN CASE I-O INTERRUPTS. 
      JSB STUF7     SETUP RETURN JMP IN 
      DEF RTN2        THE DMA2 TRAP CELL. 
      LIA 2         SAVE INITIAL
      STA SAVWC      WCR1.
      JSB RDYD2     READY DMA2. 
      STF 0         TURN ON INTERRUPT SYSTEM. 
      STC 7,C       TURN ON DMA2. 
      JSB STCC      DMA2 SHOULD INTERRUPT HERE. 
      NOP           ALLOW TIME FOR INTERRUPT
E040  JSB FIXMS       NO? UPDATE
      ASC 1,40              ERROR 
      DEF EE015+1            MESSAGE. 
      JSB ERMSG     DMA2 DID NOT INTERRUPT AFTER XFR
      DEF EE015 
      CLC 7,C TURN OFF DMA2 
      JMP TRETN     EXIT TEST SECTION 
      SKP 
RTN1  CLF 0         TURN OFF INTERRUPTS 
      LIA 3         GET WCR2. 
      CPA SAVWC     WAS IT ALTERED BY DMA1? 
      JMP *+3        NO! CONTINUE.
E105  JSB ERMSG      YES! REPORT ERROR. 
      DEF EE105     DMA1 ALTERED WCR2.
      LIA 2         GET WCR1 CONTENTS.
      SZA,RSS       IS IT ZERO? 
      JMP RET07      YES! RETURN TO NEXT TEST.
E041  JSB ERMSG     WCR1 WAS NOT ZERO 
      DEF EE041      AFTER ROLLOVER.
*                 A=ACTUAL WCR1 CONTENTS
      JMP RET07     DO NEXT TEST. 
      SPC 2 
RTN2  CLF 0         TURN OFF INTERRUPT
      LIA 2         GET WCR1. 
      CPA SAVWC     WAS WCR1 ALTERED BY DMA2? 
      JMP *+3        NO! CONTINUE.
E106  JSB ERMSG      YES! REPORT ERROR. 
      DEF EE106     DMA2 ALTERED WCR1.
      LIA 3         GET WCR2 CONTENTS.
      SZA,RSS       IS IT ZERO? 
      JMP *+3        YES! EXIT TEST SECTION.
E042  JSB ERMSG     WCR2 WAS NOT ZERO 
      DEF EE042      AFTER ROLLOVER.
*                 A=ACTUAL WCR2 CONTENTS
      CLC 7,C       TURN OFF DMA2 
      JMP TRETN     EXIT TEST SECTION.
        