|
|
1.1 ! root 1: ! 2: ! 3: ! 4: /* ORW3 (or word 3 operand) test */ ! 5: ! 6: /*Test name = orw3 */ ! 7: /*Description = */ ! 8: /* This test checks 'orw3' instruction as follows: */ ! 9: /* source mask destination Z N C V(flags) */ ! 10: /* ___________ ____ ___________ _____________ */ ! 11: /* 0xaaaa 0xaaaa 0x7fffffaa 0 0 1 0 */ ! 12: /* 0xaaaa 0x5555 0x7fffffff 0 0 1 0 */ ! 13: /* 0x0000 0x0000 0x00000000 1 0 x 0 */ ! 14: /* R R R --- */ ! 15: /* M M M --- */ ! 16: /* R M M --- */ ! 17: /* M R R --- */ ! 18: /* */ ! 19: /* */ ! 20: /* */ ! 21: /* Constants */ ! 22: /* */ ! 23: .set MASK1B3,0xaa ! 24: .set MASK1W3,0xaaaa ! 25: .set MASK1L3,0xaaaaaaaa ! 26: .set MASK2B3,0x55 ! 27: .set MASK2W3,0x5555 ! 28: .set MASK2L3,0x55555555 ! 29: .set MASK3B3,0x00 ! 30: .set MASK3W3,0x0000 ! 31: .set MASK3L3,0x00000000 ! 32: .set SOURCE1B3,0xaa ! 33: .set SOURCE1W3,0xaaaa ! 34: .set SOURCE1L3,0xaaaaaaaa ! 35: .set SOURCE2B3,0xaa ! 36: .set SOURCE2W3,0xaaaa ! 37: .set SOURCE2L3,0xaaaaaaaa ! 38: .set SOURCE3B3,0x00 ! 39: .set SOURCE3W3,0x0000 ! 40: .set SOURCE3L3,0x00000000 ! 41: .set INIT1B3,0x7fffff00 ! 42: .set INIT1W3,0x7fff0000 ! 43: .set INIT1L3,0x00000000 ! 44: .set INIT3B3,0x7fffffff ! 45: .set INIT3W3,INIT3B3 ! 46: .set INIT3L3,INIT3B3 ! 47: .set EXP1B3,0x7fffffaa ! 48: .set EXP1W3,0x7fffaaaa ! 49: .set EXP1L3,0xaaaaaaaa ! 50: .set EXP2B3,0x7fffffff ! 51: .set EXP2W3,0x7fffffff ! 52: .set EXP2L3,0xffffffff ! 53: .set EXP3B3,0x00000000 ! 54: .set EXP3W3,EXP3B3 ! 55: .set EXP3L3,EXP3B3 ! 56: ! 57: /* */ ! 58: /* */ ! 59: /* */ ! 60: /* Syst.s - constants */ ! 61: /* */ ! 62: .set IPL,8 ! 63: .set HIGH,31 ! 64: .set ZERO,0 ! 65: .set ONES,0xffffffff ! 66: .set N,8 ! 67: .set Z,4 ! 68: .set V,2 ! 69: .set C,1 ! 70: .set T,16 ! 71: .set IV,32 ! 72: .set FU,64 ! 73: .set DV,128 ! 74: .set PSWMASK,0x003f ! 75: /* */ ! 76: ! 77: .globl _orw3 ! 78: _orw3: ! 79: callf $4,_setjmp /* save context for error return */ ! 80: movab _orw3,_stpc /* starting address of subtest */ ! 81: movl $1,_subtst /* subtest number */ ! 82: movl $2,_no_opr /* number of operands in use */ ! 83: movl $MASK1W3,_opr /* first operand */ ! 84: movl $SOURCE1W3,_opr + 4 /* second operand */ ! 85: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 86: movl $MASK1W3,r3 /*mask */ ! 87: movl $SOURCE1W3,r4 /*source */ ! 88: movl $INIT1W3,r5 /*destination */ ! 89: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 90: orw3 r3,r4,r5 /*try it reg reg reg */ ! 91: jeql error1 /*error if Z = 1 */ ! 92: jlss error1 /*error if N =1 */ ! 93: jcc error1 /*error if C = 0 */ ! 94: jvs error1 /*error if V = 1 */ ! 95: jmp 1f ! 96: error1: movpsl _actual /* actual data */ ! 97: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 98: movl $2,_ercode /* error code flag failure */ ! 99: jmp *badrtn ! 100: 1: cmpl r5,$0xaaaa /*if dest <> expected value, */ ! 101: jeql o2 /* if no error continue */ ! 102: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 103: movl $1,_ercode /* error code data miscompare */ ! 104: movl r5,_actual /* actual data */ ! 105: movl $0xaaaa,_expected /* expected data */ ! 106: jmp *badrtn ! 107: ! 108: /* Now try another mask(0x5555) */ ! 109: /* */ ! 110: ! 111: o2: ! 112: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 113: ao2: callf $4,_setjmp /* save context for error return */ ! 114: movab ao2,_stpc /* starting address of subtest */ ! 115: movl $2,_subtst /* subtest number */ ! 116: movl $2,_no_opr /* number of operands in use */ ! 117: movl $MASK2W3,_opr /* first operand */ ! 118: movl $SOURCE2W3,_opr + 4 /* second operand */ ! 119: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 120: movl $MASK2W3,r3 /*mask */ ! 121: movl $SOURCE2W3,r4 /*source */ ! 122: movl $INIT1W3,dest /*destination */ ! 123: bispsw $(Z|V) /*overflow & zero bits ON */ ! 124: orw3 r3,r4,dest+2 /* try again reg reg mem */ ! 125: jeql error2 /*error if Z = 1 */ ! 126: jlss error2 /*error if N =1 */ ! 127: jcc error2 /*error if C = 0 */ ! 128: jvs error2 /*error if V = 1 */ ! 129: jmp 1f ! 130: error2: movpsl _actual /* actual data */ ! 131: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 132: movl $2,_ercode /* error code flag failure */ ! 133: jmp *badrtn ! 134: 1: movl $0x7fffffff,r6 ! 135: cmpl dest,r6 /*if dest <> expected value, */ ! 136: jeql o3 /* if no error continue */ ! 137: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 138: movl $1,_ercode /* error code data miscompare */ ! 139: movl dest,_actual /* actual data */ ! 140: movl r6,_expected /* expected data */ ! 141: jmp *badrtn ! 142: ! 143: ! 144: /* Now try another mask(0x0000), source(0x0000) & dest(0x0000) */ ! 145: ! 146: o3: ! 147: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 148: ao3: callf $4,_setjmp /* save context for error return */ ! 149: movab ao3,_stpc /* starting address of subtest */ ! 150: movl $3,_subtst /* subtest number */ ! 151: movl $2,_no_opr /* number of operands in use */ ! 152: movl $MASK3W3,_opr /* first operand */ ! 153: movl $SOURCE3W3,_opr + 4 /* second operand */ ! 154: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 155: movl $MASK3W3,r3 /*mask */ ! 156: movl $INIT3W3,r5 /*destination */ ! 157: bispsw $(N|V) /*overflow & negetive bits ON */ ! 158: orw3 r3,$SOURCE3W3,r5/* reg to data to reg */ ! 159: jneq error3 /*error if Z = 0 */ ! 160: jlss error3 /*error if N = 1 */ ! 161: jcc error3 /*error if C = 0 */ ! 162: jvs error3 /*error if V = 1 */ ! 163: jmp 1f ! 164: error3: movpsl _actual /* actual data */ ! 165: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 166: movl $2,_ercode /* error code flag failure */ ! 167: jmp *badrtn ! 168: 1: cmpl r5,$EXP3W3 /*if dest <> expected value, */ ! 169: jeql orw3mmm /* if no error continue */ ! 170: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 171: movl $1,_ercode /* error code data miscompare */ ! 172: movl r5,_actual /* actual data */ ! 173: movl $EXP3W3,_expected /* expected data */ ! 174: jmp *badrtn ! 175: ! 176: /* */ ! 177: /* now try source = M, mask = M, destination = M */ ! 178: orw3mmm: ! 179: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 180: ao4: callf $4,_setjmp /* save context for error return */ ! 181: movab ao4,_stpc /* starting address of subtest */ ! 182: movl $4,_subtst /* subtest number */ ! 183: movl $2,_no_opr /* number of operands in use */ ! 184: movl $MASK3W3,_opr /* first operand */ ! 185: movl $SOURCE3W3,_opr + 4 /* second operand */ ! 186: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 187: movl $MASK1W3,mask /*mask */ ! 188: movl $SOURCE1W3,source/*source */ ! 189: movl $INIT1W3,dest /*destination */ ! 190: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 191: orw3 mask+2,source+2,dest+2/*try it mem mem mem */ ! 192: jeql error4 /*error if Z = 1 */ ! 193: jgeq error4 /*error if N =0 */ ! 194: jcc error4 /*error if C = 0 */ ! 195: jvs error4 /*error if V = 1 */ ! 196: jmp 1f ! 197: error4: movpsl _actual /* actual data */ ! 198: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 199: movl $2,_ercode /* error code flag failure */ ! 200: jmp *badrtn ! 201: 1: cmpl dest,$EXP1W3 /*if dest <> expected value, */ ! 202: jeql o5 /* if no error continue */ ! 203: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 204: movl $1,_ercode /* error code data miscompare */ ! 205: movl dest,_actual /* actual data */ ! 206: movl $EXP1W3,_expected /* expected data */ ! 207: jmp *badrtn ! 208: ! 209: /* Now try another mask(0x5555) */ ! 210: /* */ ! 211: ! 212: o5: ! 213: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 214: ao5: callf $4,_setjmp /* save context for error return */ ! 215: movab ao5,_stpc /* starting address of subtest */ ! 216: movl $5,_subtst /* subtest number */ ! 217: movl $2,_no_opr /* number of operands in use */ ! 218: movl $MASK2W3,_opr /* first operand */ ! 219: movl $SOURCE2W3,_opr + 4 /* second operand */ ! 220: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 221: movl $MASK2W3,mask /*mask */ ! 222: movl $SOURCE2W3,source/*source */ ! 223: movl $INIT1W3,r5 /*destination */ ! 224: bispsw $(Z|V) /*overflow & zero bits ON */ ! 225: orw3 mask+2,source+2,r5/*try it mem mem reg */ ! 226: jeql error5 /*error if Z = 1 */ ! 227: jgeq error5 /*error if N =0 */ ! 228: jcc error5 /*error if C = 0 */ ! 229: jvs error5 /*error if V = 1 */ ! 230: jmp 1f ! 231: error5: movpsl _actual /* actual data */ ! 232: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 233: movl $2,_ercode /* error code flag failure */ ! 234: jmp *badrtn ! 235: 1: movl $EXP2L3,r6 ! 236: cmpl r5,r6 /*if dest <> expected value, */ ! 237: jeql o6 /* if no error continue */ ! 238: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 239: movl $1,_ercode /* error code data miscompare */ ! 240: movl r5,_actual /* actual data */ ! 241: movl r6,_expected /* expected data */ ! 242: jmp *badrtn ! 243: /* */ ! 244: /* Now try another mask(0x0000), source(0x0000), & dest(0x0000) */ ! 245: /* */ ! 246: o6: ! 247: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 248: ao6: callf $4,_setjmp /* save context for error return */ ! 249: movab ao6,_stpc /* starting address of subtest */ ! 250: movl $6,_subtst /* subtest number */ ! 251: movl $2,_no_opr /* number of operands in use */ ! 252: movl $MASK3W3,_opr /* first operand */ ! 253: movl $SOURCE3W3,_opr + 4 /* second operand */ ! 254: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 255: movl $MASK3W3,mask /*mask */ ! 256: movl $SOURCE3W3,r4 /*source */ ! 257: movl $INIT3W3,dest /*destination */ ! 258: bispsw $(N|V) /*overflow & negetive bits ON */ ! 259: orw3 mask+2,r4,dest+2/*try it mem reg mem */ ! 260: jneq error6 /*error if Z = 0 */ ! 261: jlss error6 /*error if N = 1 */ ! 262: jcc error6 /*error if C = 0 */ ! 263: jvs error6 /*error if V = 1 */ ! 264: jmp 1f ! 265: error6: movpsl _actual /* actual data */ ! 266: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 267: movl $2,_ercode /* error code flag failure */ ! 268: jmp *badrtn ! 269: 1: movl $0x7fff0000,r6 ! 270: cmpl dest,r6 /*if dest <> expected value, */ ! 271: jeql orw3mrm /* if no error continue */ ! 272: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 273: movl $1,_ercode /* error code data miscompare */ ! 274: movl dest,_actual /* actual data */ ! 275: movl r6,_expected /* expected data */ ! 276: jmp *badrtn ! 277: /* */ ! 278: /* Now use mask = R, source & destination = M */ ! 279: /* */ ! 280: orw3mrm: ! 281: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 282: ao7: callf $4,_setjmp /* save context for error return */ ! 283: movab ao7,_stpc /* starting address of subtest */ ! 284: movl $7,_subtst /* subtest number */ ! 285: movl $2,_no_opr /* number of operands in use */ ! 286: movl $MASK1W3,_opr /* first operand */ ! 287: movl $SOURCE1W3,_opr + 4 /* second operand */ ! 288: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 289: movl $MASK1W3,r3 /*mask */ ! 290: movl $SOURCE1W3,source/*source */ ! 291: movl $INIT1W3,dest /*destination */ ! 292: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 293: orw3 r3,source+2,dest+2/*try it reg mem mem */ ! 294: jeql error7 /*error if Z = 1 */ ! 295: jgeq error7 /*error if N =0 */ ! 296: jcc error7 /*error if C = 0 */ ! 297: jvs error7 /*error if V = 1 */ ! 298: jmp 1f ! 299: error7: movpsl _actual /* actual data */ ! 300: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 301: movl $2,_ercode /* error code flag failure */ ! 302: jmp *badrtn ! 303: 1: cmpl dest,$EXP1W3 /*if dest <> expected value, */ ! 304: jeql o8 /* if no error continue */ ! 305: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 306: movl $1,_ercode /* error code data miscompare */ ! 307: movl dest,_actual /* actual data */ ! 308: movl $EXP1W3,_expected /* expected data */ ! 309: jmp *badrtn ! 310: /* */ ! 311: /* Now try another mask(0x5555) */ ! 312: /* */ ! 313: o8: ! 314: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 315: ao8: callf $4,_setjmp /* save context for error return */ ! 316: movab ao8,_stpc /* starting address of subtest */ ! 317: movl $8,_subtst /* subtest number */ ! 318: movl $2,_no_opr /* number of operands in use */ ! 319: movl $MASK2W3,_opr /* first operand */ ! 320: movl $SOURCE2W3,_opr + 4 /* second operand */ ! 321: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 322: movl $MASK2W3,mask /*mask */ ! 323: movl $INIT1W3,dest /*destination */ ! 324: bispsw $(Z|V) /*overflow & zero bits ON */ ! 325: orw3 mask+2,$SOURCE2W3,dest+2 /*try it mem data mem */ ! 326: jeql error8 /*error if Z = 1 */ ! 327: jlss error8 /*error if N =1 */ ! 328: jcc error8 /*error if C = 0 */ ! 329: jvs error8 /*error if V = 1 */ ! 330: jmp 1f ! 331: error8: movpsl _actual /* actual data */ ! 332: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 333: movl $2,_ercode /* error code flag failure */ ! 334: jmp *badrtn ! 335: 1: cmpl dest,$EXP2W3 /*if dest <> expected value, */ ! 336: jeql o9 /* if no error continue */ ! 337: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 338: movl $1,_ercode /* error code data miscompare */ ! 339: movl dest,_actual /* actual data */ ! 340: movl $EXP2W3,_expected /* expected data */ ! 341: jmp *badrtn ! 342: /* */ ! 343: /* Now try another mask(0x0000), source(0x0000), & dest(0x0000) */ ! 344: /* */ ! 345: o9: ! 346: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 347: ao9: callf $4,_setjmp /* save context for error return */ ! 348: movab ao9,_stpc /* starting address of subtest */ ! 349: movl $9,_subtst /* subtest number */ ! 350: movl $2,_no_opr /* number of operands in use */ ! 351: movl $MASK2W3,_opr /* first operand */ ! 352: movl $SOURCE2W3,_opr + 4 /* second operand */ ! 353: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 354: movl $SOURCE3W3,r4 /*source */ ! 355: movl $INIT3W3,dest /*destination */ ! 356: bispsw $(N|V) /*overflow & negetive bits ON */ ! 357: orw3 $MASK3W3,r4,dest+2/*try it data reg mem */ ! 358: jneq error9 /*error if Z = 0 */ ! 359: jlss error9 /*error if N = 1 */ ! 360: jcc error9 /*error if C = 0 */ ! 361: jvs error9 /*error if V = 1 */ ! 362: jmp 1f ! 363: error9: movpsl _actual /* actual data */ ! 364: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 365: movl $2,_ercode /* error code flag failure */ ! 366: jmp *badrtn ! 367: 1: movl $0x7fff0000,r6 ! 368: cmpl dest,r6 /*if dest <> expected value, */ ! 369: jeql orw3rmm /* if no error continue */ ! 370: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 371: movl $1,_ercode /* error code data miscompare */ ! 372: movl dest,_actual /* actual data */ ! 373: movl r6,_expected /* expected data */ ! 374: jmp *badrtn ! 375: ! 376: /* */ ! 377: /* Now try mask = M, source = R, dest = M */ ! 378: /* */ ! 379: orw3rmm: ! 380: ! 381: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 382: ao10: callf $4,_setjmp /* save context for error return */ ! 383: movab ao10,_stpc /* starting address of subtest */ ! 384: movl $0xa,_subtst /* subtest number */ ! 385: movl $2,_no_opr /* number of operands in use */ ! 386: movl $MASK1W3,_opr /* first operand */ ! 387: movl $SOURCE1W3,_opr + 4 /* second operand */ ! 388: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 389: movl $INIT1W3,dest /*destination */ ! 390: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 391: orw3 $MASK1W3,$SOURCE1W3,dest+2/*try it data data mem */ ! 392: jeql error10 /*error if Z = 1 */ ! 393: jlss error10 /*error if N =0 */ ! 394: jcc error10 /*error if C = 0 */ ! 395: jvs error10 /*error if V = 1 */ ! 396: jmp 1f ! 397: error10: movpsl _actual /* actual data */ ! 398: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 399: movl $2,_ercode /* error code flag failure */ ! 400: jmp *badrtn ! 401: 1: cmpl dest,$EXP1W3 /*if dest <> expected value, */ ! 402: jeql o11 /* if no error continue */ ! 403: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 404: movl $1,_ercode /* error code data miscompare */ ! 405: movl dest,_actual /* actual data */ ! 406: movl $EXP1W3,_expected /* expected data */ ! 407: jmp *badrtn ! 408: ! 409: /* Now try another mask(0x5555) */ ! 410: /* */ ! 411: ! 412: o11: ! 413: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 414: ao11: callf $4,_setjmp /* save context for error return */ ! 415: movab ao11,_stpc /* starting address of subtest */ ! 416: movl $0xb,_subtst /* subtest number */ ! 417: movl $2,_no_opr /* number of operands in use */ ! 418: movl $MASK2W3,_opr /* first operand */ ! 419: movl $SOURCE2W3,_opr + 4 /* second operand */ ! 420: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 421: movl $SOURCE2W3,r4 /*source */ ! 422: movl $INIT1W3,r5 /*destination */ ! 423: bispsw $(Z|V) /*overflow & zero bits ON */ ! 424: orw3 $MASK2W3,r4,r5 /*try it data reg reg */ ! 425: jeql error11 /*error if Z = 1 */ ! 426: jlss error11 /*error if N =1 */ ! 427: jcc error11 /*error if C = 0 */ ! 428: jvs error11 /*error if V = 1 */ ! 429: jmp 1f ! 430: error11: movpsl _actual /* actual data */ ! 431: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 432: movl $2,_ercode /* error code flag failure */ ! 433: jmp *badrtn ! 434: 1: movl $0xffff,r6 ! 435: cmpl r5,r6 /*if dest <> expected value, */ ! 436: jeql o12 /* if no error continue */ ! 437: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 438: movl $1,_ercode /* error code data miscompare */ ! 439: movl r5,_actual /* actual data */ ! 440: movl r6,_expected /* expected data */ ! 441: jmp *badrtn ! 442: /* */ ! 443: /* Now try another mask(0x0000), mask(0x0000), dest(0x0000) */ ! 444: /* */ ! 445: o12: ! 446: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 447: ao12: callf $4,_setjmp /* save context for error return */ ! 448: movab ao12,_stpc /* starting address of subtest */ ! 449: movl $0xc,_subtst /* subtest number */ ! 450: movl $2,_no_opr /* number of operands in use */ ! 451: movl $MASK3W3,_opr /* first operand */ ! 452: movl $SOURCE3W3,_opr + 4 /* second operand */ ! 453: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 454: movl $MASK3W3,mask /*mask */ ! 455: movl $SOURCE3W3,r4 /*source */ ! 456: movl $INIT3W3,dest /*destination */ ! 457: bispsw $(N|V) /*overflow & negetive bits ON */ ! 458: orw3 mask+2,r4,dest+2 /*try it */ ! 459: jneq error1 /*error if Z = 0 */ ! 460: jlss error1 /*error if N = 1 */ ! 461: jcc error1 /*error if C = 0 */ ! 462: jvs error1 /*error if V = 1 */ ! 463: jmp 1f ! 464: error12: movpsl _actual /* actual data */ ! 465: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 466: movl $2,_ercode /* error code flag failure */ ! 467: jmp *badrtn ! 468: 1: movl $0x7fff0000,r6 ! 469: cmpl dest,r6 /*if dest <> expected value, */ ! 470: jeql orw3mrr /* if no error continue */ ! 471: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 472: movl $1,_ercode /* error code data miscompare */ ! 473: movl dest,_actual /* actual data */ ! 474: movl r6,_expected /* expected data */ ! 475: jmp *badrtn ! 476: /* */ ! 477: /* Now try mask = R, source = M, dest = R */ ! 478: /* */ ! 479: orw3mrr: ! 480: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 481: ao13: callf $4,_setjmp /* save context for error return */ ! 482: movab ao13,_stpc /* starting address of subtest */ ! 483: movl $0xd,_subtst /* subtest number */ ! 484: movl $2,_no_opr /* number of operands in use */ ! 485: movl $MASK1W3,_opr /* first operand */ ! 486: movl $SOURCE1W3,_opr + 4 /* second operand */ ! 487: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 488: movl $MASK1W3,r3 /*mask */ ! 489: movl $SOURCE1W3,source/*source */ ! 490: movl $INIT1W3,r5 /*destination */ ! 491: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */ ! 492: orw3 r3,source+2,r5 /*try it */ ! 493: jeql error13 /*error if Z = 1 */ ! 494: jgeq error13 /*error if N =1 */ ! 495: jcc error13 /*error if C = 0 */ ! 496: jvs error13 /*error if V = 1 */ ! 497: jmp 1f ! 498: error13: movpsl _actual /* actual data */ ! 499: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 500: movl $2,_ercode /* error code flag failure */ ! 501: jmp *badrtn ! 502: 1: movl $0xffffaaaa,r6 ! 503: cmpl r5,r6 /*if dest <> expected value, */ ! 504: jeql o14 /* if no error continue */ ! 505: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 506: movl $1,_ercode /* error code data miscompare */ ! 507: movl r5,_actual /* actual data */ ! 508: movl r6,_expected /* expected data */ ! 509: jmp *badrtn ! 510: ! 511: /* Now try another mask(0x5555) */ ! 512: /* */ ! 513: ! 514: o14: ! 515: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 516: ao14: callf $4,_setjmp /* save context for error return */ ! 517: movab ao14,_stpc /* starting address of subtest */ ! 518: movl $0xe,_subtst /* subtest number */ ! 519: movl $2,_no_opr /* number of operands in use */ ! 520: movl $MASK2W3,_opr /* first operand */ ! 521: movl $SOURCE2W3,_opr + 4 /* second operand */ ! 522: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 523: movl $MASK2W3,r3 /*mask */ ! 524: movl $SOURCE2W3,source/*source */ ! 525: movl $INIT1W3,r5 /*destination */ ! 526: bispsw $(Z|V) /*overflow & zero bits ON */ ! 527: orw3 r3,source+2,r5 /*try it */ ! 528: jeql error14 /*error if Z = 1 */ ! 529: jgeq error14 /*error if N =0 */ ! 530: jcc error14 /*error if C = 0 */ ! 531: jvs error14 /*error if V = 1 */ ! 532: jmp 1f ! 533: error14: movpsl _actual /* actual data */ ! 534: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 535: movl $2,_ercode /* error code flag failure */ ! 536: jmp *badrtn ! 537: 1: movl $-1,r6 ! 538: cmpl r5,r6 /*if dest <> expected value, */ ! 539: jeql o15 /* if no error continue */ ! 540: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 541: movl $1,_ercode /* error code data miscompare */ ! 542: movl r5,_actual /* actual data */ ! 543: movl r6,_expected /* expected data */ ! 544: jmp *badrtn ! 545: /* */ ! 546: /* Now try another mask(0x0000), mask(0x0000), & dest(0x0000) */ ! 547: /* */ ! 548: o15: ! 549: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 550: ao15: callf $4,_setjmp /* save context for error return */ ! 551: movab ao15,_stpc /* starting address of subtest */ ! 552: movl $0xf,_subtst /* subtest number */ ! 553: movl $2,_no_opr /* number of operands in use */ ! 554: movl $MASK3W3,_opr /* first operand */ ! 555: movl $SOURCE3W3,_opr + 4 /* second operand */ ! 556: 0: bicpsw $PSWMASK /*turn overflow enable bit off */ ! 557: movl $MASK3W3,r3 /*mask */ ! 558: movl $SOURCE3W3,source/*source */ ! 559: movl $INIT3W3,r5 /*destination */ ! 560: bispsw $(N|V) /*overflow & negetive bits ON */ ! 561: orw3 r3,source+2,r5 /*try it */ ! 562: jneq error15 /*error if Z = 0 */ ! 563: jlss error15 /*error if N = 1 */ ! 564: jcc error15 /*error if C = 0 */ ! 565: jvs error15 /*error if V = 1 */ ! 566: jmp 1f ! 567: error15: movpsl _actual /* actual data */ ! 568: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 569: movl $2,_ercode /* error code flag failure */ ! 570: jmp *badrtn ! 571: 1: cmpl r5,$EXP3W3 /*if dest <> expected value, */ ! 572: jeql aldn /* if no error continue */ ! 573: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 574: movl $1,_ercode /* error code data miscompare */ ! 575: movl r5,_actual /* actual data */ ! 576: movl r6,_expected /* expected data */ ! 577: jmp *badrtn ! 578: ! 579: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 580: jmp *return ! 581: ! 582: /* */ ! 583: /* Variables */ ! 584: /* */ ! 585: .align 2 ! 586: mask: .space 4 ! 587: source: .space 4 ! 588: dest: .space 4 ! 589: ! 590: /* */ ! 591: /* End of file */ ! 592:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.