      JMP UTC01     CONTINUE
      JSB ERMS,I    REPORT ERROR
      DEF EM100 
UTC01 JSB SHUTA     UPDATE SUB-TEST NO
      JSB MRST      MASTER RESET
      JSB CMND      GO TO XMIT MODE 
      ABS WRD4+XMIT 
      JSB CMND      OUTPUT DATA 
      ABS WRD0+1
      JSB MDATA     CHECK DATA
      ABS 400B
      ABS 400B
      DEF EM101 
      JSB CMND
      ABS WRD3
      LDA MD8 
      STA UTCNT     INITIALIZE COUNT
UTC03 JSB CLK16     SUPPLY 16 CLOCKS
      ISZ UTCNT 
      JMP UTC03     CONTINUE - CLOCKS FOR ONE CHARACTER 
      JSB MDATA     CHECK CHARACTER COUNTER 
      ABS 400B
      ABS 0B
      DEF EM101 
      JSB SHUTA     UPDATE SUB-TEST NO
      JSB MRST      MASTER RESET
      JSB CMNDD     GO INTO XMIT MODE 
      ABS WRD4+XMIT+CA
      JSB CMND      OUTPUT DATA 
      ABS WRD0+4
      JSB CLK16     SUPPLY CLOCKS 
      JSB RSTUS     READ STATUS 
      AND UTMBA     MASK FOR BA 
      SZA,RSS       CHECK FOR START BIT 
      JMP UTC02     CONTINUE
      JSB ERMS,I    REPORT ERROR
      DEF EM102 
UTC02 JSB SHUTA     UPDATE SUB-TEST NO
      CLA 
      STA UACSZ     INITIALIZE CHARACTER SIZE 
      STA UAPTY     INITIALIZE PARITY 
      STA UASTP     INITIALIZE STOP BITS/CHAR 
UTC04 JSB MRST      MASTER RESET
      JSB CMNDD     INITIALIZE INTERFACE
      ABS WRD4+XMIT+CA
      JSB CMND
      ABS WRD0+5
      LDA MD16
      STA UTCNT 
UTC08 JSB CLK16 
      ISZ UTCNT 
      JMP UTC08 
*                                   CONTINUE WITH UART TRANSMIT TEST
      LDA UAWD3     GET WORD 3 COMMAND
      IOR UACSZ 
      IOR UAPTY 
      IOR UASTP 
      STA UTP01     SAVE
      JSB UTS01     TEST XMIT DATA
UTP01 BSS 1 
      JSB SUBT      CHECK SUB-TEST LOOP 
      JMP UTC04     CONTINUE - LOOP 
      JSB UARTS     UPDATE TEST CONDITIONS
      JMP UTTST,I   CONTINUE
      JMP UTC04     CONTINUE
      SPC 2 
UTCNT BSS 1 
UTMBA ABS CE
      SKP 
UTS01 NOP           RETURN ADDRESS
      CLA,INA 
      STA UTSP5     INITIALIZE PATTERN
      LDA UTS01,I   GET PARAMETERS
      STA UTSP1 
      STA UTSP2 
      STA UTSP3 
      STA UTSP4 
      ISZ UTS01     UPDATE RETURN ADDRESS 
UTSC2 LDA MD16      INITIALIZE COUNTER
      STA BCNTR 
      JSB CMND      SELECT PARITY / TYPE
UTSP1 BSS 1 
      JSB CLBFR     CLEAR INPUT BUFFER
      JSB PTGNR     GENERATE A TEST PATTERN 
UTSP5 BSS 1         ASCENDING PATTERN 
      LDA BRCV
      STA BUFFA 
      LDA BXMIT 
      STA BUFFB 
UTSC1 JSB XARI      OUTPUT THE DATA 
      JSB SDIN      SUPPLY CLOCKS AND RECEIVE SERIAL DATA 
UTSP2 BSS 1 
      ISZ BCNTR     UPDATE COUNTER
      JMP UTSC1     CONTINUE
      JSB FIXDA 
UTSP4 BSS 1 
      JSB CBURT     CHECK DATA
UTSP3 BSS 1         WORD 3 COMMAND
      DEF EM103     POINTER TO ERROR MSG
      JMP UTS01,I   RETURN - NO MORE ERRORS WANTED
      LDA UTSP5     GET PATTERN 
      ADA PATUP     UPDATE PATTERN
      STA UTSP5     SAVE
      AND LOHWD     MASK
      CPA D1        CHECK DONE ALL
      JMP UTS01,I   RETURN
      JMP UTSC2     CONTINUE NEXT PATTERN 
      SKP 
