Google
 

Trailing-Edge - PDP-10 Archives - klad_sources - klad.sources/mcod6m.mac
There are no other files named mcod6m.mac in the archive.
	SUBTTL	DATA PATH TEST - PART 3

DEFTST	MCODE6
	TEST	247,TEST WRITE INDUSTRY COMPATIBLE FORMATTING
;*WRITE FOUR 18-BIT WORDS (EIGHT BYTES)

	LDBR	^D43			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D8			;SET BYTE CNT
	MOVB	AC2
	LDBR	WINCM			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	LDBR	TSTDAT			;SETUP ADDR OF EXPECTED TEST DATA
	MOVB	AC1
	GOSUB	WRSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS IN XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE WRITE,,PNT
	CHKTRM	TST,RH20 ERROR DETECTED DURING WRITE XFER
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	GOSUB	CHKDAT			;GO CHECK THE DATA RECEIVED AT CHANNEL BUS
	JMPZ	.+2			;JUMP IF NO ERRORS IN DATA
	ERRORD	TST,DATA ERROR IN WRITTEN DATA
	REPEAT	TST
	TEST	248,TEST READ INDUSTRY COMPATIBLE FORWARD FORMATTING
;*READ FOUR 18-BIT WORDS (EIGHT BYTES)

	LDBR	^D43			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D8			;SET BYTE CNT
	MOVB	AC2
	LDBR	RINCMF			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	249,TEST READ INDUSTRY COMPATIBLE REVERSE FORMATTING 1
;*READ FOUR 18-BIT WORDS (FIVE DATA BYTES WITH THREE ZERO BYTES PRE-PADDED)

	LDBR	^D51			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D5			;SET BYTE CNT
	MOVB	AC2
	LDBR	RINCR1			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	250,TEST READ INDUSTRY COMPATIBLE REVERSE FORMATTING 2
;*READ FOUR 18-BIT WORDS (SIX DATA BYTES WITH TWO ZERO BYTES PRE-PADDED)

	LDBR	^D52			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D6			;SET BYTE CNT
	MOVB	AC2
	LDBR	RINCR2			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	251,TEST READ INDUSTRY COMPATIBLE REVERSE FORMATTING 3
;*READ FOUR 18-BIT WORDS (SEVEN DATA BYTES WITH ONE ZERO BYTE PRE-PADDED)

	LDBR	^D53			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D7			;SET BYTE CNT
	MOVB	AC2
	LDBR	RINCR3			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	252,TEST READ INDUSTRY COMPATIBLE REVERSE FORMATTING 4
;*READ FOUR 18-BIT WORDS (EIGHT DATA BYTES WITH NO PRE-PADDING)

	LDBR	^D54			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D8			;SET BYTE CNT
	MOVB	AC2
	LDBR	RINCR4			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	253,TEST WRITE CORE DUMP FORMATTING
;*WRITE FOUR 18-BIT WORDS (TEN BYTES)

	LDBR	^D44			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D10			;SET BYTE CNT
	MOVB	AC2
	LDBR	WCDMP			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	LDBR	CRDMP			;SETUP ADDR OF EXPECTED TEST DATA
	MOVB	AC1
	GOSUB	WRSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS IN XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE WRITE,,PNT
	CHKTRM	TST,RH20 ERROR DETECTED DURING WRITE XFER
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	GOSUB	CHKDAT			;GO CHECK THE DATA RECEIVED AT CHANNEL BUS
	JMPZ	.+2			;JUMP IF NO ERRORS IN DATA
	ERRORD	TST,DATA ERROR IN WRITTEN DATA
	REPEAT	TST
	TEST	254,TEST READ CORE DUMP FORWARD FORMATTING
;*READ FOUR 18-BIT WORDS (TEN BYTES)

	LDBR	^D44			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D10			;SET BYTE CNT
	MOVB	AC2
	LDBR	RCDMPF			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	255,TEST READ CORE DUMP REVERSE FORMATTING 1
;*READ FOUR 18-BIT WORDS (SIX DATA BYTES WITH FOUR ZERO BYTES PRE-PADDED)

	LDBR	^D55			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D6			;SET BYTE CNT
	MOVB	AC2
	LDBR	RCDMR1			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	256,TEST READ CORE DUMP REVERSE FORMATTING 2
;*READ FOUR 18-BIT WORDS (SEVEN DATA BYTES WITH THREE ZERO BYTES PRE-PADDED)

	LDBR	^D56			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D7			;SET BYTE CNT
	MOVB	AC2
	LDBR	RCDMR2			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	257,TEST READ CORE DUMP REVERSE FORMATTING 3
;*READ FOUR 18-BIT WORDS (EIGHT DATA BYTES WITH TWO ZERO BYTES PRE-PADDED)

	LDBR	^D57			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D8			;SET BYTE CNT
	MOVB	AC2
	LDBR	RCDMR3			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	258,TEST READ CORE DUMP REVERSE FORMATTING 4
