*        THIS TEST CHECKS THE DMA OUTPUT CAPABILITY.
*         ALL POSSIBLE PATTERNS AND THEIR COMPLEMENTS 
*         ARE TESTED. 
      SPC 3 
T.15  EQU * 
OC1   CLA           INITIALIZE OUTPUT WORD TO ZERO
      LDB BT5 
      JSB CHKSW,I   TTY?
      JMP TTO.1     YES 
      JMP MRO.1     NO
      SPC 1 
* 
* OUTPUT TO TTY I/O BOARD (DMA1)
* 
TTO.1 JSB DOUT1     OUTPUT A WORD 
      CMA 
      AND A377      MASK OUT UPPER 8 BITS 
      JSB DOUT1     OUTPUT COMPLEMENT 
      CMA 
      AND A377
      JSB DOUT1     OUTPUT WORD AGAIN 
      JSB PKFD
      NOP 
      INA 
      CPA BT8       FINISHED? 
      JMP OC2       YES 
      JMP TTO.1     NO, LOOP
      SPC 1 
* 
* OUTPUT TO MCR (DMA1)
* 
MRO.1 JSB DOUT1     OUTPUT A WORD 
      CMA 
      JSB DOUT1     OUTPUT COMPLEMENT 
      CMA 
      JSB DOUT1     OUTPUT WORD AGAIN 
      JSB PKFD
      RAL 
      INA,SZA       FINISHED? 
      JMP MRO.1     NO, LOOP
      JMP OC2       YES 
      SPC 1 
* 
* DATA OUT ROUTINE (DMA1) 
* 
DOUT1 NOP 
      JSB WBL 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      STA AOUT,I
      STA DAOUT 
      LDA FFWA
      CCB 
      JSB OUT1,I    READY DMA1
      LDB BT5 
      JSB CHKSW,I   TTY?
      NOP 
      JMP *+3       NO
      LDA CHA       CHANGE CTL WRD TO STC-NOT,
      OTA 6          WORD, CLC-NOT
      STC 6,C       START XFR 
      CLA,INA 
      JSB TMR,I 
      SFS 6         CHECK DMA1 FLAG 
      JSB FLG.1,I * E50. DMA1 FLG NOT SET AFTER XFR 
      LDB BT5 
      JSB CHKSW,I   TTY?
      NOP 
CH24  STC CH,C
      LDA DAOUT 
CH25  LIB CH        INPUT WORD
      STB DAIN
      CPB DAOUT     OUTPUT = INPUT? 
      JMP E67+1     YES 
      LDB AM67A     NO. OUTPUT IN A, MSG ADDR IN B
      JSB DATA,I    CONVERT OUTPUT TO ASCII 
      LDA DAIN      INPUT IN A
      LDB AM67B     MSG ADDR IN B 
      JSB DATA,I    CONVERT INPUT TO ASCII
E67   JSB ERROR,I * DMA1--WORD OUTPUT ERROR. GOOD=
*                                   XXXXXX, BAD=XXXXXX
      JSB H/L,I     CHECK FOR LOOP ON TEST
      JMP DOUT1,I   RETN *+1
      SPC 2 
OC2   JSB CTPD
      JMP T.16
      CLA           TEST DMA2 
      LDB BT5 
      JSB CHKSW,I 
      JMP TTO.2 
      JMP MRO.2 
      SPC 1 
* 
* OUTPUT TO TTY I/O BOARD (DMA2)
* 
TTO.2 JSB DOUT2 
      CMA 
      AND A377
      JSB DOUT2 
      CMA 
      AND A377
      JSB DOUT2 
      JSB PKFD
      NOP 
      INA 
      CPA BT8 
      JMP IC1 
      JMP TTO.2 
      SPC 1 
* 
* OUTPUT TO MCR (DMA2)
* 
MRO.2 JSB DOUT2 
      CMA 
      JSB DOUT2 
      CMA 
      JSB DOUT2 
      JSB PKFD
      RAL 
      INA,SZA 
      JMP MRO.2 
      JMP IC1 
      SPC 1 
* 
* DATA OUT ROUTINE (DMA2) 
* 
DOUT2 NOP 
      JSB WBL 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      STA AOUT,I
      STA DAOUT 
      LDA FFWA
      CCB 
      JSB OUT2,I
      LDB BT5 
      JSB CHKSW,I 
      RSS 
      JMP *+3 
      LDA CHA 
      OTA 7 
      STC 7,C 
      CLA,INA 
      JSB TMR,I 
      SFS 7 
      JSB FLG.2,I * E53. DMA2 FLG NOT SET AFTER XFR 
      LDB BT5 
      JSB CHKSW,I 
      NOP 