UARTS NOP           RETURN ADDRESS
      LDA UACSZ     GET CHARACTER SIZE
      INA 
      AND MSK3
      SZA,RSS 
      JMP UAC05     CONTINUE
      STA UACSZ     SAVE
      JMP UAC04     CONTINUE
UAC05 STA UACSZ     SAVE
      LDA UAPTY     GET PARITY TYPE 
      RAR,RAR 
      INA 
      CPA D1
      INA 
      AND MSK3
      SZA,RSS 
      JMP UAC06     CONTINUE
      RAL,RAL 
      STA UAPTY 
      JMP UAC04     CONTINUE
UAC06 STA UAPTY     SAVE
      LDA UASTP     GET NO STOP BITS / CHAR 
      XOR UASPP 
      SZA,RSS 
      JMP UAC07     CONTINUE
      STA UASTP     SAVE
UAC04 ISZ UARTS     UPDATE RETURN ADDRESS 
UAC07 JMP UARTS,I   RETURN
      SPC 2 
UAWD3 ABS WRD3      WORD 3 COMMAND
UASTP BSS 1 
UACSZ BSS 1 
UAPTY BSS 1 
UASPP ABS STB 
      SKP 
TST06 EQU * 
URTST NOP           RETURN ADDRESS
      JSB STSUB     SAVE SUB-TEST NO
      OCT 104 
      JSB SUBUP     UPDATE SUB-TEST NO
      JSB MRST      MASTER RESET
      CLA           INITIALIZE TEST CONDITIONS
      STA UACSZ 
      STA UAPTY 
      STA UASTP 
URC04 JSB MRST      MASTER RESET
      JSB CMND      SELECT RECEIVE MODE 
      ABS WRD4
      LDA UAWD3     CONSTRUCT COMMAND 
      IOR UACSZ     BITS/CHAR 
      IOR UAPTY     PARITY
      IOR UASTP     STOP(S) 
      STA URP01     SAVE
      JSB URS01 
URP01 BSS 1 
      JSB SUBT      UPDATE SUB-TEST NO. 
      JMP URC04     LOOP
      JSB UARTS     UPDATE TEST CONDITIONS
      JMP URC05     CONTINUE - LAST TEST CONDITION
      JMP URC04     CONTINUE - NEXT TEST CONDITION
URC05 JSB SUBUP     UPDATE SUB-TEST NO
      JSB SUBUP     UPDATE SUB-TEST NO
      JMP URC10     CONTINUE
      SPC 2 
URWD4 ABS WRD4
      SPC 1 
URS01 NOP           RETURN ADDRESS
      LDA URS01,I   GET PARAMETERS
      STA URSP1 
      STA URSP2 
      STA URSP3 
      STA URSP4 
      ISZ URS01     UPDATE RETURN ADDRESS 
      LDB URWD4     GET WORD 4 COMMAND
      STB SDWD4     SAVE
      CLA,INA 
      STA URSP5     INITIALIZE PATTERN
      STA URSP6 
URSC2 JSB CMND      SELECT MODE OF OPERATION
URSP3 BSS 1 
      JSB CLBFR     CLEAR INPUT BUFFER
      JSB PTGNR     GENERATE A TEST PATTERN 
URSP5 ABS 1         ASCENDING PATTERN 
      JSB FIXDA     PREPARE DATA
URSP1 BSS 1 
      LDA MD16      INITIALIZE COUNTER
      STA BCNTR 
      LDA BXMIT 
      STA BUFFA 
      LDA BRCV
      STA BUFFB 
URSC1 JSB SDOUT     SUPPLY SERIAL DATA TO BB
URSP2 BSS 1 
      JSB RARI      INPUT DATA FROM ARI 
      ISZ BCNTR     UPDATE COUNTER
      JMP URSC1     CONTINUE
      JSB PTGNR     RESTORE EXPECTED PATTERN
URSP6 ABS 1 
      JSB LINBF     PREPARE BUFFERS 
      JSB CBURT     CHECK DATA
URSP4 BSS 1         WORD 3 COMMAND
      DEF EM105     POINTER TO ERROR MSG
      JMP URS01,I   RETURN - NO MORE ERRORS WANTED
      JSB RSTUS     READ STATUS 
      AND URPEM     MASK FOR PARITY ERROR 
      SZA,RSS 
      JMP URSC3     CONTINUE
      JSB ERMS,I    REPORT ERROR
      DEF EM106 
