File:  [Power 6/32 Unix Tahoe 4.2BSD] / cci / d / entry / or_l3.s
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Sun Jul 28 12:24:19 2019 UTC (7 years ago) by root
Branches: bsd, MAIN
CVS tags: v12b, v121, HEAD
Power 6/32 Unix version 1.2b




/*	ORL3 (or long 3 operand) test					*/

/*Test name = orl3							*/
/*Description =								*/
/*	This test checks 'orl3' instruction as follows:		*/
/*	source  	mask		destination   Z N C V(flags)    */
/*	___________	____		___________   _____________	*/
/*	0xaaaaaaaa	0xaaaaaaaa	0x7fffffaa    0 0 1 0   	*/
/*	0xaaaaaaaa	0x55555555	0x7fffffff    0 0 1 0   	*/
/*	0x00000000	0x00000000	0x00000000    1 0 x 0		*/
/*	R		R		R		---		*/
/*	M		M		M		---		*/
/*	R		M		M		---		*/
/*	M		R		R		---		*/
/*									*/
/*									*/
/*									*/
/*	Constants							*/
/*									*/
	.set	MASK1B3,0xaa
	.set	MASK1W3,0xaaaa
	.set	MASK1L3,0xaaaaaaaa
	.set	MASK2B3,0x55
	.set	MASK2W3,0x5555
	.set	MASK2L3,0x55555555
	.set	MASK3B3,0x00
	.set	MASK3W3,0x0000
	.set	MASK3L3,0x00000000
	.set	SOURCE1B3,0xaa
	.set	SOURCE1W3,0xaaaa
	.set	SOURCE1L3,0xaaaaaaaa
	.set	SOURCE2B3,0xaa
	.set	SOURCE2W3,0xaaaa
	.set	SOURCE2L3,0xaaaaaaaa
	.set	SOURCE3B3,0x00
	.set	SOURCE3W3,0x0000
	.set	SOURCE3L3,0x00000000
	.set	INIT1B3,0x7fffff00
	.set	INIT1W3,0x7fff0000
	.set	INIT1L3,0x00000000
	.set	INIT3B3,0x7fffffff
	.set	INIT3W3,INIT3B3
	.set	INIT3L3,INIT3B3
	.set	EXP1B3,0x7fffffaa
	.set	EXP1W3,0x7fffaaaa
	.set	EXP1L3,0xaaaaaaaa
	.set	EXP2B3,0x7fffffff
	.set	EXP2W3,0x7fffffff
	.set	EXP2L3,0xffffffff
	.set	EXP3B3,0x00000000
	.set	EXP3W3,EXP3B3
	.set	EXP3L3,EXP3B3

/*									*/
/*									*/
/*									*/
/*	Syst.s - constants						*/
/*									*/
	.set	IPL,8
	.set	HIGH,31
	.set	ZERO,0
	.set	ONES,0xffffffff
	.set	N,8
	.set	Z,4
	.set	V,2
	.set	C,1
	.set	T,16
	.set	IV,32
	.set	FU,64
	.set	DV,128
	.set	PSWMASK,0x003f
/*									*/
	.globl	_orl3
_orl3:
	callf	$4,_setjmp	/* save context for error return */
	movab	_orl3,_stpc	/* save starting address of program subtest */
	movl	$1,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK1L3,_opr	/* first operand */
	movl	$SOURCE1L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK1L3,r3	/*mask					*/
	movl	$SOURCE1L3,r4	/*source				*/
	movl	$INIT1L3,r5	/*destination				*/
	bispsw	$(Z|V|C)	/*overflow, Z & carry bits ON		*/
	orl3	r3,r4,r5	/*try it reg reg reg			*/
	jeql	error1		/*error if Z = 1			*/
	jgeq	error1		/*error if N = 0			*/
	jcc	error1		/*error if C = 0			*/
	jvs	error1		/*error if V = 1			*/
	jmp	1f