CH26  STC CH,C
      LDA DAOUT 
CH27  LIB CH
      STB DAIN
      CPB DAOUT 
      JMP E71+1 
      LDB AM71A 
      JSB DATA,I
      LDA DAIN
      LDB AM71B 
      JSB DATA,I
E71   JSB ERROR,I * DMA2--WORD OUTPUT ERROR. GOOD=
*                                    XXXXXX, BAD=XXXXXX 
      JSB H/L,I     CHECK FOR LOOP ON TEST
      JMP DOUT2,I 
      SPC 2 
AOUT  DEF OUT 
      NOP 
ENDW  DEF OUT+1 
TEMPS OCT 0 
      SPC 3 
* 
*     WBL WRITES BLOCK ADDRESS INTO BLOCK WORDS 
* 
WBL   NOP 
      STA SAVA
      LDA FFWA
      STA TEMPS 
WRT1  STA TEMPS,I 
      INA 
      ISZ TEMPS 
      CPA ENDW
      RSS 
      JMP WRT1
      LDA SAVA
      JMP WBL,I 
      HED T.16 - TEST DMA INPUT 
      SPC 2 
*        THIS TEST CHECKS THE DMA INPUT CAPABILITY. 
*         ALL POSSIBLE PATTERNS AND THEIR COMPLEMENTS 
*         ARE TESTED. 
      SPC 3 
T.16  EQU * 
IC1   CLA           INITIALIZE INPUT WORD TO ZERO 
      LDB BT5 
      JSB CHKSW,I   TTY?
      JMP TTI.1     YES 
      JMP MRI.1     NO
      SPC 1 
* 
* INPUT FROM TTY I/O BOARD (DMA1) 
* 
TTI.1 JSB DIN1      INPUT A WORD
      CMA 
      AND A377      MASK PUT UPPER 8 BITS 
      JSB DIN1      INPUT COMPLEMENT
      CMA 
      AND A377
      JSB DIN1      INPUT WORD AGAIN
      JSB PKFD
      NOP 
      INA 
      CPA BT8       FINISHED? 
      JMP IC2       YES 
      JMP TTI.1     NO, LOOP
      SPC 1 
* 
* INPUT FROM MCR (DMA1) 
* 
MRI.1 JSB DIN1      INPUT A WORD
      CMA 
      JSB DIN1      INPUT COMPLEMENT
      CMA 
      JSB DIN1      INPUT WORD AGAIN
      JSB PKFD
      RAL 
      INA,SZA       FINISHED? 
      JMP MRI.1     NO, LOOP
      JMP IC2       YES 
      SPC 1 
* 
* DATA IN ROUTINE (DMA1)
* 
DIN1  NOP 
      JSB WBL 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      STA DAOUT 
CH28  OTA CH        OUTPUT DATA TO BE INPUT 
      LDB BT5 
      JSB CHKSW,I   TTY?
      NOP           YES 
CH29  STC CH        NO
CH30  CLC CH
      CMA 
      LDB BT5 
      JSB CHKSW,I   TTY?
      AND A377      YES, MASK OUT UPPER 8 BITS
      STA IN        NO. SET UP INPUT AREA 
      LDA FFWA
      CCB 
      JSB IN1,I     READY DMA1
      STC 6,C       XFR DATA TO INPUT AREA
      CLA,INA 
      JSB TMR,I 
      SFS 6         CHECK DMA1 FLAG 
      JSB FLG.1,I * E50. DMA1 FLG NOT SET AFTER XFR 
      LDA FFWA
      STA TEMPS 
      LDA DAOUT 
DIN11 LDB TEMPS,I 
      STB DAIN
      CPB DAOUT     INPUT CORRECT?
      JMP E137+1
      LDA DAOUT     NO
      LDB AM73A     OUTPUT IN A, MSG ADDR IN B
      JSB DATA,I    CONVERT OUTPUT TO ASCII 
      LDA DAIN      INPUT IN A
      LDB AM73B     MSG ADDR IN B 
      JSB DATA,I    CONVERT INPUT TO ASCII
E137  JSB ERROR,I   DMA1-WORD INPUT ERROR. GOOD = 
*                                   XXXXXX, BAD=XXXXXX
      JSB H/L,I     CHECK FOR LOOP ON TEST
      ISZ TEMPS 
      LDA TEMPS 
      CPA ENDW
      RSS 
      JMP DIN11 
      LDA DAOUT 
      LDB DAIN
      JMP DIN1,I    EXIT
      SPC 2 