;*READ FOUR 18-BIT WORDS (NINE DATA BYTES WITH ONE ZERO BYTES PRE-PADDED)

	LDBR	^D58			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D9			;SET BYTE CNT
	MOVB	AC2
	LDBR	RCDMR4			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	259,TEST READ CORE DUMP REVERSE FORMATTING 5
;*READ FOUR 18-BIT WORDS (TEN DATA BYTES WITH NO PRE-PADDING)

	LDBR	^D59			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D10			;SET BYTE CNT
	MOVB	AC2
	LDBR	RCDMR5			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	260,TEST WRITE HIGH DENSITY FORMATTING
;*WRITE EIGHT 18-BIT WORDS (EIGHTEEN BYTES)

	LDBR	^D45			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	^D8			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D18			;SET BYTE CNT
	MOVB	AC2
	LDBR	WHIDN			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	LDBR	TSTDAT			;SETUP ADDR OF EXPECTED TEST DATA
	MOVB	AC1
	GOSUB	WRSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS IN XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE WRITE,,PNT
	CHKTRM	TST,RH20 ERROR DETECTED DURING WRITE XFER
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	GOSUB	CHKDAT			;GO CHECK THE DATA RECEIVED AT CHANNEL BUS
	JMPZ	.+2			;JUMP IF NO ERRORS IN DATA
	ERRORD	TST,DATA ERROR IN WRITTEN DATA
	REPEAT	TST
	TEST	261,TEST READ HIGH DENSITY FORWARD FORMATTING
;*READ EIGHT 18-BIT WORDS (EIGHTEEN BYTES)

	LDBR	^D45			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	^D8			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D18			;SET BYTE CNT
	MOVB	AC2
	LDBR	RHIDNF			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	262,TEST READ HIGH DENSITY REVERSE FORMATTING 1
;*READ SIX 18-BIT WORDS (TEN DATA BYTES WITH FOUR ZERO BYTES PRE-PADDED)

	LDBR	^D60			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	^D6			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D10			;SET BYTE CNT
	MOVB	AC2
	LDBR	RHIDR1			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	JUMP	NXTBNK			;JUMP TO NEXT BANK OF CRAM
	.LOC	2000
NXTBNK:
	TEST	263,TEST READ HIGH DENSITY REVERSE FORMATTING 2
;*READ SIX 18-BIT WORDS (ELEVEN DATA BYTES WITH THREE ZERO BYTES PRE-PADDED)

	LDBR	^D61			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	^D6			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D11			;SET BYTE CNT
	MOVB	AC2
	LDBR	RHIDR2			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	GOSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	GOSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	GOSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	GOSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	GOSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	264,TEST READ HIGH DENSITY REVERSE FORMATTING 3
;*READ SIX 18-BIT WORDS (TWELVE DATA BYTES WITH TWO ZERO BYTES PRE-PADDED)

	LDBR	^D62			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	^D6			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D12			;SET BYTE CNT
	MOVB	AC2
	LDBR	RHIDR3			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	JMPSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	JMPSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	265,TEST READ HIGH DENSITY REVERSE FORMATTING 4
;*READ SIX 18-BIT WORDS (THIRTEEN DATA BYTES WITH ONE ZERO BYTE PRE-PADDED)

	LDBR	^D63			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	^D6			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D13			;SET BYTE CNT
	MOVB	AC2
	LDBR	RHIDR4			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	JMPSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	JMPSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	266,TEST READ HIGH DENSITY REVERSE FORMATTING 5
;*READ EIGHT 18-BIT WORDS (FOURTEEN DATA BYTES WITH FOUR ZERO BYTES PRE-PADDED)

	LDBR	^D64			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	^D8			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D14			;SET BYTE CNT
	MOVB	AC2
	LDBR	RHIDR5			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	JMPSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	JMPSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	267,TEST READ HIGH DENSITY REVERSE FORMATTING 6
;*READ EIGHT 18-BIT WORDS (FIFTEEN DATA BYTES WITH THREE ZERO BYTES PRE-PADDED)

	LDBR	^D65			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	^D8			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D15			;SET BYTE CNT
	MOVB	AC2
	LDBR	RHIDR6			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	JMPSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	JMPSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	268,TEST READ HIGH DENSITY REVERSE FORMATTING 7
;*READ EIGHT 18-BIT WORDS (SIXTEEN DATA BYTES WITH TWO ZERO BYTES PRE-PADDED)

	LDBR	^D66			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	^D8			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D16			;SET BYTE CNT
	MOVB	AC2
	LDBR	RHIDR7			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	JMPSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	JMPSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	269,TEST READ HIGH DENSITY REVERSE FORMATTING 8
;*READ EIGHT 18-BIT WORDS (SEVENTEEN DATA BYTES WITH ONE ZERO BYTE PRE-PADDED)

	LDBR	^D67			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	^D8			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D17			;SET BYTE CNT
	MOVB	AC2
	LDBR	RHIDR8			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	JMPSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	JMPSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	270,TEST READ HIGH DENSITY REVERSE FORMATTING 9