URSC3 JSB CMND      RESET STATUS FLAGS
      ABS WRD5+CLBRK+CLPE+CBE+CBF 
      LDA URSP5     GET PATTERN 
      ADA PATUP     UPDATE PATTERN
      STA URSP5 
      STA URSP6 
      AND LOHWD     MASK
      CPA D1
      JMP URS01,I   RETURN
      JMP URSC2     CONTINUE NEXT PATTERNS
      SPC 2 
URPEM ABS PARR
      SPC 2 
URC10 JSB MRST      MASTER RESET
      JSB CLF        CLEAR FLAG FF
      JSB STC        SET CONTROL - CLEAR LOCKOUT
      JSB CMND      SELECT RECEIVE
      ABS WRD4
      JSB CMNDD     SELECT RECEIVE
      ABS WRD4+CD 
      LDA MD38      INITIALIZE COUNTER
      STA BCNTR 
URC08 JSB CLK16     SUPPLY 16 CLOCKS
      ISZ BCNTR     UPDATE COUNTER
      JMP URC08     CONTINUE
      JSB CMNDD     FINISH BREAK
      ABS WRD4
      JSB CLK16 
      JSB CSTUS     CHECK STATUS
      ABS BRK+SPCHR+BFF 
      DEF EM107 
      JSB SUBTH     UPDATE SUB-TEST NO
      JSB SFS       CHECK FLAG FF 
      RSS 
      JMP URC09     CONTINUE
      JSB EPREP     PREPARE ERROR MSG 
      DEF EMNFG     AND REPORT ERROR
      DEF EMFNS 
      DEF EM110 
URC09 JSB SUBTH     UPDATE SUB-TEST NO
      JSB CMND      RESET BRKFLG
      ABS WRD5+CLBRK
      JSB CSTUS     CHECK STATUS
      ABS SPCHR+BFF 
      DEF EM111 
      JSB SHUTA     UPDATE SUB-TEST NO
      JSB MRST      MASTER RESET
      JSB CMNDD     SELECT RECEIVE
      ABS WRD4+CA 
      JSB CMND      SELECT ECHO 
      ABS WRD3+ECHO 
      JSB CSTUS     CHECK ECHO
      ABS CE+CC 
      DEF EM112 
      JSB CMNDD     COMPLEMENT TEST DATA
      ABS WRD4+CD+CA
      JSB CSTUS     CHECK ECHO
      ABS CB+CC 
      DEF EM112 
      JSB SHUTA     UPDATE SUB-TEST NO
      JMP URTST,I   RETURN
      SPC 2 
      SKP 
TST07 EQU * 
BRTST NOP           RETURN ADDRESS
      JSB STSUB     SAVE SUB-TEST NO
      OCT 113 
      JSB MRST      MASTER RESET
      CLA 
      STA BRPTR     SAVE INDEX POINTER
      LDA MD15      COUNT 
      STA BRCNT 
      LDA BRCMD     GET WORD 4 COMMAND
      STA BRP01     INITIALIZE BAUD RATE
BRC04 JSB CMND      SELECT 8 BIT 1 STOP NO PARITY 
      ABS WRD3+3
      JSB CMND      SELECT TRANSMIT 
      ABS WRD4+XMIT 
      LDB BRT2A 
      ADB BRPTR     ADD INDEX 
      LDB B,I       GET NO OF CHARACTERS
      STB BRTCR 
      JSB PTG       PLACE TO GO 
      DEF BRINT     INTERRUPT 
      DEF BRC02     DONE
      JSB CMND      START TRANSMIT AT XXXX BAUD 
