|
|
1.1 ! root 1: /* ORB2 (or byte 2 operand) test */ ! 2: ! 3: /*Test name = orb2 */ ! 4: /*Description = */ ! 5: /* This test checks 'orb2' 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 0xff 0 1 1 0 */ ! 11: /* 0x00 0x00 0x00 1 0 x 0 */ ! 12: /* */ ! 13: /* */ ! 14: /* */ ! 15: /* */ ! 16: /* Constants */ ! 17: /* */ ! 18: .set VALUEB,0x555555aa ! 19: .set VALUEW,0X5555aaaa ! 20: .set VALUEL,0xaaaaaaaa ! 21: .set VALUE3B,0X00000000 ! 22: .set VALUE3W,VALUE3B ! 23: .set VALUE3L,VALUE3B ! 24: .set MASK1B,0xaa ! 25: .set MASK1W,0xaaaa ! 26: .set MASK1L,0xaaaaaaaa ! 27: .set MASK2B,0x55 ! 28: .set MASK2W,0x5555 ! 29: .set MASK2L,0x55555555 ! 30: .set MASK3B,0x00 ! 31: .set MASK3W,0x0000 ! 32: .set MASK3L,0x00000000 ! 33: .set EXP1B,0x555555aa ! 34: .set EXP1W,0x5555aaaa ! 35: .set EXP1L,0xaaaaaaaa ! 36: .set EXP2B,0x555555ff ! 37: .set EXP2W,0x5555ffff ! 38: .set EXP2L,0xffffffff ! 39: .set EXP3B,0x00000000 ! 40: .set EXP3W,EXP3B ! 41: .set EXP3L,EXP3B ! 42: ! 43: /* */ ! 44: /* */ ! 45: /* */ ! 46: /* Syst.s - constants */ ! 47: /* */ ! 48: .set IPL,8 ! 49: .set HIGH,31 ! 50: .set ZERO,0 ! 51: .set ONES,0xffffffff ! 52: .set N,8 ! 53: .set Z,4 ! 54: .set V,2 ! 55: .set C,1 ! 56: .set T,16 ! 57: .set IV,32 ! 58: .set FU,64 ! 59: .set DV,128 ! 60: .set PSWMASK,0x003f ! 61: ! 62: .globl _or_b2 ! 63: _or_b2: ! 64: callf $4,_setjmp /* save context for error return */ ! 65: movab _or_b2,_stpc /* save starting address of subtest */ ! 66: movl $1,_subtst /* subtest number */ ! 67: movl $2,_no_opr /* number of operands in use */ ! 68: movl $MASK1B,_opr /* first operand */ ! 69: movl $VALUEB,_opr + 4 /* second operand */ ! 70: 0: ! 71: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 72: movl $VALUEB,r4 /*set r4 = 0xaa */ ! 73: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 74: orb2 $MASK1B,r4 /*mask r4 with 0xaa data to reg */ ! 75: beql error1 /*error if Z = 1 */ ! 76: blss error1 /*error if N = 1 */ ! 77: bcc error1 /*error if C = 0 */ ! 78: bvs error1 /*error if V = 1 */ ! 79: jmp 1f ! 80: error1: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 81: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 82: movl $2,_ercode /* error code flag failure */ ! 83: jmp *badrtn ! 84: 1: cmpl r4,$EXP1B /*if r4 <> expected, */ ! 85: jeql o2 /* if correct continue */ ! 86: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 87: movl $1,_ercode /* error code data miscompare */ ! 88: movl r4,_actual /* actual data */ ! 89: movl $EXP1B,_expected /* expected data */ ! 90: jmp *badrtn ! 91: ! 92: /* Now try another mask(0x55) register to register */ ! 93: /* */ ! 94: ! 95: o2: ! 96: bbs $0,_force_lp,0b /* if set loop on last error */ ! 97: ao2: callf $4,_setjmp /* save context for error return */ ! 98: movab ao2,_stpc /* save starting address of subtest */ ! 99: movl $2,_subtst /* subtest number */ ! 100: movl $2,_no_opr /* number of operands in use */ ! 101: movl $MASK2B,_opr /* first operand */ ! 102: movl $VALUEB,_opr + 4 /* second operand */ ! 103: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 104: movl $VALUEB,r4 /*set r4 = 0xaa */ ! 105: movl $MASK2B,r3 /* load mask into reg 3 */ ! 106: bispsw $(Z|V) /*overflow & zero bits ON */ ! 107: orb2 r3,r4 /*mask r4 with 0x55 reg to reg */ ! 108: beql error2 /*error if Z = 1 */ ! 109: blss error2 /*error if N = 1 */ ! 110: bcc error2 /*error if C = 0 */ ! 111: bvs error2 /*error if V = 1 */ ! 112: jmp 1f ! 113: error2: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 114: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 115: movl $2,_ercode /* error code flag failure */ ! 116: jmp *badrtn ! 117: 1: cmpl r4,$EXP2B /*if r4 <> expected, */ ! 118: jeql o3 /* if correct continue */ ! 119: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 120: movl $1,_ercode /* error code data miscompare */ ! 121: movl r4,_actual /* actual data */ ! 122: movl $EXP2B,_expected /* expected data */ ! 123: jmp *badrtn ! 124: /* */ ! 125: /* Now try another mask(0x00) & dest(0x00) reg to mem */ ! 126: /* */ ! 127: ! 128: o3: ! 129: bbs $0,_force_lp,0b /* if set loop on last error */ ! 130: ao3: callf $4,_setjmp /* save context for error return */ ! 131: movab ao3,_stpc /* save starting address of subtest */ ! 132: movl $3,_subtst /* subtest number */ ! 133: movl $2,_no_opr /* number of operands in use */ ! 134: movl $MASK3B,_opr /* first operand */ ! 135: movl $VALUE3B,_opr + 4 /* second operand */ ! 136: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 137: movl $VALUE3B,r3 /*set r3 = 0x00 */ ! 138: movl $MASK3B,dest ! 139: bispsw $(N|V) /*overflow & negetive bits ON */ ! 140: orb2 r3,dest /*mask r3 with 0x00 reg to mem */ ! 141: bneq error3 /*error if Z = 0 */ ! 142: blss error3 /*error if N = 1 */ ! 143: bcc error3 /*error if C = 0 */ ! 144: bvs error3 /*error if V = 1 */ ! 145: jmp 1f ! 146: error3: movpsl _actual /* actual = psl MAYBE it 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: 1: cmpl dest,$EXP3B /*if dest <> expected, */ ! 151: jeql orb2m /* if correct continue */ ! 152: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 153: movl $1,_ercode /* error code data miscompare */ ! 154: movl dest,_actual /* actual data */ ! 155: movl $EXP3B,_expected /* expected data */ ! 156: jmp *badrtn ! 157: ! 158: /* */ ! 159: /* Now use memory location instead of register as destination */ ! 160: /* */ ! 161: orb2m: ! 162: bbs $0,_force_lp,0b /* if set loop on last error */ ! 163: ao4: callf $4,_setjmp /* save context for error return */ ! 164: movab ao4,_stpc /* save starting address of subtest */ ! 165: movl $4,_subtst /* subtest number */ ! 166: movl $2,_no_opr /* number of operands in use */ ! 167: movl $-0x56,_opr /* first operand */ ! 168: movl $VALUEB,_opr + 4 /* second operand */ ! 169: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 170: movl $VALUEB,dest /*set dest = 0xaa */ ! 171: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 172: orb2 $-0x56,dest+3 /*mask dest with 0xaa data to mem */ ! 173: beql error4 /*error if Z = 1 */ ! 174: bgeq error4 /*error if N = 0 */ ! 175: bcc error4 /*error if C = 0 */ ! 176: bvs error4 /*error if V = 1 */ ! 177: jmp 1f ! 178: error4: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 179: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 180: movl $2,_ercode /* error code flag failure */ ! 181: jmp *badrtn ! 182: 1: cmpl dest,$EXP1B /*if dest <> expected, */ ! 183: jeql o5 /* if correct continue */ ! 184: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 185: movl $1,_ercode /* error code data miscompare */ ! 186: movl dest,_actual /* actual data */ ! 187: movl $EXP1B,_expected /* expected data */ ! 188: jmp *badrtn ! 189: ! 190: /* Now try another mask(0x55) mem to reg */ ! 191: /* */ ! 192: ! 193: o5: ! 194: bbs $0,_force_lp,0b /* if set loop on last error */ ! 195: ao5: callf $4,_setjmp /* save context for error return */ ! 196: movab ao5,_stpc /* save starting address of subtest */ ! 197: movl $5,_subtst /* subtest number */ ! 198: movl $2,_no_opr /* number of operands in use */ ! 199: movl $VALUEB,_opr /* first operand */ ! 200: movl $MASK2B,_opr + 4 /* second operand */ ! 201: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 202: movl $VALUEB,dest /*set dest = 0xaa */ ! 203: movl $MASK2B,r3 /* mask value in reg r3 */ ! 204: bispsw $(Z|V) /*overflow & zero bits ON */ ! 205: orb2 dest+3,r3 /*mask dest with 0x55 */ ! 206: beql error5 /*error if Z = 1 */ ! 207: bgeq error5 /*error if N = 0 */ ! 208: bcc error5 /*error if C = 0 */ ! 209: bvs error5 /*error if V = 1 */ ! 210: jmp 1f ! 211: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 212: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 213: movl $2,_ercode /* error code flag failure */ ! 214: jmp *badrtn ! 215: 1: cmpl $EXP2L,r3 /*if dest <> expected, */ ! 216: jeql o6 /* if correct continue */ ! 217: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 218: movl $1,_ercode /* error code data miscompare */ ! 219: movl r3,_actual /* actual data */ ! 220: movl $EXP2L,_expected /* expected data */ ! 221: jmp *badrtn ! 222: ! 223: ! 224: /* */ ! 225: /* Now try another mask(0x00) & dest(0x00) mem to mem */ ! 226: /* */ ! 227: ! 228: o6: ! 229: bbs $0,_force_lp,0b /* if set loop on last error */ ! 230: ao6: callf $4,_setjmp /* save context for error return */ ! 231: movab ao6,_stpc /* save starting address of subtest */ ! 232: movl $6,_subtst /* subtest number */ ! 233: movl $2,_no_opr /* number of operands in use */ ! 234: movl $VALUEB,_opr /* first operand */ ! 235: movl $MASK2B,_opr + 4 /* second operand */ ! 236: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 237: movl $VALUE3B,dest /*set dest = 0x00 */ ! 238: movl $MASK3B,srce /* load mask into loc srce */ ! 239: bispsw $(N|V) /*overflow & negetive bits ON */ ! 240: orb2 srce,dest+3 /*mask dest with 0x00 mem to mem */ ! 241: jneq error6 /*error if Z = 0 */ ! 242: jlss error6 /*error if N = 1 */ ! 243: jcc error6 /*error if C = 0 */ ! 244: jvs error6 /*error if V = 1 */ ! 245: jmp 1f ! 246: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 247: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 248: movl $2,_ercode /* error code flag failure */ ! 249: jmp *badrtn ! 250: 1: cmpl dest,$EXP3B /*if dest <> expected, */ ! 251: jeql aldn /* if correct continue */ ! 252: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 253: movl $1,_ercode /* error code data miscompare */ ! 254: movl dest,_actual /* actual data */ ! 255: movl $EXP3B,_expected /* expected data */ ! 256: jmp *badrtn ! 257: ! 258: aldn: bbs $0,_force_lp,0b /* if set loop on last error */ ! 259: jmp *return /* good, return to monitor */ ! 260: ! 261: /* */ ! 262: /* variables */ ! 263: /* */ ! 264: .align 2 ! 265: dest: .space 4 ! 266: .align 2 ! 267: srce: .space 4
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.