;*READ EIGHT 18-BIT WORDS (EIGHTEEN DATA BYTES WITH NO PRE-PADDING)

	LDBR	^D68			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	^D8			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D18			;SET BYTE CNT
	MOVB	AC2
	LDBR	RHIDR9			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	JMPSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	JMPSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	271,TEST WRITE 6-BIT ASCII FORMATTING
;*WRITE FOUR 18-BIT WORDS (TWELVE BYTES)

	LDBR	^D46			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D12			;SET BYTE CNT
	MOVB	AC2
	LDBR	WASC6			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	LDBR	ASCII6			;SETUP ADDR OF EXPECTED TEST DATA
	MOVB	AC1
	JMPSUB	WRSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS IN XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE WRITE,,PNT
	CHKTRM	TST,RH20 ERROR DETECTED DURING WRITE XFER
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	JMPSUB	CHKDAT			;GO CHECK THE DATA RECEIVED AT CHANNEL BUS
	JMPZ	.+2			;JUMP IF NO ERRORS IN DATA
	ERRORD	TST,DATA ERROR IN WRITTEN DATA
	REPEAT	TST
	TEST	272,TEST READ 6-BIT ASCII FORWARD FORMATTING
;*READ FOUR 18-BIT WORDS (TWELVE BYTES)

	LDBR	^D46			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D12			;SET BYTE CNT
	MOVB	AC2
	LDBR	RASC6F			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	JMPSUB	RDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	JMPSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	273,TEST READ 6-BIT ASCII REVERSE FORMATTING 1
;*READ FOUR 18-BIT WORDS (SEVEN DATA BYTES WITH FIVE ZERO BYTES PRE-PADDED)

	LDBR	^D69			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D7			;SET BYTE CNT
	MOVB	AC2
	LDBR	RAS6R1			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	JMPSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	JMPSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	274,TEST READ 6-BIT ASCII REVERSE FORMATTING 2
;*READ FOUR 18-BIT WORDS (EIGHT DATA BYTES WITH FOUR ZERO BYTES PRE-PADDED)

	LDBR	^D70			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D8			;SET BYTE CNT
	MOVB	AC2
	LDBR	RAS6R2			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	JMPSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	JMPSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	275,TEST READ 6-BIT ASCII REVERSE FORMATTING 3
;*READ FOUR 18-BIT WORDS (NINE DATA BYTES WITH THREE ZERO BYTES PRE-PADDED)

	LDBR	^D71			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D9			;SET BYTE CNT
	MOVB	AC2
	LDBR	RAS6R3			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	JMPSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	JMPSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	276,TEST READ 6-BIT ASCII REVERSE FORMATTING 4
;*READ FOUR 18-BIT WORDS (TEN DATA BYTES WITH TWO ZERO BYTES PRE-PADDED)

	LDBR	^D72			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D10			;SET BYTE CNT
	MOVB	AC2
	LDBR	RAS6R4			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	JMPSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	JMPSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	TEST	277,TEST READ 6-BIT ASCII REVERSE FORMATTING 5
;*READ FOUR 18-BIT WORDS (ELEVEN DATA BYTES WITH ONE ZERO BYTE PRE-PADDED)

	LDBR	^D73			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D11			;SET BYTE CNT
	MOVB	AC2
	LDBR	RAS6R5			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	JMPSUB	RRDSEQ			;GO RUN THE PROGRAM
	JMPZ	.+2			;JUMP IF NO ERRORS DURING XFER
	ERROR	TST,"SLVE REQ" DIDN'T CLEAR DURING THE READ,,PNT
	JMPSUB	MEXWAT			;GO WAIT FOR "MSTR END XFER"
	JMPZ	.+2			;JUMP IF IT WAS RECEIVED
	ERROR	TST,NO "MSTR END XFER" AFTER COMPLETING READ
	JMPSUB	DPPAR			;GO CHECK FOR DATA PATH BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN HIGH SPEED DATA PATH
	JMPSUB	CBPAR			;GO CHECK FOR CHANNEL BUS BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN CHANNEL BUS INTERFACE
	JMPSUB	MBPAR			;GO CHECK FOR MASSBUS INTERFACE BOARD PAR ERRS
	JMPZ	.+2			;JUMP IF NONE WERE FOUND
	ERROR	TST,"DP PE" FLAG SET IN MASSBUS INTERFACE
	CHKTRM	TST,DATA ERROR IN READ DATA
	REPEAT	TST
	JMP	END			;JUMP AROUND SUBROUTINES

INITL:	LDBR	INIT+22			;SET INIT
	MOVB	IOSEL
	LDBR	22			;CLR INIT & SELECT DP
	MOVB	IOSEL
	RETURN

;*THE FOLLOWING IS THE SEQUENCE OF ACTIONS INVOLVED IN PERFORMING THE
;*READ TRANSFER TESTS.