BRP01 BSS 1         WRD4+XMIT+BAUD RATE 
      LDB BRT4A 
      ADB BRPTR     ADD INDEX 
      JSB CMND      OUTPUT DATA 
      ABS 0 
      JSB CMND      RESET BUFFER FLAGS
      ABS WRD5+CBF+CBEF 
      JSB CLF 
      JSB STC 
      LDA B,I       GET MAXIMUM TIME
      STF INTP      TURN INTPS ON 
      JSB TMRR,I    CALL TIMER
      LDA BRPTR 
      RAL 
      ADA BRPTR 
      ADA BRT1A     ADD TABLE ADDRESS 
      LDB A,I       GET BAUD RATE 
      STB BRRS1     PLACE IN MSG
      INA 
      LDB A,I       GET BAUD RATE 
      STB BRRS2     PLACE IN MSG
      INA 
      LDB A,I       GET BAUD RATE 
      STB BRRS3     PLACE IN MSG
      LDA BRP01     GET BAUD RATE 
      CLF INTP      TURN INTERRUPT SYSTEM OFF 
      JSB ERMS,I    REPORT ERROR
      DEF EM113     POINTER TO MSG
      JSB MRST      MASTER RESET
      JMP BRC03     CONTINUE
BRC02 LDB BRT3A 
      ADB BRPTR     ADD INDEX 
      LDB B,I       GET MINIMUM TIME
      ADA B 
      SSA,RSS 
      JMP BRC03     CONTINUE
      LDA BRPTR 
      RAL 
      ADA BRPTR 
      ADA BRT1A     ADD TABLE ADDRESS 
      LDB A,I       GET BAUD RATE 
      STB BRRF1     PLACE IN MSG
      INA 
      LDB A,I       GET BAUD RATE 
      STB BRRF2     PLACE IN MSG
      INA 
      LDB A,I       GET BAUD RATE 
      STB BRRF3     PLACE IN MSG
      LDA BRP01     GET BAUD RATE 
      CLF INTP      TURN INTERRUPT SYSTEM OFF 
      JSB ERMS,I    REPORT ERROR
      DEF EM114     MESSAGE POINTER 
BRC03 JSB SUBT      UPDATE SUB-TEST NO. 
      JMP BRC04     LOOP IN THIS BAUD RATE
      ISZ BRPTR     UPDATE POINTER
      ISZ BRP01     UPDATE TO NEXT BAUD RATE
      ISZ BRCNT     UPDATE COUNT
      JMP BRC04     CONTINUE - TRY NEXT RATE
      CLF INTP      TURN INTERRUPT SYSTEM OFF 
      JSB SHUTA     UPDATE SUB-TEST NO
      JMP BRTST,I   RETURN
      SPC 1 
BRINT NOP           RETURN ADDRESS
      CLF INTP      TURN INTERRUPTS OFF 
      STA BRTME     SAVE TIME 
      ISZ BRTCR     UPDATE COUNTER
      RSS 
      JMP BRIC1     CONTINUE LAST CHARACTER 
      JSB CMND      OUTPUT DATA 
      ABS 0 
      JSB CMND      CLEAR BUFFER EMPTY FLAG 
      ABS WRD5+CBF+CBEF 
      JSB CLF       CLEAR FLAG FF 
      JSB STC       SET CONTROL FF
      LDA BRTME     RESTORE A 
      STF INTP      TURN INTERRUPT SYS ON 
      JMP BRINT,I   RETURN TO TIMER 
BRIC1 JSB MRST      MASTER RESET
      LDA BRTME     GET TIME
      JMP IRTN,I    RETURN - DONE 
      SPC 1 
BRTME BSS 1 
BRTCR BSS 1 
BRCMD ABS WRD4+XMIT+1     SELECT 50 BAUD
BRPTR BSS 1 
BRCNT BSS 1 
EM113 ASC 11,E113 BAUD RATE SLOW (
BRRS1 ASC 1,
BRRS2 ASC 1,
BRRS3 ASC 1,
      ASC 1,)/
EM114 ASC 11,E114 BAUD RATE FAST (
BRRF1 ASC 1,
BRRF2 ASC 1,
BRRF3 ASC 1,
      ASC 1,)/
BRT01 EQU * 
      ASC 3,  50
      ASC 3,  75
      ASC 3, 110
      ASC 3,134.5 
      ASC 3, 150
      ASC 3, 300
      ASC 3, 600
      ASC 3, 900
      ASC 3,1200
      ASC 3,1800
      ASC 3,2400
      ASC 3,3600
      ASC 3,4800
      ASC 3,7200
      ASC 3,9600
      SKP 
BRT02 EQU * 
      DEC -1
      DEC -1
      DEC -1
      DEC -1
      DEC -1
      DEC -1
      DEC -2
      DEC -3
      DEC -4
      DEC -6
      DEC -8
      DEC -12 
      DEC -16 
      DEC -24 
      DEC -32 
      SPC 1 
