|
|
1.1 ! root 1: ! 2: ! 3: ! 4: ! 5: ! 6: /* TESTW (test word) test */ ! 7: ! 8: /*Test name = tstw */ ! 9: /*Description = */ ! 10: /* This test checks "tstw" instruction to see that */ ! 11: /* (1)Z, V, & C flags are set to zero (src < 0) & N = 1 */ ! 12: /* (2)N, V, & C flags are set to zero (src = 0) & Z = 1 */ ! 13: /* (3)all the flags are zero (src > 0). */ ! 14: /* Register 1 (r1) & memory location tmloc(lebel) are used as */ ! 15: /* src(source). */ ! 16: /* */ ! 17: /* Constants definition */ ! 18: /* */ ! 19: .set IPL,8 ! 20: .set HIGH,31 ! 21: .set ZERO,0 ! 22: .set ONES,0xffffffff ! 23: .set N,8 ! 24: .set Z,4 ! 25: .set V,2 ! 26: .set C,1 ! 27: .set PSWMASK,0x003f ! 28: .set SRCB1,0xff ! 29: .set SRCW1,0xffff ! 30: .set SRCL1,0xffffffff ! 31: .set SRCB2,0 ! 32: .set SRCW2,0 ! 33: .set SRCL2,0 ! 34: .set SRCB3,1 ! 35: .set SRCW3,1 ! 36: .set SRCL3,1 ! 37: ! 38: .globl _tst_w ! 39: _tst_w: ! 40: callf $4,_setjmp /* save context for error return */ ! 41: movab _tst_w,_stpc /* starting address of subtest */ ! 42: movl $1,_subtst /* subtest number */ ! 43: movl $1,_no_opr /* number of operands in use */ ! 44: movl $SRCW1,_opr /* first operand */ ! 45: 0: movl $SRCW1,r3 /*r3 = source */ ! 46: bispsw $(Z|V|C) /*turn zero, overflow, & carry ON */ ! 47: tstw r3 /*execute "tstw" */ ! 48: beql error1 /*error if Z = 1 */ ! 49: blss error1 /*error if N = 1 */ ! 50: bvs error1 /*error if V = 1 */ ! 51: bcc error1 /*error if C = 0 */ ! 52: jmp t2 ! 53: error1: movpsl _actual /* actual = psl is incorrect */ ! 54: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 55: movl $2,_ercode /* error code flag failure */ ! 56: jmp *badrtn ! 57: /* */ ! 58: /* Now try src = 0 */ ! 59: /* */ ! 60: t2: ! 61: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 62: at2: callf $4,_setjmp /* save context for error return */ ! 63: movab at2,_stpc /* starting address of subtest */ ! 64: movl $2,_subtst /* subtest number */ ! 65: movl $1,_no_opr /* number of operands in use */ ! 66: movl $SRCW2,_opr /* first operand */ ! 67: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ ! 68: movl $SRCW2,r3 /*r3 = source */ ! 69: bispsw $(N|V|C) /*turn neg, overflow, & carry ON */ ! 70: tstw r3 /*execute "tstw" */ ! 71: bneq error2 /*error if Z = 0 */ ! 72: blss error2 /*error if N = 1 */ ! 73: bvs error2 /*error if V = 1 */ ! 74: bcc error2 /*error if C = 0 */ ! 75: jmp t3 ! 76: error2: movpsl _actual /* actual = psl is incorrect */ ! 77: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 78: movl $2,_ercode /* error code flag failure */ ! 79: jmp *badrtn ! 80: /* */ ! 81: /* Now try src > 0 */ ! 82: /* */ ! 83: ! 84: t3: ! 85: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 86: at3: callf $4,_setjmp /* save context for error return */ ! 87: movab at3,_stpc /* starting address of subtest */ ! 88: movl $3,_subtst /* subtest number */ ! 89: movl $1,_no_opr /* number of operands in use */ ! 90: movl $SRCW3,_opr /* first operand */ ! 91: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ ! 92: movl $SRCW3,r3 /*r3 = source */ ! 93: bispsw $(Z|N|V|C) /*turn zero, neg, overflow, & carry ON */ ! 94: tstw r3 /*execute "tstw" */ ! 95: beql error3 /*error if Z = 1 */ ! 96: blss error3 /*error if N = 1 */ ! 97: bvs error3 /*error if V = 1 */ ! 98: bcc error3 /*error if C = 0 */ ! 99: jmp tstwm ! 100: error3: movpsl _actual /* actual = psl is incorrect */ ! 101: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 102: movl $2,_ercode /* error code flag failure */ ! 103: jmp *badrtn ! 104: ! 105: /* */ ! 106: /* Now use memory location(tmloc) instead of r3 */ ! 107: /* */ ! 108: tstwm: ! 109: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 110: at4: callf $4,_setjmp /* save context for error return */ ! 111: movab at4,_stpc /* starting address of subtest */ ! 112: movl $4,_subtst /* subtest number */ ! 113: movl $1,_no_opr /* number of operands in use */ ! 114: movl $SRCW1,_opr /* first operand */ ! 115: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ ! 116: movl $SRCW1,tmloc /*tmloc = source */ ! 117: bispsw $(Z|V|C) /*turn zero, overflow, & carry ON */ ! 118: tstw tmloc+2 /*execute "tstw" */ ! 119: beql error4 /*error if Z = 1 */ ! 120: bgeq error4 /*error if N = 0 */ ! 121: bvs error4 /*error if V = 1 */ ! 122: bcc error4 /*error if C = 0 */ ! 123: jmp t5 ! 124: error4: movpsl _actual /* actual = psl is incorrect */ ! 125: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 126: movl $2,_ercode /* error code flag failure */ ! 127: jmp *badrtn ! 128: /* */ ! 129: /* Now try src = 0 */ ! 130: /* */ ! 131: t5: ! 132: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 133: at5: callf $4,_setjmp /* save context for error return */ ! 134: movab at5,_stpc /* starting address of subtest */ ! 135: movl $5,_subtst /* subtest number */ ! 136: movl $1,_no_opr /* number of operands in use */ ! 137: movl $SRCW2,_opr /* first operand */ ! 138: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ ! 139: bispsw $(N|V|C) /*turn neg, overflow, & carry ON */ ! 140: tstw $SRCW2 /*execute "tstw" immediate data */ ! 141: bneq error5 /*error if Z = 0 */ ! 142: blss error5 /*error if N = 1 */ ! 143: bvs error5 /*error if V = 1 */ ! 144: bcc error5 /*error if C = 0 */ ! 145: jmp t6 ! 146: error5: movpsl _actual /* actual = psl is incorrect */ ! 147: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 148: movl $2,_ercode /* error code flag failure */ ! 149: jmp *badrtn ! 150: /* */ ! 151: /* Now try src > 0 */ ! 152: /* */ ! 153: ! 154: t6: ! 155: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 156: at6: callf $4,_setjmp /* save context for error return */ ! 157: movab at6,_stpc /* starting address of subtest */ ! 158: movl $6,_subtst /* subtest number */ ! 159: movl $1,_no_opr /* number of operands in use */ ! 160: movl $SRCW3,_opr /* first operand */ ! 161: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */ ! 162: movl $SRCW3,tmloc /*tmloc = source */ ! 163: bispsw $(Z|N|V|C) /*turn zero, neg, overflow, & carry ON */ ! 164: tstw tmloc+2 /*execute "tstw" */ ! 165: beql error6 /*error if Z = 1 */ ! 166: blss error6 /*error if N = 1 */ ! 167: bvs error6 /*error if V = 1 */ ! 168: bcc error6 /*error if C = 0 */ ! 169: jmp aldn ! 170: error6: movpsl _actual /* actual = psl is incorrect */ ! 171: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 172: movl $2,_ercode /* error code flag failure */ ! 173: jmp *badrtn ! 174: ! 175: ! 176: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 177: jmp *return /* good, return to monitor */ ! 178: ! 179: ! 180: /* */ ! 181: /* Variables */ ! 182: /* */ ! 183: .align 2 ! 184: tmloc: .space 4 ! 185:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.