;*DO A MICROBUS INIT TO INSURE A KNOWN STARTING STATE.
;*ENABLE THE BASE CLOCK AND CLEAR "DX HIGH SPEED", THIS CLEARS CLOCK PHASES.
;*SETUP DATA IN GP REGS NEEDED BY HOST.
;*ZERO THE BYTE COUNTER AND THE MASSBUS COUNTER.
;*SETUP CB BOARD LOOPING.
;*SET "MSTR END XFER ON FMTR END XFER" BIT.
;*LOAD THE ROM PROGRAM ADDRESS.
;*SETUP THE RH20 FOR A READ XFER.
;*SET "OCC" AND CLEAR "DATA TO DEVICE" IN THE MASSBUS INTERFACE.
;*WAIT FOR "RUN" TO SET IN THE MASSBUS INTERFACE.
;*DO A HS DP INIT.
;*SET "DX HIGH SPEED".
;*SET THE "START" BIT IN THE MASSBUS INTERFACE.
;*CLOCK THE 8-BIT BYTES FROM THE CB BOARD ONTO THE SLVE DATA LINES.
;*AFTER EACH BYTE, WAIT FOR "SLVE REQ" TO CLEAR - REPORT ERROR IF IT DOESN'T.
;*AFTER ALL BYTES ARE XFERED, SET "SLVE END XFER".
;*WAIT FOR "MSTR END XFER" TO SET - REPORT ERROR IF IT DOESN'T.
;*WHEN IT SETS, END THE XFER.
;*SIGNAL THE HOST TO CHECK CORRECTNESS OF THE DATA IT RECEIVED.

RRDSEQ:	LDBR	-1			;SET READ REVERSE FLAG
	MOVB	AC5
	JMP	RD
RDSEQ:	LDBR	0			;SET READ FORWARD FLAG
	MOVB	AC5
RD:	JMPSUB	INITL			;MAKE SURE "MSTR REQ" IS CLEARED
	LDBR	BCLKEN			;CLEAR CLOCK PHASES
	MOVB	REG1
	LDBR	11			;SELECT MASSBUS INTERFACE
	MOVB	IOSEL
	MOV	AC0,BR			;SETUP DATA PATTERN NUMBER
	MOVB	MPGP10
	LDBR	1			;SETUP BLOCK CNT=1
	MOVB	MPGP11
	MOVB	MPGP6			;SETUP ADDITIONAL PNT ROUTINE NUMBER
	MOV	AC4,BR			;COMPUTE AND STORE THE
	SHR				;36-BIT WORD CNT
	MOVB	MPGP2
	LDBR	0			;CLEAR HI ORDER WRD CNT BITS
	MOVB	MPGP3
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	LDBR	0
	MOVB	BCLO			;CLEAR THE BC
	MOVB	BCHI
	MOVB	MCLO			;CLEAR THE MC
	MOVB	MCHI
	JMPSUB	CBLOOP			;SETUP CB BOARD LOOPING
	LDBR	MEONFE			;CLEAR ROM ADDR BIT 8
	MOVB	REG2			;AND SET "MEX ON FEX"
	MOV	AC3,BR			;SETUP THE ROM PROGRAM ADDRESS
	MOVB	DFRMAD
	MOVB	REG0			;CLEAR FLAGS
	DECR	AC2			;SET LOOP CNT=BYTE CNT MINUS 1
;SETUP A READ XFER
	MOV	AC5			;CHECK FOR REVERSE
	JMPZ	RDREV			;JUMP IF A READ REVERSE
	READ				;SETUP FOR A READ FORWARD
	JMP	.+2
RDREV:	READB				;SETUP FOR READ REVERSE
	LDBR	11			;SELECT MASSBUS INTERFACE
	MOVB	IOSEL
	LDBR	OCC			;SET MASK OF BITS TO BE SET
	MOVB	MPSCR1			;AND WRITE IT TO STATUS REG
	JMPSUB	RUNWAT			;WAIT FOR "RUN" TO SET
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	MOVB	HSDPIN			;DO HS DP INIT
	LDBR	DXHISP+BCLKEN		;SET "DX HIGH SPEED"
	MOVB	REG1
	JMPSUB	STRMB			;GO START THE XFER
	LDMAR	TSTDAT			;SET MAR TO POINT TO TEST DATA
RDLP:	JMPSUB	CLKDAT			;GO CLOCK DATA ONTO SLVE LINES
	JMPSUB	SLVWT			;GO WAIT FOR "SLVE REQ" TO CLEAR
	JMPZ	OKRD			;JUMP IF IT CLEARED
	JMPSUB	SETDAT			;SETUP LOOP CNT VALUE FOR HOST
	JMPSUB	ABTXFR			;ABORT THE XFER
	RETURN				;GIVE ERROR RETURN