BRT03 EQU * 
      ABS 209-193 
      ABS 140-129 
      ABS 95-87 
      ABS 79-72 
      ABS 70-64 
      ABS 35-32 
      ABS 35-32 
      ABS 35-32 
      ABS 35-32 
      ABS 35-32 
      ABS 34-31 
      ABS 34-31 
      ABS 34-31 
      ABS 33-30 
      ABS 33-29 
      SPC 1 
BRT04 EQU * 
      DEC 209 
      DEC 140 
      DEC 95
      DEC 79
      DEC 70
      DEC 35
      DEC 35
      DEC 35
      DEC 35
      DEC 35
      DEC 35
      DEC 35
      DEC 35
      DEC 35
      DEC 35
      SKP 
TST10 EQU * 
OVPET NOP           RETURN ADDRESS
      JSB STSUB     SAVE SUB-TEST NO
      OCT 115 
      JSB MRST      MASTER RESET
      LDA PEWW4     GET WORD 4 COMMAND
      STA SDWD4     SAVE
      JSB PTGNR     GENERATE A TEST PATTERN 
      ABS 1 
      JSB FIXDA     PREPARE DATA
      ABS WRD3+3
      JSB CMND      SELECT 8 BIT CODE 
      ABS WRD3+3
      JSB CMND      SELECT RECEIVE MODE 
      ABS WRD4
      JSB CMND      CLEAR FLAGS 
      ABS WRD5+CBF+CBEF+CLBRK 
      JSB CLF       CLEAR INTERFACE FLAG FF 
      JSB STC       SET CONTROL - CLEAR LOCKOUT 
      LDA BXMIT     INITIALIZE BUFFER POINTER 
      STA BUFFA 
      JSB SDOUT     OUTPUT SERIAL DATA TO INTERFACE 
      ABS WRD3+3
      JSB PTGNR 
      ABS 1 
      JSB FIXDA 
      ABS WRD3+3
      LDA BXMIT     INITIALIZE BUFFER POINTER 
      STA BUFFA 
      JSB SDOUT 
      ABS WRD3+3
      JSB CSTUS     CHECK STATUS
      ABS PARR+BFF+SPCHR+CB 
      DEF EM115 
      JSB SUBTH     UPDATE SUB-TEST NO
      JSB SFS       CHECK FLAG FF 
      RSS 
      JMP OVPC1     CONTINUE
      JSB EPREP     PREPARE ERROR MSG 
      DEF EMNFG     AND REPORT ERROR
      DEF EMFNS 
      DEF EM116 
OVPC1 JSB SUBTH     UPDATE SUB-TEST NO
      JSB CMND      RESET OVERFLOW - PE FLAG
      ABS WRD5+CLPE 
      JSB CSTUS     CHECK STATUS
      ABS BFF+SPCHR+CB
      DEF EM117 
      JSB SHUTA     UPDATE SUB-TEST NO
      SPC 2 
      LDA WRD3P     WORD 3 COMMAND ENABLE PARITY
      STA PEP01     SAVE
PEC01 JSB MRST      MASTER RESET
      JSB PES01     PERFORM TEST
PEP01 BSS 1         WORD 3 COMMAND
      JSB SUBT      CHECK SUB-TEST LOOP 
      JMP PEC01     LOOP
      LDA PEP01     UPDATE COMMAND
      INA 
      CPA PEM02     SKIP ECHO 
      ADA PEM03 
      STA PEP01     SAVE
      CPA PEM04     CHECK FOR DONE
      RSS 
      JMP PEC01     CONTINUE - NEXT COMMAND 
      JMP OVTPE,I   RETURN
      SPC 2 
PES01 NOP           RETURN ADDRESS
      LDA PES01,I   GET PARAMETER - WRD 3 CMND
      STA PESP1 
      STA PESP2 
      XOR PESXS     TOGGLE PARITY SENSE 
      STA PESP3 
      CLA 
      STA NOERS     INITIALIZE ERROR FLAG 
      CLA,INA 
      STA PESP4     INITIALIZE PATTERN
PESC3 JSB CMND      SELECT FRAME PARAMETERS 
PESP1 BSS 1         WORD 3 COMMAND
      JSB PTGNR     GENERATE A TEST PATTERN 
PESP4 BSS 1 
      JSB FIXDA     PREPARE DATA
PESP3 BSS 1 
      JSB CMND      SELECT RECEIVE MODE 
