|
|
1.1 ! root 1: /* ANDB2 (and byte 2 operand) test */ ! 2: ! 3: /*Test name = andb2 */ ! 4: /*Description = */ ! 5: /* This test checks 'andb2' instruction as follows: */ ! 6: /* destination = r1, memory location (dest) */ ! 7: /* destination mask result Z N C V(flags) */ ! 8: /* ___________ ____ _____ _____________ */ ! 9: /* 0xaa 0xaa 0xaa 0 0 1 0 */ ! 10: /* 0xaa 0x55 0x00 1 0 1 0 */ ! 11: /* */ ! 12: /* */ ! 13: /* Constants */ ! 14: /* */ ! 15: .set VALUEB,0x000000aa ! 16: .set VALUEW,0X0000aaaa ! 17: .set VALUEL,0xaaaaaaaa ! 18: .set MASK1B,0xaa ! 19: .set MASK1W,0xaaaa ! 20: .set MASK1L,0xaaaaaaaa ! 21: .set MASK2B,0x55 ! 22: .set MASK2W,0x5555 ! 23: .set MASK2L,0x55555555 ! 24: .set EXP1B,0x000000aa ! 25: .set EXP1W,0x0000aaaa ! 26: .set EXP1L,0xaaaaaaaa ! 27: .set EXP2B,0x00000000 ! 28: .set EXP2W,0x00000000 ! 29: .set EXP2L,0x00000000 ! 30: ! 31: /* */ ! 32: /* */ ! 33: /* */ ! 34: /* Syst.s - constants */ ! 35: /* */ ! 36: .set IPL,8 ! 37: .set HIGH,31 ! 38: .set ZERO,0 ! 39: .set ONES,0xffffffff ! 40: .set N,8 ! 41: .set Z,4 ! 42: .set V,2 ! 43: .set C,1 ! 44: .set T,16 ! 45: .set IV,32 ! 46: .set FU,64 ! 47: .set DV,128 ! 48: .set PSWMASK,0x003f ! 49: ! 50: ! 51: .globl _andb2 ! 52: _andb2: ! 53: callf $4,_setjmp /* save context for error return */ ! 54: movab _andb2,_stpc /* save program counter of subtest */ ! 55: movl $1,_subtst /* subtest number */ ! 56: movl $2,_no_opr /* number of operands in use */ ! 57: movl $MASK1B,_opr /* first operand */ ! 58: movl $VALUEB,_opr + 4 /* second operand */ ! 59: 0: ! 60: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 61: movl $VALUEB,r3 /*set r3 = 0xaa */ ! 62: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 63: andb2 $MASK1B,r3 /*mask r1 with 0xaa data to reg */ ! 64: beql error1 /*error if Z = 1 */ ! 65: blss error1 /*error if N = 1 */ ! 66: bcc error1 /*error if C = 0 */ ! 67: bvs error1 /*error if V = 1 */ ! 68: cmpl r3,$EXP1B /*if r1 <> expected(0xaa), */ ! 69: beql a2 /*correct then continue */ ! 70: movl $1,_ercode /* error code data miscompare */ ! 71: bbs $0,_scoplp,0b /* if set loop on error */ ! 72: movl r3,_actual /* actual data */ ! 73: movl $EXP1B,_expected /* expected data */ ! 74: jmp *badrtn ! 75: error1: movpsl _actual /* actual = psl */ ! 76: bbs $0,_scoplp,0b /* if set loop on error */ ! 77: movl $2,_ercode /* error code flag failure */ ! 78: jmp *badrtn ! 79: ! 80: /* Now try another mask(0x55) */ ! 81: /* */ ! 82: ! 83: a2: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 84: aa2: callf $4,_setjmp /* save context for error return */ ! 85: movab aa2,_stpc /* save program counter of subtest */ ! 86: movl $2,_subtst /* subtest number */ ! 87: movl $2,_no_opr /* number of operands in use */ ! 88: movl $MASK2B,_opr /* first operand */ ! 89: movl $VALUEB,_opr + 4 /* second operand */ ! 90: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 91: movl $VALUEB,r4 /*set r4 = 0xaa */ ! 92: movl $MASK2B,r3 /* load mask into reg r3 */ ! 93: bispsw $(N|V) /*overflow & negetive bits ON */ ! 94: andb2 r3,r4 /*mask r4 */ ! 95: bneq error2 /*error if Z = 0 */ ! 96: blss error2 /*error if N = 1 */ ! 97: bcc error2 /*error if C = 0 */ ! 98: bvs error2 /*error if V = 1 */ ! 99: cmpl r4,$EXP2B /*if r4 <> expected(0x00), */ ! 100: beql andb2m /*correct then continue */ ! 101: movl $1,_ercode /* error code data miscompare */ ! 102: bbs $0,_scoplp,0b /* if set loop on error */ ! 103: movl r4,_actual /* actual data */ ! 104: movl $EXP2B,_expected /* expected data */ ! 105: jmp *badrtn ! 106: error2: movpsl _actual /* actual = psl */ ! 107: bbs $0,_scoplp,0b /* if set loop on error */ ! 108: movl $2,_ercode /* error code flag failure */ ! 109: jmp *badrtn ! 110: ! 111: /* */ ! 112: /* Now use memory location instead of register as destination */ ! 113: /* */ ! 114: andb2m: ! 115: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 116: aa3: callf $4,_setjmp /* save context for error return */ ! 117: movab aa3,_stpc /* save program counter of subtest */ ! 118: movl $3,_subtst /* subtest number */ ! 119: movl $2,_no_opr /* number of operands in use */ ! 120: movl $MASK1B,_opr /* first operand */ ! 121: movl $VALUEB,_opr + 4 /* second operand */ ! 122: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 123: movl $VALUEB,dest /*set dest = 0xaa */ ! 124: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 125: andb2 $MASK1B,dest+3 /*mask dest with 0xaa data to reg */ ! 126: beql error3 /*error if Z = 1 */ ! 127: blss error3 /*error if N = 1 */ ! 128: bcc error3 /*error if C = 0 */ ! 129: bvs error3 /*error if V = 1 */ ! 130: movl $EXP1B,r2 ! 131: cmpl dest,$EXP1B /*if dest <> expected(0xaa), */ ! 132: beql a4 /*correct then continue */ ! 133: movl $1,_ercode /* error code data miscompare */ ! 134: bbs $0,_scoplp,0b /* if set loop on error */ ! 135: movl dest,_actual /* actual data */ ! 136: movl $EXP1B,_expected /* expected data */ ! 137: jmp *badrtn ! 138: error3: movpsl _actual /* actual = psl */ ! 139: bbs $0,_scoplp,0b /* if set loop on error */ ! 140: movl $2,_ercode /* error code flag failure */ ! 141: jmp *badrtn ! 142: ! 143: /* Now try another mask(0x55) */ ! 144: /* */ ! 145: a4: ! 146: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 147: aa4: callf $4,_setjmp /* save context for error return */ ! 148: movab aa4,_stpc /* save program counter of subtest */ ! 149: movl $4,_subtst /* subtest number */ ! 150: movl $2,_no_opr /* number of operands in use */ ! 151: movl $MASK2B,_opr /* first operand */ ! 152: movl $VALUEB,_opr + 4 /* second operand */ ! 153: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 154: movl $VALUEB,dest /*set dest = 0xaa */ ! 155: movl $MASK2B,r3 /* load mask into reg r3 */ ! 156: bispsw $(N|V) /*overflow & negetive bits ON */ ! 157: andb2 r3,dest+3 /*mask dest with 0x55 reg to memory */ ! 158: bneq error4 /*error if Z = 0 */ ! 159: blss error4 /*error if N = 1 */ ! 160: bcc error4 /*error if C = 0 */ ! 161: bvs error4 /*error if V = 1 */ ! 162: cmpl dest,$EXP2B /*if dest <> expected(0x00), */ ! 163: beql a5 /*correct then continue */ ! 164: movl $1,_ercode /* error code data miscompare */ ! 165: bbs $0,_scoplp,0b /* if set loop on error */ ! 166: movl dest,_actual /* actual data */ ! 167: movl $EXP2B,_expected /* expected data */ ! 168: jmp *badrtn ! 169: error4: movpsl _actual /* actual = psl */ ! 170: bbs $0,_scoplp,0b /* if set loop on error */ ! 171: movl $2,_ercode /* error code flag failure */ ! 172: jmp *badrtn ! 173: ! 174: a5: ! 175: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 176: aa5: callf $4,_setjmp /* save context for error return */ ! 177: movab aa5,_stpc /* save program counter of subtest */ ! 178: movl $5,_subtst /* subtest number */ ! 179: movl $2,_no_opr /* number of operands in use */ ! 180: movl $MASK2B,_opr /* first operand */ ! 181: movl $VALUEB,_opr + 4 /* second operand */ ! 182: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 183: movl $VALUEB,dest /*set dest = 0xaa */ ! 184: movl $MASK2B,r3 /* load mask into reg r3 */ ! 185: bispsw $(N|V) /*overflow & negetive bits ON */ ! 186: andb2 dest+3,r3 /*mask dest with 0x55 memory to reg */ ! 187: bneq error5 /*error if Z = 0 */ ! 188: blss error5 /*error if N = 1 */ ! 189: bcc error5 /*error if C = 0 */ ! 190: bvs error5 /*error if V = 1 */ ! 191: cmpl r3,$EXP2B /*if dest <> expected(0x00), */ ! 192: beql a6 /*correct then continue */ ! 193: movl $1,_ercode /* error code data miscompare */ ! 194: bbs $0,_scoplp,0b /* if set loop on error */ ! 195: movl r3,_actual /* actual data */ ! 196: movl $EXP2B,_expected /* expected data */ ! 197: jmp *badrtn ! 198: error5: movpsl _actual /* actual = psl */ ! 199: bbs $0,_scoplp,0b /* if set loop on error */ ! 200: movl $2,_ercode /* error code flag failure */ ! 201: jmp *badrtn ! 202: ! 203: a6: ! 204: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 205: aa6: callf $4,_setjmp /* save context for error return */ ! 206: movab aa6,_stpc /* save program counter of subtest */ ! 207: movl $6,_subtst /* subtest number */ ! 208: movl $2,_no_opr /* number of operands in use */ ! 209: movl $MASK2B,_opr /* first operand */ ! 210: movl $VALUEB,_opr + 4 /* second operand */ ! 211: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 212: movl $VALUEB,dest /*set dest = 0xaa */ ! 213: movl $MASK2B,dest2 /* load mask into reg r1 */ ! 214: bispsw $(N|V) /*overflow & negetive bits ON */ ! 215: andb2 dest+3,dest2+3 /*mask dest with 0x55 memory to memory */ ! 216: bneq error6 /*error if Z = 0 */ ! 217: blss error6 /*error if N = 1 */ ! 218: bcc error6 /*error if C = 0 */ ! 219: bvs error6 /*error if V = 1 */ ! 220: movl $EXP2B,r4 ! 221: cmpl dest2,$EXP2B /*if dest <> expected(0x00), */ ! 222: beql aldn /*correct then continue */ ! 223: movl $1,_ercode /* error code data miscompare */ ! 224: bbs $0,_scoplp,0b /* if set loop on error */ ! 225: movl dest2,_actual /* actual data */ ! 226: movl $EXP2B,_expected /* expected data */ ! 227: jmp *badrtn ! 228: error6: movpsl _actual /* actual = psl */ ! 229: bbs $0,_scoplp,0b /* if set loop on error */ ! 230: movl $2,_ercode /* error code flag failure */ ! 231: jmp *badrtn ! 232: ! 233: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 234: jmp *return ! 235: /* */ ! 236: ! 237: /* variables */ ! 238: /* */ ! 239: .align 2 ! 240: dest: .space 4 ! 241: ! 242: .align 2 ! 243: dest2: .space 4
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.