OKRD:	DECR	AC2,I			;DEC LOOP CNT AND INC DATA ADDR
	JMPZ	.+2			;JUMP IF ALL DATA SENT
	JMP	RDLP			;ELSE, CONTINUE
;SET "SLVE END XFER"
	LDBR	33			;SELECT	CHANNEL BUS INTERFACE
	MOVB	IOSEL
	LDBR	LOOPEN			;SET LOOP ENABLE
	MOVB	CSR1
	LDBR	STAINL			;SET "STA IN"
	MOVB	TOR0
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	RETURN	-1			;GIVE NO ERROR RETURN

MEXWAT:	LDBR	0			;CLEAR WAIT CNT
	MOVB	AC0
ENDWAT:	DATI	REG3,BR			;READ REG 3
	SHR				;RIGHT ADJUST "NOT MSTR END XFER"
	SHR
	JMPB0	.+2			;JUMP IF "MSTR END XFER"=0
	JMP	DONERD			;JUMP IF READ IS FINISHED
	INCR	AC0			;INC WAIT CNT
	JMPC	.+2			;JUMP IF TIMED OUT
	JMP	ENDWAT			;ELSE, KEEP WAITING
	JMPSUB	ABTXFR			;ABORT THE XFER
	RETURN				;GIVE ERROR RETURN

DONERD:	JMPSUB	ABTXFR			;END THE XFER
	LDBR	33			;SELECT CHANNEL BUS INTERFACE
	MOVB	IOSEL
	LDBR	0			;CLEAR LOOP ENABLE
	MOVB	CSR1
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	RETURN	-1			;GIVE NO ERROR RETURN


;*THE FOLLOWING IS THE SEQUENCE OF ACTIONS INVOLVED IN PERFORMING THE
;*WRITE TRANSFER TESTS.

;*DO A MICROBUS INIT TO INSURE A KNOWN STARTING STATE.
;*ENABLE THE BASE CLOCK AND CLEAR "DX HIGH SPEED", THIS CLEARS CLOCK PHASES.
;*SETUP DATA IN GP REGS NEEDED BY HOST.
;*LOAD THE BYTE COUNTER AND THE MASSBUS COUNTER.
;*SETUP CB BOARD LOOPING.
;*SET "MSTR END XFER ON MC OVERFLOW" AND "SLVE END XFER ON BC OVERFLOW".
;*LOAD THE ROM PROGRAM ADDRESS.
;*SETUP THE RH20 FOR A WRITE XFER.
;*SET "OCC" AND "DATA TO DEVICE" IN THE MASSBUS INTERFACE.
;*WAIT FOR "RUN" TO SET IN THE MASSBUS INTERFACE.
;*DO A HS DP INIT.
;*SET "DX HIGH SPEED".
;*SET THE "START" BIT IN THE MASSBUS INTERFACE.
;*SET "SLVE REQ" ON THE CB BOARD.
;*WAIT FOR IT TO CLEAR - REPORT ERROR IF IT DOESN'T.
;*STORE THE RECEIVED 8-BIT BYTE IN MEMORY.

;*CHECK IF "SLVE END XFER" IS SET.
;*IF NOT, REPEAT THE PREVIOUS 4 STEPS.
;*IF IT IS SET, END THE XFER AND CHECK THAT THE RECEIVED DATA IS CORRECT.

WRSEQ:	JMPSUB	INITL			;MAKE SURE "MSTR REQ" IS CLEARED
	LDBR	BCLKEN			;CLEAR CLOCK PHASES
	MOVB	REG1
	LDBR	11			;SELECT MASSBUS INTERFACE
	MOVB	IOSEL
	MOV	AC0,BR			;SETUP DATA PATTERN NUMBER
	MOVB	MPGP10
	LDBR	1			;SETUP BLOCK CNT=1
	MOVB	MPGP11
	MOVB	MPGP6			;SET ADDITIONAL PNT ROUTINE NUMBER
	MOV	AC4,BR			;COMPUTE AND STORE THE
	SHR				;36-BIT WORD CNT
	MOVB	MPGP2
	LDBR	0			;CLEAR HI ORDER WRD CNT BITS
	MOVB	MPGP3
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	LDBR	ENDSTR-STORIT		;COMPUTE SIZE OF SCATCH AREA MINUS 1
	MOVB	AC0
	LDMAR	STORIT			;SET SCRATCH AREA ADDRESS
	LDBR	0			;CLEAR BR