PEWD4 ABS WRD4
      LDA BXMIT     INITIALIZE BUFFER POINTER 
      STA BUFFA 
      JSB SDOUT     PROVIDE SERIAL DATA FOR INTERFACE 
PESP2 BSS 1 
      JSB RSTUS     READ STATUS 
      AND PEBIT     MASK
      SZA 
      JMP PESC1     CONTINUE
      LDA PESP1     GET WORD 3 COMMAND
      LDB PEMS1 
      CLE 
      JSB O2AS,I    CONVERT TO ASCII
      LDA PESP1 
      JSB ERMS,I    REPORT ERROR
      DEF EM120 
      JSB ALLER     CHECK SWITCH 2
PESC1 ISZ NOERS     ANY MORE ERRORS REPORTED
      RSS 
      JMP PESCE     NO - EXIT 
      JSB MRST      CLEAR PARITY ERROR
      JSB RSTUS     READ STATUS 
      AND PEBIT     MASK
      SZA,RSS 
      JMP PESC2     CONTINUE
      JSB ERMS,I    REPORT ERROR
      DEF EM121 
PESC2 ISZ PESP4     UPDATE PATTERN
      LDA PESP4     GET THE PATTERN 
      AND MSKCZ     MASK
      CPA D1        CHECK DONE ALL PAT
      RSS 
      JMP PESC3     CONTINUE NEXT PAT 
PESCE ISZ PES01     UPDATE RETURN ADDRESS 
      JMP PES01,I   RETURN
      SPC 2 
PESXS ABS PASNS 
PEBIT ABS PARR
PEM02 ABS WRD3+ECHO 
PEM03 ABS ECHO+PAR
PEM04 ABS WRD3+ECHO+STB 
WRD3P ABS WRD3+PAR
      SPC 2 
PEMS1 DEF PEMS2 
      SKP 
TST11 EQU * 
DMATS NOP           RETURN ADDRESS
      JSB STSUB     SAVE SUB-TEST NO
      OCT 122 
      JSB MRST      MASTER RESET
      JSB CLF       CLEAR FLAG FF 
      JSB STC       SET CONTROL / CLEAR LOCK
      JSB CMND      SELECT TRANSMIT MODE
      ABS WRD4+XMIT+DMA+17B 
DMC01 JSB CMND      FILL THE UART 
      ABS WRD0+1
      JSB SFS       CHECK FLAG FF 
      JMP DMC05     CONTINUE
      JSB EPREP     PREPARE ERROR MSG 
      DEF EMFSE     AND REPORT ERROR
      DEF EMFST 
      DEF EM122 
DMC05 JSB SHUTA     UPDATE SUB-TEST NO
      JSB MRST      MASTER RESET
      JSB CLF       CLEAR FLAG AND SRQ
      JSB STC       SET CONTROL - CLEAR LOCKOUT 
      JSB CMND      SELECT TRANSMIT AND DMA 
      ABS WRD4+XMIT+DMA+17B 
      JSB CMND      GENERATE AN INTERRUPT CONDITION 
      ABS WRD1+CFE
      JSB CMND
      ABS WRD2+CFR
      JSB SFS       CHECK FLAG FF 
      JMP DMC07     CONTINUE
      JSB EPREP     PREPARE ERROR MSG 
      DEF EMFSE     AND REPORT ERROR
      DEF EMFST 
      DEF EM123 
DMC07 JSB SUBTH     UPDATE SUB-TEST NO
      JSB CLF       CLEAR FLAG - CLEAR SRQ
      JSB SFS       CKECK FLAG FF - NOW SET 
      RSS 
      JMP DMC08     CONTINUE
      JSB EPREP     PREPARE ERROR MSG 
      DEF EMNFG     AND REPORT ERROR
      DEF EMFNS 
      DEF EM124 
DMC08 JSB SHUTA     UPDATE SUB-TEST NO
      JSB MRST      SET LOCKOUT 
      JSB CLF       CLEAR FLAG
      JSB CMND      ATTEMPT TO SET SRQ
      ABS WRD4+XMIT+DMA 
      JSB CMND
      ABS WRD4+XMIT 
      JSB CMND
      ABS WRD1+CFE
      JSB CMND
      ABS WRD2+CFR
      JSB STC       SET CONTROL - RESET LOCKOUT 
      JSB SFS       CHECK NOT SRQ = 1 
      RSS 
      JMP DMC09     CONTINUE
      JSB ERMS,I    REPORT ERROR
      DEF EM125 