error1:	movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	r5,$EXP1L3	/*if dest <> expected value,		*/
	jeql	o2
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r5,_actual	/* actual data */
	movl	$EXP1L3,_expected /* expected data */
	jmp	*badrtn

/*	Now try another mask(0x55555555)				*/
/*									*/

o2:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao2:	callf	$4,_setjmp	/* save context for error return */
	movab	ao2,_stpc	/* save starting address of program subtest */
	movl	$2,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK2L3,_opr	/* first operand */
	movl	$SOURCE2L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK2L3,r3	/*mask					*/
	movl	$SOURCE2L3,r4	/*source				*/
	movl	$INIT1L3,dest	/*destination				*/
	bispsw	$(Z|V)	     	/*overflow & zero bits ON		*/
	orl3	r3,r4,dest	/* try again reg reg mem		*/
	jeql	error2		/*error if Z = 1			*/
	jgeq	error2		/*error if N = 0			*/
	jcc	error2		/*error if C = 0			*/
	jvs	error2		/*error if V = 1			*/
	jmp	1f
error2:	movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	dest,$EXP2L3	/*if dest <> expected value,		*/
	jeql	o3
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	dest,_actual	/* actual data */
	movl	$EXP2L3,_expected /* expected data */
	jmp	*badrtn


/*	Now try another mask(0), source(0) & dest(0)			*/

o3:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao3:	callf	$4,_setjmp	/* save context for error return */
	movab	ao3,_stpc	/* save starting address of program subtest */
	movl	$3,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK3L3,_opr	/* first operand */
	movl	$SOURCE3L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$SOURCE3L3,r4	/*source				*/
	movl	$INIT3L3,dest	/*destination				*/
	bispsw	$(N|V)	     	/*overflow & negetive bits ON		*/
	orl3	$MASK3L3,r4,dest/* try again data reg mem		*/
	jneq	error3		/*error if Z = 0			*/
	jlss	error3		/*error if N = 1			*/
	jcc	error3		/*error if C = 0			*/
	jvs	error3		/*error if V = 1			*/
	jmp	1f
error3:	movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	dest,$EXP3L3	/*if dest <> expected value,		*/
	jeql	o4
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	dest,_actual	/* actual data */
	movl	$EXP3L3,_expected /* expected data */
	jmp	*badrtn

o4:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao4:	callf	$4,_setjmp	/* save context for error return */
	movab	ao4,_stpc	/* save starting address of program subtest */
	movl	$4,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK3L3,_opr	/* first operand */
	movl	$SOURCE3L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK3L3,r3
	movl	$INIT3L3,dest	/*destination				*/
	bispsw	$(N|V)	     	/*overflow & negetive bits ON		*/
	orl3	r3,$SOURCE3L3,dest/* try again  reg data mem		*/
	jneq	error4		/*error if Z = 0			*/
	jlss	error4		/*error if N = 1			*/
	jcc	error4		/*error if C = 0			*/
	jvs	error4		/*error if V = 1			*/
	jmp	1f
error4:	movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	dest,$EXP3L3	/*if dest <> expected value,		*/
	jeql	o5
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	dest,_actual	/* actual data */
	movl	$EXP3L3,_expected /* expected data */
	jmp	*badrtn

o5:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao5:	callf	$4,_setjmp	/* save context for error return */
	movab	ao5,_stpc	/* save starting address of program subtest */
	movl	$5,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK1L3,_opr	/* first operand */
	movl	$SOURCE1L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$SOURCE1L3,r4	/*source				*/
	movl	$INIT1L3,r5	/*destination				*/
	bispsw	$(Z|V|C)	/*overflow, Z & carry bits ON		*/
	orl3	$MASK1L3,r4,r5	/*try it data reg reg			*/
	jeql	error5		/*error if Z = 1			*/
	jgeq	error5		/*error if N = 0			*/
	jcc	error5		/*error if C = 0			*/
	jvs	error5		/*error if V = 1			*/
	jmp	1f