CLRLP:	MOVB	MEM			;ZERO MEM LOC
	DECR	AC0,I			;DEC LOOP CNT AND INC MEM ADDR
	JMPZ	.+2			;JUMP IF TABLE ALL CLEARED
	JMP	CLRLP			;ELSE, CONTINUE
	LDBR	0
	MOVB	AC0			;SETUP A ZERO REG
	MOV	AC4,BR			;MOVE WORD CNT TO BR
	TSB	AC0,BR			;COMPUTE 2'S COMP OF 18-BIT WORD CNT
	MOVB	MCLO			;PUT IT IN MC
	MOV	AC2,BR			;MOVE THE BYTE CNT TO BR
	TSB	AC0,BR			;COMPUTE 2'S COMP OF BYTE CNT
	MOVB	BCLO			;PUT IT IN BC
	LDBR	-1			;PUT ONES INTO HIGH ORDER MC AND BC
	MOVB	MCHI
	MOVB	BCHI
	JMPSUB	CBLOOP			;SETUP CB BOARD LOOPING
	LDBR	SEBCOV+MEMCOV		;CLEAR ROM ADDR BIT 8 AND SET
	MOVB	REG2			;"SEX ON BC OVRFLW" & "MEX ON MC OVRFLW"
	MOV	AC3,BR			;SETUP THE ROM PROGRAM ADDRESS
	MOVB	DFRMAD
	MOVB	REG0			;CLEAR FLAGS
;SETUP A WRITE XFER
	WRITE				;SETUP FOR A DEVICE WRITE
	LDBR	11			;SELECT MASSBUS INTERFACE
	MOVB	IOSEL
	LDBR	DTD+OCC			;SET MASK OF BITS TO BE SET
	MOVB	MPSCR1			;AND WRITE IT TO STATUS REG
	JMPSUB	RUNWAT			;WAIT FOR "RUN" TO SET
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	MOVB	HSDPIN			;DO HS DP INIT
	LDBR	DXHISP+BCLKEN		;SET "DX HIGH SPEED"
	MOVB	REG1
	JMPSUB	STRMB			;GO START THE XFER
	LDMAR	STORIT			;SET MAR TO POINT TO STORAGE AREA
WRLP:	JMPSUB	SETSLV			;GO SET SLVE REQ ON CB BOARD
	JMPSUB	SLVWT			;GO WAIT FOR "SLVE REQ" TO CLEAR
	JMPZ	OKWR			;JUMP IF IT CLEARED
	JMPSUB	SETDAT			;SETUP LOOP CNT VALUE FOR HOST
	JMPSUB	ABTXFR			;ABORT THE XFER
	RETURN				;GIVE ERROR RETURN
OKWR:	LDBR	33			;SELECT CHANNEL BUS INTERFACE
	MOVB	IOSEL
	DATI	DRLO,MEM,I		;READ DATA INTO MEMORY
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	DATI	REG3,BR			;READ REG 17
	SHR				;MOVE "NOT SLVE END XFER" INTO BIT 0
	JMPB0	WRLP			;JUMP IF NO SLVE END XFER YET
	JMPSUB	ABTXFR			;END THE XFER
	LDBR	33			;SELECT CHANNEL BUS INTERFACE
	MOVB	IOSEL
	LDBR	0			;CLEAR LOOP ENABLE
	MOVB	CSR1
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	RETURN	-1			;GIVE NO ERROR RETURN

CHKDAT:	LDBR	STORIT			;SETUP ACTUAL DATA ADDR IN AC2
	MOVB	AC3
	MOV	AC2,BR			;PUT BYTE CNT IN AC0
	MOVB	AC0
	MOV	AC1,BR			;PUT CORRECT ADDR IN AC5
	MOVB	AC5
	DECR	AC2			;SET LOOP CNT=BYTE CNT MINUS 1
CKLOOP:	MOV	AC3,MAR			;SET MAR TO ACTUAL DATA
	MOVMEM	AC4			;PUT ACTUAL DATA IN AC4
	MOV	AC1,MAR			;SET MAR TO CORRECT DATA ADDR
	OSM	AC4			;CHECK FOR CORRECT DATA
	JMPZ	CONCHK			;JUMP IF CORRECT
	MOV	AC5,BR			;MOVE CORRECT DATA ADDR TO AC1
	MOVB	AC1
	LDBR	STORIT			;PUT ACTUAL DATA ADDR IN AC2
	MOVB	AC2
	RETURN				;GIVE ERROR RETURN
CONCHK:	INCR	AC3			;INC ACTUAL DATA ADDR
	INCR	AC1			;INC CORRECT DATA ADDR
	DECR	AC2			;DEC LOOP CNT
	JMPZ	.+2			;JUMP IF DONE
	JMP	CKLOOP			;ELSE, CONTINUE

	RETURN	-1			;GIVE NO ERROR RETURN


SLVWT:	LDBR	0			;CLEAR WAIT COUNT
	MOVB	AC0			;STORE IN AC0
WTLP1:	DATI	REG1,AC5		;READ REG 1 FOR "SLVE REQ"
	SHL	AC5,BR			;LEFT ADJUST "SLVE REQ"
	JMPB7	.+2			;JUMP IF STILL SET
	RETURN	-1			;GIVE "SLVE REQ" CLEARED RETURN
	INCR	AC0			;INC WAIT COUNT
	JMPC	.+2			;JUMP IF TIMED OUT
	JMP	WTLP1			;KEEP WAITING
	RETURN				;GIVE TIMEOUT RETURN