DMC09 JSB SHUTA     UPDATE SUB-TEST NO
      LDA CPTO      GET COMPUTER TYPE AND OPTIONS 
      AND XDMA      ISOLATE DMA BIT 
      SZA           CHECK DMA PRESENT 
      JMP DMC10     CONTINUE
      JSB MSGC,I    OUTPUT MESSAGE NO DMA 
      DEF HM126 
      JMP DMATS,I   RETURN - NO DMA 
DMC10 JSB SHUTA     UPDATE SUB-TEST NO. 
      JSB MRST      MASTER RESET
      JSB CLF       CLEAR FLAG FF 
      JSB STC       SET CONTROL - CLEAR LOCKOUT 
      JSB CLBFR     CLEAR INPUT BUFFER
      JSB PTGNR     GENERATE A TEST PATTERN 
      ABS 252B+100000B
      LDA MD16      INITIALIZE COUNTER
      STA BCNTR 
      LDA BRCV      INITIALIZE BUFFER POINTER 
      STA BUFFA 
      JSB CMND      SELECT FRAME PARAMETERS 
      ABS WRD3+3
      JSB CMND      SELECT TRANSMIT MODE
      ABS WRD4+XMIT+DMA+CA
      JSB DMAON     TURN DMA ON 
      DEF XBUF      POINTER TO DATA BUFFER
      LDA D4        WAIT 4 MS.
      JSB TMRR,I
DMC11 JSB SDIN      ACCEPT SERIAL DATA
      ABS WRD3+3
      ISZ BCNTR     UPDATE COUNTER
      JMP DMC11     CONTINUE - TRANSMIT 
      JSB DMAOF     TURN DMA OFF
      JSB FIXDA     PREPARE DATA
      ABS WRD3+3
      JSB CBUFS     CHECK DATA
      DEF EM127 
      JSB SUBTH     UPDATE SUB-TEST NO
      JSB MSTUS     CHECK STATUS
      ABS BEF+BRK+PARR
      ABS 0 
      DEF EM130 
      JSB SHUTA     UPDATE SUB-TEST NO
      JSB MRST      MASTER RESET
      JSB CLF       CLEAR INTERFACE FLAG FF 
      JSB STC       SET INTERFACE CONTROL FF
      LDA DMWD4     GET WORD 4 COMMAND WITH DCPC
      STA SDWD4     SAVE
      JSB CLBFR     CLEAR INPUT BUFFER
      JSB PTGNR     GENERATE A TEST PATTERN 
      ABS 125B+100000B
      JSB FIXDA     PREPARE DATA
      ABS WRD3+3
      LDA MD16      INITIALIZE COUNTER
      STA BCNTR 
      LDA BXMIT     INITIALIZE BUFFER POINTER 
      STA BUFFA 
      JSB CMND      SELECT FRAME PARAMETERS 
      ABS WRD3+3
      JSB CMND      SELECT RECEIVE AND DMA
      ABS WRD4+DMA
      JSB DMAON     TURN DMA ON 
      DEF RBUF,I    BUFFER POINTER AND INPUT
DMC12 JSB SDOUT     SUPPLY SERIAL DATA TO BB
      ABS WRD3+3
      ISZ BCNTR     UPDATE COUNTER
      JMP DMC12     CONTINUE - RECEIVE
      JSB DMAOF     TURN DMA OFF
      JSB PTGNR     REGENERATE EXPECTED DATA PATTERN
      ABS 125B+100000B
      JSB LINBF     PREPARE DATA
      JSB CBUFS     CHECK DATA
      DEF EM131     ERROR MSG POINTER 
      LDA DMSTN     GET SUB-TEST NO 
      STA SUBT.     SAVE
      JSB CSTUS     CHECK STATUS
      ABS BFF+BEF+CB
      DEF EM130 
      JSB SHUTA 
      JMP DMATS,I   RETURN
      SPC 2 
XDMA  OCT 4 
DMWD4 ABS WRD4+DMA
DMSTN OCT 130 
      SKP 
      SPC 2 
XBUF  BSS 16        TRANSMIT BUFFER 
RBUF  BSS 16        RECEIVE BUFFER
EMFNS ASC 10,EXXX FLAG NOT SET -
EMNFG ASC 11, 
EMFST ASC 8,EXXX FLAG SET - 
EMFSE ASC 11, 
      LST 
FWAA  EQU * 
      END 
                                                                            