IC2   JSB CTPD
      JMP T.17
      CLA           TEST DMA2 
      LDB BT5 
      JSB CHKSW,I 
      JMP TTI.2 
      JMP MRI.2 
      SPC 1 
* 
* INPUT FROM TTY BOARD (DMA2) 
* 
TTI.2 JSB DIN2
      CMA 
      AND A377
      JSB DIN2
      CMA 
      AND A377
      JSB DIN2
      JSB PKFD
      NOP 
      INA 
      CPA BT8 
      JMP PKO1
      JMP TTI.2 
      SPC 1 
* 
* INPUT FROM MCR (DMA2) 
* 
MRI.2 JSB DIN2
      CMA 
      JSB DIN2
      CMA 
      JSB DIN2
      JSB PKFD
      RAL 
      INA,SZA 
      JMP MRI.2 
      JMP PKO1
      SPC 1 
* 
* DATA IN ROUTINE (DMA2)
* 
DIN2  NOP 
      JSB WBL 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      STA DAOUT 
CH67  OTA CH
      LDB BT5 
      JSB CHKSW,I 
      NOP 
CH68  STC CH
CH69  CLC CH
      CMA 
      LDB BT5 
      JSB CHKSW,I 
      AND A377
      STA IN
      LDA FFWA
      CCB 
      JSB IN2,I 
      STC 7,C 
      CLA,INA 
      JSB TMR,I 
      SFS 7 
      JSB FLG.2,I * E53. DMA2 FLG NOT SET AFTER XFR 
      LDA FFWA
      STA TEMPS 
      LDA DAOUT 
DIN22 LDB TEMPS,I 
      STB DAIN
      CPB DAOUT 
      JMP E115+1
      LDA DAOUT 
      LDB A115A 
      JSB DATA,I
      LDA DAIN
      LDB A115B 
      JSB DATA,I
E115  JSB ERROR,I * DMA2--WORD INPUT ERROR. GOOD= 
*                                   XXXXXX, BAD=XXXXXX
      JSB H/L,I     CHECK FOR LOOP ON TEST
      ISZ TEMPS 
      LDA TEMPS 
      CPA ENDW
      RSS 
      JMP DIN22 
      LDA DAOUT 
      LDB DAIN
      JMP DIN2,I    EXIT
      SPC 3 
PWOU2 BSS 1         STORAGE FOR DMA1 UPPER BYTE 
PWOU3 BSS 1         STORAGE FOR DMA2 UPPER BYTE 
PWOL2 BSS 1         STORAGE FOR DMA1 LOWER BYTE 
PWOL3 BSS 1         STORAGE FOR DMA2 LOWER BYTE 
PT.17 DEF AT.17 
TRD   DEF PO.T2 
      NOP 
      SPC 2 
      HED T.17 - TEST OUTPUT IN PACK MODE 
*        THIS TEST CHECKS THE DATA OUTPUT UNPACKING 
*         CAPABILITY OF THE DMA.
      SPC 3 
T.17  EQU * 
SHRTI EQU * 
PKO1  JSB PKFD
      JMP PT.17,I 
      CLC 0,C       CLEAR ALL DEVICES, INT SYS OFF
      CLA           CLEAR STORAGE AREAS 
      STA PWOU2 
      STA PWOL2 
      LDA PWRDC 
      STA PWRD
      CCB           -1 IN B 
      LDA APWRD     ADDR OF PACKED WORD IN A
      JSB OUT1,I    READY DMA1
      LDB BT5 
      JSB CHKSW,I   TTY?
      JMP PO.T1     YES 
      LDA K0        NO, CTL WRD=STC, CLC
      IOR CHA 
      IOR BT14      CHANGE CTL WRD TO BYTE
      OTA 6 
      STC 6,C       TURN ON DMA1
      NOP 
CH53  STC CH,C
CH32  LIA CH        INPUT BITS 8-15 OF OUTPUT WORD
      STA PWOU2     SAVE
CH54  STC CH,C
      SPC 2 
CH34  LIA CH        INPUT BITS 0-7 OF OUTPUT WORD 
      STA PWOL2     SAVE
      SFS 6 
      JSB FLG.1,I * E50. DMA1 FLG NOT SET AFTER XFR 
      LDA PWRD
      ALF,ALF 
      AND A377
      STA DAOUT 
      CPA PWOU2     IS UPPER BYTE (BITS 8-15) OK? 
      JMP PKO.1     YES 
      LDB AM75A     GOOD DATA IN A, MSG ADDR IN B 
      JSB DATA,I    CONVERT TO ASCII
      LDA PWOU2     BAD DATA IN A 
      STA DAIN
      LDB AM75B     MSG ADDR IN B 
      JSB DATA,I    CONVERT TO ASCII