error5:	movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	r5,$EXP1L3	/*if dest <> expected value,		*/
	jeql	o6
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r5,_actual	/* actual data */
	movl	$EXP1L3,_expected /* expected data */
	jmp	*badrtn

o6:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao6:	callf	$4,_setjmp	/* save context for error return */
	movab	ao6,_stpc	/* save starting address of program subtest */
	movl	$6,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK2L3,_opr	/* first operand */
	movl	$SOURCE2L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK2L3,r3	/*mask					*/
	movl	$INIT1L3,r5	/*destination				*/
	bispsw	$(Z|V)	     	/*overflow & zero bits ON		*/
	orl3	r3,$SOURCE2L3,r5/* try again reg data reg		*/
	jeql	error6		/*error if Z = 1			*/
	jgeq	error6		/*error if N = 0			*/
	jcc	error6		/*error if C = 0			*/
	jvs	error6		/*error if V = 1			*/
	jmp	1f
error6:	movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	r5,$EXP2L3	/*if dest <> expected value,		*/
	jeql	orl3mmm		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r5,_actual	/* actual data */
	movl	$EXP1L3,_expected /* expected data */
	jmp	*badrtn

/*									*/
/*	now try source = M, mask = M, destination = M			*/
orl3mmm:
	
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao7:	callf	$4,_setjmp	/* save context for error return */
	movab	ao7,_stpc	/* save starting address of program subtest */
	movl	$7,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK1L3,_opr	/* first operand */
	movl	$SOURCE1L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK1L3,mask	/*mask					*/
	movl	$SOURCE1L3,source/*source				*/
	movl	$INIT1L3,dest	/*destination				*/
	bispsw	$(Z|V|C)	/*overflow, Z & carry bits ON		*/
	orl3	mask,source,dest/*try it mem mem mem			*/
	jeql	error7		/*error if Z = 1			*/
	jgeq	error7		/*error if N = 0			*/
	jcc	error7		/*error if C = 0			*/
	jvs	error7		/*error if V = 1			*/
	jmp	1f
error7:	movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	dest,$EXP1L3	/*if dest <> expected value,		*/
	jeql	o8		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	dest,_actual	/* actual data */
	movl	$EXP1L3,_expected /* expected data */
	jmp	*badrtn

/*	Now try another mask(0x55555555)				*/
/*									*/

o8:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao8:	callf	$4,_setjmp	/* save context for error return */
	movab	ao8,_stpc	/* save starting address of program subtest */
	movl	$8,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK2L3,_opr	/* first operand */
	movl	$SOURCE2L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$INIT1L3,dest	/*destination				*/
	bispsw	$(Z|V)	     	/*overflow & zero bits ON		*/
	orl3	$MASK2L3,$SOURCE2L3,dest/* try again data data mem	*/
	jeql	error8		/*error if Z = 1			*/
	jgeq	error8		/*error if N = 0			*/
	jcc	error8		/*error if C = 0			*/
	jvs	error8		/*error if V = 1			*/
	jmp	1f
error8:	movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	dest,$EXP2L3	/*if dest <> expected value,		*/
	jeql	o9		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	dest,_actual	/* actual data */
	movl	$EXP2L3,_expected /* expected data */
	jmp	*badrtn

o9:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao9:	callf	$4,_setjmp	/* save context for error return */
	movab	ao9,_stpc	/* save starting address of program subtest */
	movl	$9,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK2L3,_opr	/* first operand */
	movl	$SOURCE2L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$INIT1L3,r5	/*destination				*/
	bispsw	$(Z|V)	     	/*overflow & zero bits ON		*/
	orl3	$MASK2L3,$SOURCE2L3,r5/* try again data data reg	*/
	jeql	error9		/*error if Z = 1			*/
	jgeq	error9		/*error if N = 0			*/
	jcc	error9		/*error if C = 0			*/
	jvs	error9		/*error if V = 1			*/
	jmp	1f
