Google
 

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

DEFTST	MCODE7
	TEST	278,TEST READ 6-BIT ASCII REVERSE FORMATTING 6
;*READ FOUR 18-BIT WORDS (TWELVE DATA BYTES WITH NO PRE-PADDING)

	LDBR	^D74			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D12			;SET BYTE CNT
	MOVB	AC2
	LDBR	RAS6R6			;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	279,TEST WRITE 7-BIT ASCII MOD 1 FORMATTING
;*WRITE FOUR 18-BIT WORDS (TEN BYTES)

	LDBR	^D47			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D10			;SET BYTE CNT
	MOVB	AC2
	LDBR	WAS71			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	LDBR	ASCI71			;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	280,TEST READ 7-BIT ASCII MOD 1 FORWARD FORMATTING
;*READ FOUR 18-BIT WORDS (TEN BYTES)

	LDBR	^D47			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D10			;SET BYTE CNT
	MOVB	AC2
	LDBR	RAS71F			;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	281,TEST READ 7-BIT ASCII MOD 1 REVERSE FORMATTING 1
;*READ FOUR 18-BIT WORDS (SIX DATA BYTES WITH FOUR ZERO BYTES PRE-PADDED)

	LDBR	^D75			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D6			;SET BYTE CNT
	MOVB	AC2
	LDBR	RA71R1			;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	282,TEST READ 7-BIT ASCII MOD 1 REVERSE FORMATTING 2
;*READ FOUR 18-BIT WORDS (SEVEN DATA BYTES WITH THREE ZERO BYTES PRE-PADDED)

	LDBR	^D76			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D7			;SET BYTE CNT
	MOVB	AC2
	LDBR	RA71R2			;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	283,TEST READ 7-BIT ASCII MOD 1 REVERSE FORMATTING 3
;*READ FOUR 18-BIT WORDS (EIGHT DATA BYTES WITH TWO ZERO BYTES PRE-PADDED)

	LDBR	^D77			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D8			;SET BYTE CNT
	MOVB	AC2
	LDBR	RA71R3			;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	284,TEST READ 7-BIT ASCII MOD 1 REVERSE FORMATTING 4
;*READ FOUR 18-BIT WORDS (NINE DATA BYTES WITH ONE ZERO BYTE PRE-PADDED)

	LDBR	^D78			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D9			;SET BYTE CNT
	MOVB	AC2
	LDBR	RA71R4			;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	285,TEST READ 7-BIT ASCII MOD 1 REVERSE FORMATTING 5
;*READ FOUR 18-BIT WORDS (TEN DATA BYTES WITH NO PRE-PADDING)

	LDBR	^D79			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D10			;SET BYTE CNT
	MOVB	AC2
	LDBR	RA71R5			;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	286,TEST WRITE 7-BIT ASCII MOD 2 FORMATTING
;*WRITE FOUR 18-BIT WORDS (TEN BYTES)

	LDBR	^D48			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D10			;SET BYTE CNT
	MOVB	AC2
	LDBR	WAS72			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	LDBR	ASCI72			;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	287,TEST READ 7-BIT ASCII MOD 2 FORWARD FORMATTING
;*READ FOUR 18-BIT WORDS (TEN BYTES)

	LDBR	^D48			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D10			;SET BYTE CNT
	MOVB	AC2
	LDBR	RAS72F			;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	288,TEST READ 7-BIT ASCII MOD 2 REVERSE FORMATTING 1
;*READ FOUR 18-BIT WORDS (SIX DATA BYTES WITH FOUR ZERO BYTES PRE-PADDED)

	LDBR	^D80			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D6			;SET BYTE CNT
	MOVB	AC2
	LDBR	RA72R1			;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	289,TEST READ 7-BIT ASCII MOD 2 REVERSE FORMATTING 2
;*READ FOUR 18-BIT WORDS (SEVEN DATA BYTES WITH THREE ZERO BYTES PRE-PADDED)

	LDBR	^D81			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D7			;SET BYTE CNT
	MOVB	AC2
	LDBR	RA72R2			;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	290,TEST READ 7-BIT ASCII MOD 2 REVERSE FORMATTING 3
;*READ FOUR 18-BIT WORDS (EIGHT DATA BYTES WITH TWO ZERO BYTES PRE-PADDED)

	LDBR	^D82			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D8			;SET BYTE CNT
	MOVB	AC2
	LDBR	RA72R3			;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	291,TEST READ 7-BIT ASCII MOD 2 REVERSE FORMATTING 4
;*READ FOUR 18-BIT WORDS (NINE DATA BYTES WITH ONE ZERO BYTE PRE-PADDED)

	LDBR	^D83			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D9			;SET BYTE CNT
	MOVB	AC2
	LDBR	RA72R4			;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	292,TEST READ 7-BIT ASCII MOD 2 REVERSE FORMATTING 5
;*READ FOUR 18-BIT WORDS (TEN DATA BYTES WITH NO PRE-PADDING)

	LDBR	^D84			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D10			;SET BYTE CNT
	MOVB	AC2
	LDBR	RA72R5			;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	293,TEST WRITE 11-MOD 1 FORMATTING
;*WRITE TWO 18-BIT WORDS (FOUR BYTES)

	LDBR	^D49			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	2			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D4			;SET BYTE CNT
	MOVB	AC2
	LDBR	WEM1			;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
	JUMP	NXTBNK			;JUMP TO NEXT BANK OF CRAM
	.LOC	2000
