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