error9:	movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	r5,$EXP2L3	/*if dest <> expected value,		*/
	jeql	o10		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r5,_actual	/* actual data */
	movl	$EXP2L3,_expected /* expected data */
	jmp	*badrtn
/*									*/
/*									*/
/*	Now try another mask(0), source(0), & dest(0)			*/
/*									*/
o10:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao10:	callf	$4,_setjmp	/* save context for error return */
	movab	ao10,_stpc	/* save starting address of program subtest */
	movl	$0xa,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK3L3,_opr	/* first operand */
	movl	$SOURCE3L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$SOURCE3L3,r4	/*source				*/
	movl	$INIT3L3,r5	/*destination				*/
	bispsw	$(N|V)	     	/*overflow & negetive bits ON		*/
	orl3	$MASK3L3,r4,r5	/* try again data reg reg		*/
	jneq	error10		/*error if Z = 0			*/
	jlss	error10		/*error if N = 1			*/
	jcc	error10		/*error if C = 0			*/
	jvs	error10		/*error if V = 1			*/
	jmp	1f
error10: movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	movl	$EXP3L3,r6
	cmpl	r5,r6		/*if dest <> expected value,		*/
	jeql	orl3mrm		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r5,_actual	/* actual data */
	movl	r6,_expected /* expected data */
	jmp	*badrtn
/*									*/
/*	Now use mask = R, source & destination = M			*/
/*									*/
orl3mrm:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao11:	callf	$4,_setjmp	/* save context for error return */
	movab	ao11,_stpc	/* save starting address of program subtest */
	movl	$0xb,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK1L3,_opr	/* first operand */
	movl	$SOURCE1L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK1L3,r3	/*mask					*/
	movl	$SOURCE1L3,source/*source				*/
	movl	$INIT1L3,dest	/*destination				*/
	bispsw	$(Z|V|C)	/*overflow, Z & carry bits ON		*/
	orl3	r3,source,dest	/*try it				*/
	jeql	error11		/*error if Z = 1			*/
	jgeq	error11		/*error if N = 0			*/
	jcc	error11		/*error if C = 0			*/
	jvs	error11		/*error if V = 1			*/
	jmp	1f
error11: movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	dest,$EXP1L3	/*if dest <> expected value,		*/
	jeql	o12		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	dest,_actual	/* actual data */
	movl	$EXP1L3,_expected /* expected data */
	jmp	*badrtn
/*									*/
/*	Now try another mask(0x55555555)				*/
/*									*/
o12:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao12:	callf	$4,_setjmp	/* save context for error return */
	movab	ao12,_stpc	/* save starting address of program subtest */
	movl	$0xc,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK2L3,_opr	/* first operand */
	movl	$SOURCE2L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK2L3,r3	/*mask					*/
	movl	$SOURCE2L3,source/*source				*/
	movl	$INIT1L3,dest	/*destination				*/
	bispsw	$(Z|V)	     	/*overflow & zero bits ON		*/
	orl3	r3,source,dest	/* try again				*/
	jeql	error12		/*error if Z = 1			*/
	jgeq	error12		/*error if N = 0			*/
	jcc	error12		/*error if C = 0			*/
	jvs	error12		/*error if V = 1			*/
	jmp	1f
error12: movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	dest,$EXP2L3	/*if dest <> expected value,		*/
	jeql	o13		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	dest,_actual	/* actual data */
	movl	$EXP2L3,_expected /* expected data */
	jmp	*badrtn
/*									*/
/*	Now try another mask(0), source(0), & dest(0)			*/
/*									*/
o13:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao13:	callf	$4,_setjmp	/* save context for error return */
	movab	ao13,_stpc	/* save starting address of program subtest */
	movl	$0xd,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK3L3,_opr	/* first operand */
	movl	$SOURCE3L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK3L3,r3	/*mask					*/
	movl	$SOURCE3L3,source/*source				*/
	movl	$INIT3L3,dest	/*destination				*/
	bispsw	$(N|V)	     	/*overflow & negetive bits ON		*/
	orl3	r3,source,dest	/* try again				*/
	jneq	error13		/*error if Z = 0			*/
	jlss	error13		/*error if N = 1			*/
	jcc	error13		/*error if C = 0			*/
	jvs	error13		/*error if V = 1			*/
	jmp	1f