E75   JSB ERROR,I * DMA1--UPPER BYTE OUTPUT ERROR.
PKO.1 EQU *          GOOD=XXXXXX, BAD=XXXXXX
      LDA PWRD
      AND A377
      STA DAOUT 
      CPA PWOL2     IS LOWER BYTE (BITS 0-7) OK?
      JMP E76+1     YES 
      LDB AM76A     GOOD DATA IN A, MSG ADDR IN B 
      JSB DATA,I    CONVERT TO ASCII
      LDA PWOL2     BAD DATA IN A 
      STA DAIN
      LDB AM76B     MSG ADDR IN B 
      JSB DATA,I    CONVERT TO ASCII
E76   JSB ERROR,I * DMA1--LOWER BYTE OUTPUT ERROR.
*                                    GOOD=XXXXXX, BAD=XXXXXX
      JSB H/L,I     CHECK FOR LOOP ON TEST
      JMP PKO2
      SPC 2 
PO.T1 EQU * 
      LDA CHA       CTL WRD=STC-NOT, CLC-NOT, 
      IOR BT14        BYTE
      OTA 6 
      STC 6,C       TURN ON DMA1
      NOP 
CH55  LIA CH
      STA PWOU2 
CH33  STF CH        GENERATE SRQ TO COMPLETE XFR
      NOP 
      JMP CH34
      SPC 2 
PKO2  EQU * 
      JSB SAVAD,I   SAVE LOOP ADDRESS 
      CLA           TEST DMA2 
      STA PWOU3 
      STA PWOL3 
      CCB 
      LDA APWRD 
      JSB OUT2,I
      LDB BT5 
      JSB CHKSW,I 
      JMP TRD,I 
      LDA K0
      IOR BT14
      IOR CHA 
      OTA 7 
      STC 7,C 
      NOP 
CH56  STC CH,C
CH35  LIA CH
      STA PWOU3 
CH57  STC CH,C
      SPC 2 
CH37  LIA CH
      STA PWOL3 
      SFS 7 
      JSB FLG.2,I * E53. DMA2 FLG NOT SET AFTER XFR 
      LDA PWRD
      ALF,ALF 
      AND A377
      STA DAOUT 
      CPA PWOU3 
      JMP PKO.2 
      LDB A101A 
      JSB DATA,I
      LDA PWOU3 
      STA DAIN
      LDB A101B 
      JSB DATA,I
E101  JSB ERROR,I * DMA2--UPPER BYTE OUTPUT ERROR.
PKO.2 EQU *          GOOD=XXXXXX, BAD=XXXXXX
      LDA PWRD
      AND A377
      STA DAOUT 
      CPA PWOL3 
      JMP E102+1
      LDB A102A 
      JSB DATA,I
      LDA PWOL3 
      STA DAIN
      LDB A102B 
      JSB DATA,I
E102  JSB ERROR,I * DMA2--LOWER BYTE OUTPUT ERROR.
*                                   GOOD=XXXXXX, BAD=XXXXXX 
      JSB H/L,I     CHECK FOR LOOP ON TEST
      JMP T.20I,I 
      SPC 2 
PO.T2 EQU * 
      LDA CHA 
      IOR BT14
      OTA 7 
      STC 7,C 
      NOP 
CH58  LIA CH
      STA PWD3,I
CH36  STF CH
      NOP 
      JMP *+1,I 
      DEF CH37
      SPC 2 
      HED T.17 - TEST DMA OUTPUT (SHORT TEST) 
AT.17 EQU * 
      CLC 0,C       TEST DMA1 
      JSB CLR       CLEAR I/O BUFFER
      CLA,INA 
      JSB DD1,I 
      SPC 3 
      JSB CLR       TEST DMA2 
      CLA,INA 
      JSB DD2,I 
      JMP *+1,I 
      DEF T.21
      SPC 3 
CLR   NOP           CLEAR I/O BUFFER
      CLA 
CH85  OTA CH
      LDB BT5 
      JSB CHKSW,I   TTY ? 
      JMP *+3       YES 
CH86  STC CH
CH87  CLC CH
      JMP CLR,I     RTN*+1
      HED T.20 - TEST INPUT IN PACK MODE
                                      