SETDAT:	LDBR	11			;SELECT MASSBUS INTERFACE
	MOVB	IOSEL
	MOV	AC2,BR			;PUT LOOP CNT INTO BR
	MOVB	MPGP4			;STORE FOR ERROR LOOPING CONTROL
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	RETURN

RUNWAT:	LDBR	0			;CLEAR WAIT CNT
	MOVB	AC0
RUNLP:	INCR	AC0			;INCREMENT WAIT CNT
	JMPC	RUNBCK			;JUMP IF TIMED OUT, TEST WILL FAIL
	DATI	MPSCR0,BR		;CHECK "RUN" BIT
	JMPB0	.+2			;JUMP IF SET
	JMP	RUNLP			;ELSE, KEEP WAITING
RUNBCK:	RETURN

STRMB:	LDBR	11			;SELECT MASSBUS INTERFACE
	MOVB	IOSEL
	DATI	MPSCR1,AC0		;READ PRESENT STATE OF STATUS
	LDBR	OCC+DTD			;SET MASK OF BITS TO KEEP
	LANDBR	AC0
	LDBR	START			;SET MASK OF START BIT
	LORB	AC0,BR			;SET IT INTO PRESENT STATUS
	MOVB	MPSCR1
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	RETURN

ABTXFR:	LDBR	11			;SELECT MASSBUS INTERFACE
	MOVB	IOSEL
	LDBR	EBL			;SET MASK OF BIT TO BE SET
	MOVB	MPSCR1			;AND WRITE IT TO STATUS REG
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	RETURN

CBLOOP:	LDBR	33			;SELECT CHANNEL BUS INTERFACE
	MOVB	IOSEL
	LDBR	LOOPEN+EVPAR+CHANL	;SET LOOP ENABLE AND EVEN PARITY
	MOVB	CSR1			;AND CHANNEL MODE
	LDBR	0			;INSURE "STA IN" IS CLEAR
	MOVB	TOR0
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	RETURN

SETSLV:	LDBR	33			;SELECT CHANNEL BUS INTERFACE
	MOVB	IOSEL
	JMP	CLKIT1			;GO GENERATE "SLVE REQ"
CLKDAT:	LDBR	33			;SELECT CHANNEL BUS INTERFACE
	MOVB	IOSEL
	LDBR	0			;COMPUTE THE COMPLEMENT OF MEM CONTENTS
	MOVB	AC0
	LORCM	AC0,BR			;PUT IT IN BR
CLKIT:	MOVB	BORLO			;LOAD DATA INTO BOR
CLKIT1:	LDBR	SRVINL			;SET "SRV IN"
	MOVB	TOR1
	LDBR	0			;CLEAR "SRV IN"
	MOVB	TOR1
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	RETURN

DPPAR:	DATI	REG0,BR			;READ FLAG REG
	SHR				;RIGHT ADJUST "DP PE" FLAG
	JMPB0	.+2			;JUMP IF IT SET
	RETURN	-1			;GIVE NO ERROR RETURN
	RETURN				;GIVE ERROR RETURN

CBPAR:	LDBR	33			;SELECT MASSBUS INTERFACE
	MOVB	IOSEL
	DATI	CSR0,AC0		;READ FLAG REG
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	MOV	AC0,BR
	SHR				;RIGHT ADJUST "DP PE" FLAG
	JMPB0	.+2			;JUMP IF IT SET
	RETURN	-1			;GIVE NO ERROR RETURN
	RETURN				;GIVE ERROR RETURN
MBPAR:	LDBR	11			;SELECT MASSBUS INTERFACE
	MOVB	IOSEL
	DATI	MPDB2,AC0		;READ BUFFER REG
	LDBR	22			;SELECT DATA PATH
	MOVB	IOSEL
	SHL	AC0,BR			;MOVE "DP PE" FLAG TO BIT 4
	JMPB4	.+2			;JUMP IF IT SET
	RETURN	-1			;GIVE NO ERROR RETURN
	RETURN				;GIVE ERROR RETURN
END:	.ECRAM
	.MEM
	0				;FIRST MEM LOC IS FOR SCRATCH
STORIT:	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
	0
ENDSTR:	0
TSTDAT:	1
	-1
	2
	-2
	3
	-3
	4
	-4
	5
	-5
	6
	-6
	7
	-7
	^D8
	-^D8
	^D9
	-^D9
	^D10
	-^D10
	^D11
	-^D11
	^D12
	-^D12
	^D13
	-^D13
CRDMP:	1
	-1
	2
	-2
	3
	-3
	4
	-4
	5
	13
ASCII6:	1
	77
	2
	76
	3
	75
	4
	74
	5
	73
	6
	72
ASCI71:	1
	177
	2
	176
	3
	175
	4
	174
	5
	373
ASCI72:	1
	177
	2
	176
	3
	175
	4
	174
	5
	173