error13: movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	dest,$EXP3L3	/*if dest <> expected value,		*/
	jeql	orl3rmm		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	dest,_actual	/* actual data */
	movl	$EXP3L3,_expected /* expected data */
	jmp	*badrtn

/*									*/
/*	Now try mask = M, source = R, dest = M				*/
/*									*/
orl3rmm:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao14:	callf	$4,_setjmp	/* save context for error return */
	movab	ao14,_stpc	/* save starting address of program subtest */
	movl	$0xe,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK1L3,_opr	/* first operand */
	movl	$SOURCE1L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK1L3,mask	/*mask					*/
	movl	$SOURCE1L3,r4	/*source				*/
	movl	$INIT1L3,dest	/*destination				*/
	bispsw	$(Z|V|C)	/*overflow, Z & carry bits ON		*/
	orl3	mask,r4,dest	/*try it				*/
	jeql	error14		/*error if Z = 1			*/
	jgeq	error14		/*error if N = 0			*/
	jcc	error14		/*error if C = 0			*/
	jvs	error14		/*error if V = 1			*/
	jmp	1f
error14: movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	dest,$EXP1L3	/*if dest <> expected value,		*/
	jeql	o15		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	dest,_actual	/* actual data */
	movl	$EXP1L3,_expected /* expected data */
	jmp	*badrtn

/*	Now try another mask(0x55555555)				*/
/*									*/

o15:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao15:	callf	$4,_setjmp	/* save context for error return */
	movab	ao15,_stpc	/* save starting address of program subtest */
	movl	$0xf,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK2L3,_opr	/* first operand */
	movl	$SOURCE2L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK2L3,mask	/*mask					*/
	movl	$SOURCE2L3,r4	/*source				*/
	movl	$INIT1L3,dest	/*destination				*/
	bispsw	$(Z|V)	     	/*overflow & zero bits ON		*/
	orl3	mask,r4,dest	/* try again				*/
	jeql	error15		/*error if Z = 1			*/
	jgeq	error15		/*error if N = 0			*/
	jcc	error15		/*error if C = 0			*/
	jvs	error15		/*error if V = 1			*/
	jmp	1f
error15: movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	dest,$EXP2L3	/*if dest <> expected value,		*/
	jeql	o16		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	dest,_actual	/* actual data */
	movl	$EXP2L3,_expected /* expected data */
	jmp	*badrtn
/*									*/
/*	Now try another mask(0), mask(0), dest(0)			*/
/*									*/
o16:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao16:	callf	$4,_setjmp	/* save context for error return */
	movab	ao16,_stpc	/* save starting address of program subtest */
	movl	$0x10,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK3L3,_opr	/* first operand */
	movl	$SOURCE3L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK3L3,mask	/*mask					*/
	movl	$SOURCE3L3,r4	/*source				*/
	movl	$INIT3L3,dest	/*destination				*/
	bispsw	$(N|V)	     	/*overflow & negetive bits ON		*/
	orl3	mask,r4,dest	/* try again				*/
	jneq	error16		/*error if Z = 0			*/
	jlss	error16		/*error if N = 1			*/
	jcc	error16		/*error if C = 0			*/
	jvs	error16		/*error if V = 1			*/
	jmp	1f
error16: movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	dest,$EXP3L3	/*if dest <> expected value,		*/
	jeql	orl3mrr		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	dest,_actual	/* actual data */
	movl	$EXP3L3,_expected /* expected data */
	jmp	*badrtn
