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