.END
END:	.ECRAM
	.MEM
	0				;FIRST MEM LOC IS FOR SCRATCH
UBPAR:	0
	56
	127
	144
	272
	311
	375
SCDATD:	1
	2
	4
	10
	20
	40
	100
SCDATU:	1
	3
	7
	17
	37
	77
DNDATA:	17
	160
UPDATA:	77
	137
	157
	160
CLKPHS:	100
	300
	200
	0
FLTZ1:	2
	1
FLTZ2:	176
	175
	173
	167
	157
	137
	77
	1
	2
	4
	10
	20
	40
	100
FLTZ3:	376
	375
	373
	367
	357
	341
	342
	344
	350
	360
FLTZ:	376
	375
	373
	367
	357
	337
	277
	177
	1
	2
	4
	10
	20
	40
	100
	200

CNTDAT:	0
	1
	0
	2
	0
	4
	0
	10
	0
	20
	0
	40
	0
	100
	0
	200
	1
	0
	2
	0
	4
	0
	10
	0
	20
	0
	40
	0
	100
	0
	200
	0
	1
	17
	1
	360
	37
	17
	37
	360
	20
	377
CNTCOR:	0
	0
	0
	1
	0
	3
	0
	7
	0
	17
	0
	37
	0
	77
	0
	177
	0
	377
	1
	377
	3
	377
	7
	377
	17
	377
	37
	377
	77
	377
	177
	377
	1
	16
	1
	357
	37
	16
	37
	357
	20
	377
	0				;FIRST MEM LOC IS FOR SCRATCH
CLKPHF:	60
	40
	0
CNTDAT:	0
	1
	0
	2
	0
	4
	0
	10
	0
	20
	0
	40
	0
	100
	0
	200
	1
	0
	2
	0
	4
	0
	10
	0
	20
	0
	40
	0
	100
	0
	200
	0
	1
	17
	1
	360
	37
	17
	37
	360
	20
	377
CNTCOR:	0
	0
	0
	1
	0
	3
	0
	7
	0
	17
	0
	37
	0
	77
	0
	177
	0
	377
	1
	377
	3
	377
	7
	377
	17
	377
	37
	377
	77
	377
	177
	377
	1
	16
	1
	357
	37
	16
	37
	357
	20
	377
RAMPAT:	1
	0
	0
	2
	0
	0
	4
	0
	0
	10
	0
	0
	20
	0
	0
	40
	0
	0
	100
	0
	0
	200
	0
	0
	0
	1
	0
	0
	2
	0
	0
	4
	0
	0
	10
	0
	0
	20
	0
	0
	40
	0
	0
	100
	0
	0
	200
	0
	0
	0
	1
	0
	0
	2
	0
	0
	376
	377
	3
	375
	377
	3
	373
	377
	3
	367
	377
	3
	357
	377
	3
	337
	377
	3
	277
	377
	3
	177
	377
	3
	377
	376
	3
	377
	375
	3
	377
	373
	3
	377
	367
	3
	377
	357
	3
	377
	337
	3
	377
	277
	3
	377
	177
	3
	377
	377
	2
	377
	377
	1
RAMADR:	0
	1
	2
	4
	10
	20
	40
	100
ROMDAT:	0
.END
END:	.ECRAM
.MEM
	0				;FIRST MEM LOC IS FOR SCRATCH
CLKPHF:	60
	40
	0
CNTDAT:	0
	1
	0
	2
	0
	4
	0
	10
	0
	20
	0
	40
	0
	100
	0
	200
	1
	0
	2
	0
	4
	0
	10
	0
	20
	0
	40
	0
	100
	0
	200
	0
	1
	17
	1
	360
	37
	17
	37
	360
	20
	377
CNTCOR:	0
	0
	0
	1
	0
	3
	0
	7
	0
	17
	0
	37
	0
	77
	0
	177
	0
	377
	1
	377
	3
	377
	7
	377
	17
	377
	37
	377
	77
	377
	177
	377
	1
	16
	1
	357
	37
	16
	37
	357
	20
	377
RAMPAT:	1
	0
	0
	2
	0
	0
	4
	0
	0
	10
	0
	0
	20
	0
	0
	40
	0
	0
	100
	0
	0
	200
	0
	0
	0
	1
	0
	0
	2
	0
	0
	4
	0
	0
	10
	0
	0
	20
	0
	0
	40
	0
	0
	100
	0
	0
	200
	0
	0
	0
	1
	0
	0
	2
	0
	0
	376
	377
	3
	375
	377
	3
	373
	377
	3
	367
	377
	3
	357
	377
	3
	337
	377
	3
	277
	377
	3
	177
	377
	3
	377
	376
	3
	377
	375
	3
	377
	373
	3
	377
	367
	3
	377
	357
	3
	377
	337
	3
	377
	277
	3
	377
	177
	3
	377
	377
	2
	377
	377
	1
RAMADR:	0
	1
	2
	4
	10
	20
	40
	100
ROMDAT:	0
.END