/*									*/
/*	Now try mask = R, source = M, dest = R				*/
/*									*/
orl3mrr:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao17:	callf	$4,_setjmp	/* save context for error return */
	movab	ao17,_stpc	/* save starting address of program subtest */
	movl	$0x11,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK1L3,_opr	/* first operand */
	movl	$SOURCE1L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK1L3,r3	/*mask					*/
	movl	$SOURCE1L3,source/*source				*/
	movl	$INIT1L3,r5	/*destination				*/
	bispsw	$(Z|V|C)	/*overflow, Z & carry bits ON		*/
	orl3	r3,source,r5	/*try it				*/
	jeql	error17		/*error if Z = 1			*/
	jgeq	error17		/*error if N = 0			*/
	jcc	error17		/*error if C = 0			*/
	jvs	error17		/*error if V = 1			*/
	jmp	1f
error17: movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	r5,$EXP1L3	/*if dest <> expected value,		*/
	jeql	o18		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r5,_actual	/* actual data */
	movl	$EXP1L3,_expected /* expected data */
	jmp	*badrtn

/*	Now try another mask(0x55555555)				*/
/*									*/

o18:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao18:	callf	$4,_setjmp	/* save context for error return */
	movab	ao18,_stpc	/* save starting address of program subtest */
	movl	$0x12,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK2L3,_opr	/* first operand */
	movl	$SOURCE2L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK2L3,r3	/*mask					*/
	movl	$SOURCE2L3,source/*source				*/
	movl	$INIT1L3,r5	/*destination				*/
	bispsw	$(Z|V)	     	/*overflow & zero bits ON		*/
	orl3	r3,source,r5	/* try again				*/
	jeql	error18		/*error if Z = 1			*/
	jgeq	error18		/*error if N = 0			*/
	jcc	error18		/*error if C = 0			*/
	jvs	error18		/*error if V = 1			*/
	jmp	1f
error18: movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	r5,$EXP2L3	/*if dest <> expected value,		*/
	jeql	o19		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r5,_actual	/* actual data */
	movl	$EXP2L3,_expected /* expected data */
	jmp	*badrtn
/*									*/
/*	Now try another mask(0), mask(0), & dest(0)			*/
/*									*/
o19:
	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
ao19:	callf	$4,_setjmp	/* save context for error return */
	movab	ao19,_stpc	/* save starting address of program subtest */
	movl	$0x13,_subtst	/* subtest number */
	movl	$2,_no_opr	/* number of operands */
	movl	$MASK3L3,_opr	/* first operand */
	movl	$SOURCE3L3,_opr + 4 /* second operand */
0:	bicpsw	$PSWMASK	/*turn overflow enable bit off		*/
	movl	$MASK3L3,r3	/*mask					*/
	movl	$SOURCE3L3,source/*source				*/
	movl	$INIT3L3,r5	/*destination				*/
	bispsw	$(N|V)	     	/*overflow & negetive bits ON		*/
	orl3	r3,source,r5	/* try again				*/
	jneq	error19		/*error if Z = 0			*/
	jlss	error19		/*error if N = 1			*/
	jcc	error19		/*error if C = 0			*/
	jvs	error19		/*error if V = 1			*/
	jmp	1f
error19: movpsl	_actual		/* actual = psl Maybe incorrect */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$2,_ercode	/* error code flag failure */
	jmp	*badrtn
1:	cmpl	r5,$EXP3L3	/*if dest <> expected value,		*/
	jeql	aldn		/* no error then continue */
	bbs	$0,_scoplp,0b	/* if set scope loop on error */
	movl	$1,_ercode	/* error code data miscompare */
	movl	r5,_actual	/* actual data */
	movl	$EXP3L3,_expected /* expected data */
	jmp	*badrtn

aldn:	bbs	$0,_force_lp,0b	/* if set loop on last subtest */
	jmp	*return
/*									*/
/*	Variables							*/
/*									*/
	.align	2
mask: 	.space	4
source:	.space	4
dest:	.space	4

/*									*/
/*	End of file							*/


unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.