NXTBNK:
	TEST	294,TEST READ 11-MOD 1 FORWARD FORMATTING
;*READ TWO 18-BIT WORDS (FOUR BYTES)

	LDBR	^D49			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	2			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D4			;SET BYTE CNT
	MOVB	AC2
	LDBR	REM1F			;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	295,TEST READ 11-MOD 1 REVERSE FORMATTING 1
;*READ TWO 18-BIT WORDS (THREE DATA BYTES AND ONE ZERO BYTE PRE-PADDED)

	LDBR	^D85			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	2			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D3			;SET BYTE CNT
	MOVB	AC2
	LDBR	REM1R1			;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	296,TEST READ 11-MOD 1 REVERSE FORMATTING 2
;*READ TWO 18-BIT WORDS (FOUR DATA BYTES WITH NO PRE-PADDING)

	LDBR	^D86			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	2			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D4			;SET BYTE CNT
	MOVB	AC2
	LDBR	REM1R2			;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	297,TEST WRITE 11-MOD 2 FORMATTING
;*WRITE TWO 18-BIT WORDS (FOUR BYTES)

	LDBR	^D50			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	2			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D4			;SET BYTE CNT
	MOVB	AC2
	LDBR	WEM2			;SET ROM PROGRAM START ADDRESS
	MOVB	AC3
	LDBR	TSTDAT			;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	298,TEST READ 11-MOD 2 FORWARD FORMATTING
;*READ TWO 18-BIT WORDS (FOUR BYTES)

	LDBR	^D50			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	2			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D4			;SET BYTE CNT
	MOVB	AC2
	LDBR	REM2F			;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	299,TEST READ 11-MOD 2 REVERSE FORMATTING 1
;*READ TWO 18-BIT WORDS (THREE DATA BYTES AND ONE ZERO BYTE PRE-PADDED)

	LDBR	^D87			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	2			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D3			;SET BYTE CNT
	MOVB	AC2
	LDBR	REM2R1			;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	300,TEST READ 11-MOD 2 REVERSE FORMATTING 2
;*READ TWO 18-BIT WORDS (FOUR DATA BYTES WITH NO PRE-PADDING)

	LDBR	^D88			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	2			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D4			;SET BYTE CNT
	MOVB	AC2
	LDBR	REM2R2			;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	301,TEST WRITE COBOL EBCDIC FORMATTING
;*WRITE FOUR 18-BIT WORDS (EIGHT BYTES)

	LDBR	^D89			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D8			;SET BYTE CNT
	MOVB	AC2
	LDBR	WCOBOL			;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	302,TEST READ COBOL EBCDIC FORWARD FORMATTING
;*READ FOUR 18-BIT WORDS (EIGHT BYTES)

	LDBR	^D89			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D8			;SET BYTE CNT
	MOVB	AC2
	LDBR	RCOBLF			;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	303,TEST READ COBOL EBCDIC REVERSE FORMATTING 1
;*READ FOUR 18-BIT WORDS (FIVE DATA BYTES WITH THREE ZERO BYTES PRE-PADDED)

	LDBR	^D90			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D5			;SET BYTE CNT
	MOVB	AC2
	LDBR	RCBLR1			;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	304,TEST READ COBOL EBCDIC REVERSE FORMATTING 2
;*READ FOUR 18-BIT WORDS (SIX DATA BYTES WITH TWO ZERO BYTES PRE-PADDED)

	LDBR	^D91			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D6			;SET BYTE CNT
	MOVB	AC2
	LDBR	RCBLR2			;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	305,TEST READ COBOL EBCDIC REVERSE FORMATTING 3
;*READ FOUR 18-BIT WORDS (SEVEN DATA BYTES WITH ONE ZERO BYTES PRE-PADDED)

	LDBR	^D92			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D7			;SET BYTE CNT
	MOVB	AC2
	LDBR	RCBLR3			;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	306,TEST READ COBOL EBCDIC REVERSE FORMATTING 4
;*READ FOUR 18-BIT WORDS (EIGHT DATA BYTES WITH NO PRE-PADDING)

	LDBR	^D93			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D8			;SET BYTE CNT
	MOVB	AC2
	LDBR	RCBLR4			;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	307,TEST READ HIGH DENSITY FORWARD FORMATTING 1 BYTE
;*READ FOUR 18-BIT WORDS (ONE DATA BYTE AND EIGHT ZERO BYTES POST-PADDED)

	LDBR	^D94			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D1			;SET BYTE CNT
	MOVB	AC2
	LDBR	RHIDNF			;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	308,TEST READ INDUSTRY COMPATIBLE FORWARD FORMATTING 5 BYTE
;*READ FOUR 18-BIT WORDS (FIVE DATA BYTES WITH THREE ZERO BYTES POST-PADDED)

	LDBR	^D95			;SET DATA PATTERN NUMBER
	MOVB	AC0
	LDBR	4			;SET 18-BIT WORD CNT
	MOVB	AC4
	LDBR	^D5			;SET BYTE CNT
	MOVB	AC2
	LDBR	RINCMF			;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
	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 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			;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	ENDSTR-STORIT		;COMPUTE SIZE OF SCATCH AREA MINUS 1
	MOVB	AC0
	LDMAR	STORIT			;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			;SAVE BYTE CNT IN AC0
	MOVB	AC0
	MOV	AC1,BR			;SAVE CORRECT DATA 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			;PUT CORRECT DATA ADDR IN 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
SHFTIT:	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
	JMP	SHFTIT			;GO CHECK STATE OF PE FLAG

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