|
|
1.1 ! root 1: ! 2: ! 3: ! 4: /* SUBW3 (subtract word3) test */ ! 5: /* */ ! 6: /*Test name = subw3 */ ! 7: /*Description = */ ! 8: /* This test checks 'subw3' instruction as follows: */ ! 9: /*sub min dif N Z V C (flags) */ ! 10: /*___ ___ ______ _______________ */ ! 11: /*0x7f 0x7f 0x00 0 1 0 1 */ ! 12: /*0xff 0x01 0x02 0 0 0 0 */ ! 13: /*0x01 0xff 0xfe 1 0 0 1 */ ! 14: /*0x81 0x7f 0xfe 1 0 1 0 */ ! 15: /*0x81 0x80 0xff 1 0 0 0 */ ! 16: /*0x7f 0x81 0x02 0 0 1 1 */ ! 17: /* */ ! 18: /* */ ! 19: ! 20: /* */ ! 21: /* */ ! 22: /* constants definition for 'subx' tests. */ ! 23: /* */ ! 24: ! 25: .set SB1,0x11111f7f/*+127, highest +ve number, byte */ ! 26: .set SW1,0x111f7fff ! 27: .set SL1,0x7fffffff ! 28: .set MB1,0x11111f7f/* +127 */ ! 29: .set MW1,0x111f7fff ! 30: .set ML1,SL1 ! 31: .set RB1,0x11111f00 ! 32: .set RW1,0x111f0000 ! 33: .set RL1,0x00000000 ! 34: .set SB2,0xff /* -1 */ ! 35: .set SW2,0xffff ! 36: .set SL2,0xffffffff ! 37: .set MB2,0x01 /* +1 */ ! 38: .set MW2,0x0001 ! 39: .set ML2,0X00000001 ! 40: .set RB2,0x00000002 /* +2 */ ! 41: .set RW2,RB2 ! 42: .set RL2,RB2 ! 43: .set SB3,MB2 /* +1 */ ! 44: .set SW3,MW2 ! 45: .set SL3,ML2 ! 46: .set MB3,0xff /* -1 */ ! 47: .set MW3,0xffff ! 48: .set ML3,0xffffffff ! 49: .set RB3,0x000000fe /* -2 */ ! 50: .set RW3,0x0000fffe ! 51: .set RL3,0Xfffffffe ! 52: .set SB4,0x81 /* -127 */ ! 53: .set SW4,0x8001 ! 54: .set SL4,0x80000001 ! 55: .set MB4,0x7f /* 127 */ ! 56: .set MW4,0x7fff ! 57: .set ML4,0x7fffffff ! 58: .set RB4,0xfe /* -2 */ ! 59: .set RW4,0xfffe ! 60: .set RL4,0xfffffffe ! 61: .set SB5,SB4 /* -127 */ ! 62: .set SW5,SW4 ! 63: .set SL5,SL4 ! 64: .set MB5,0x80 /* -128 */ ! 65: .set MW5,0x8000 ! 66: .set ML5,0x80000000 ! 67: .set RB5,0xff /* -1 */ ! 68: .set RW5,0xffff ! 69: .set RL5,0xffffffff ! 70: .set SB6,0x7f/* +127 */ ! 71: .set SW6,0x7fff ! 72: .set SL6,0x7fffffff ! 73: .set MB6,SB4 /* -127 */ ! 74: .set MW6,SW4 ! 75: .set ML6,SL4 ! 76: .set RB6,0x02 ! 77: .set RW6,0x02 ! 78: .set RL6,0x02 ! 79: ! 80: .set INITB,0x11111f55/* initialization values for 3 operand */ ! 81: .set INITW,0x111f5555 ! 82: .set INITL,0X55555555 ! 83: ! 84: /* */ ! 85: /* Syst.s - Constants */ ! 86: /* */ ! 87: .set IPL,8 ! 88: .set HIGH,31 ! 89: .set ZERO,0 ! 90: .set ONES,0xffffffff ! 91: .set N,8 ! 92: .set Z,4 ! 93: .set V,2 ! 94: .set C,1 ! 95: .set T,16 ! 96: .set IV,32 ! 97: .set FU,64 ! 98: .set DV,128 ! 99: .set PSWMASK,0x003f ! 100: ! 101: .globl _subw3 ! 102: _subw3: ! 103: callf $4,_setjmp /* save context for return from error */ ! 104: movab _subw3,_stpc /* save subtest starting address */ ! 105: movl $1,_subtst /* subtest number */ ! 106: movl $2,_no_opr /* number of operands in use */ ! 107: movl $SW1,_opr /* first operand */ ! 108: movl $MW1,_opr + 4 /* second operand */ ! 109: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 110: movl $SW1,sub /*first operand */ ! 111: movl $MW1,min /*second operand */ ! 112: movl $INITW,dif /*initialize destination */ ! 113: bicpsw $PSWMASK /*PSW = 0 */ ! 114: bispsw $(N|V|C) /* these flags ON */ ! 115: subw3 sub+2,min+2,dif+2/* try 'sub' instruction mem mem mem */ ! 116: jlss e1 /*error if N = 1 */ ! 117: jneq e1 /*error if Z = 0 */ ! 118: jvs e1 /*error if V = 1 */ ! 119: jcc e1 /*error if C = 0 */ ! 120: jmp 1f ! 121: e1: movpsl _actual /* actual = psl maybe incorrect */ ! 122: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 123: movl $2,_ercode /* error code flag failure */ ! 124: jmp *badrtn ! 125: 1: bicpsw $Z ! 126: cmpl $RW1,dif /*dif = expected ? */ ! 127: jeql sw2 /* if no error continue */ ! 128: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 129: movl $1,_ercode /* error code data miscompare */ ! 130: movl dif,_actual /* actual data */ ! 131: movl $RW1,_expected /* expected data */ ! 132: jmp *badrtn ! 133: ! 134: sw2: ! 135: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 136: as2: callf $4,_setjmp /* save context for return from error */ ! 137: movab as2,_stpc /* save subtest starting address */ ! 138: movl $2,_subtst /* subtest number */ ! 139: movl $2,_no_opr /* number of operands in use */ ! 140: movl $SW2,_opr /* first operand */ ! 141: movl $MW2,_opr + 4 /* second operand */ ! 142: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 143: movl $SW2,sub /*first operand */ ! 144: movl $MW2,r7 /*second operand */ ! 145: movl $0,dif /*initialize destination */ ! 146: bicpsw $PSWMASK /*PSW = 0 */ ! 147: bispsw $(N|Z|V) /* these flags ON */ ! 148: subw3 sub+2,r7,dif+2/* try 'sub' instruction mem reg mem */ ! 149: jlss e2 /*error if N = 1 */ ! 150: jeql e2 /*error if Z = 1 */ ! 151: jvs e2 /*error if V = 1 */ ! 152: jcs e2 /*error if C = 1 */ ! 153: jmp 1f ! 154: e2: movpsl _actual /* actual = psl maybe incorrect */ ! 155: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 156: movl $2,_ercode /* error code flag failure */ ! 157: jmp *badrtn ! 158: 1: bicpsw $Z ! 159: cmpl $RW2,dif /*dif = expected ? */ ! 160: jeql sw3 /* if no error continue */ ! 161: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 162: movl $1,_ercode /* error code data miscompare */ ! 163: movl dif,_actual /* actual data */ ! 164: movl $RW2,_expected /* expected data */ ! 165: jmp *badrtn ! 166: ! 167: sw3: ! 168: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 169: as3: callf $4,_setjmp /* save context for return from error */ ! 170: movab as3,_stpc /* save subtest starting address */ ! 171: movl $3,_subtst /* subtest number */ ! 172: movl $2,_no_opr /* number of operands in use */ ! 173: movl $SW3,_opr /* first operand */ ! 174: movl $MW3,_opr + 4 /* second operand */ ! 175: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 176: movl $SW3,r6 /*first operand */ ! 177: movl $MW3,min /*second operand */ ! 178: movl $0,dif /*initialize destination */ ! 179: bicpsw $PSWMASK /*PSW = 0 */ ! 180: bispsw $(V|Z|C) /* these flags ON */ ! 181: subw3 r6,min+2,dif+2 /* try 'sub' instruction reg mem mem */ ! 182: jgeq e3 /*error if N = 0 */ ! 183: jeql e3 /*error if Z = 1 */ ! 184: jvs e3 /*error if V = 1 */ ! 185: jcc e3 /*error if C = 0 */ ! 186: jmp 1f ! 187: e3: movpsl _actual /* actual = psl maybe incorrect */ ! 188: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 189: movl $2,_ercode /* error code flag failure */ ! 190: jmp *badrtn ! 191: 1: bicpsw $Z ! 192: cmpl $RW3,dif /*dif = expected ? */ ! 193: jeql sw4 /* if no error continue */ ! 194: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 195: movl $1,_ercode /* error code data miscompare */ ! 196: movl dif,_actual /* actual data */ ! 197: movl $RW3,_expected /* expected data */ ! 198: jmp *badrtn ! 199: ! 200: sw4: ! 201: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 202: as4: callf $4,_setjmp /* save context for return from error */ ! 203: movab as4,_stpc /* save subtest starting address */ ! 204: movl $4,_subtst /* subtest number */ ! 205: movl $2,_no_opr /* number of operands in use */ ! 206: movl $SW4,_opr /* first operand */ ! 207: movl $MW4,_opr + 4 /* second operand */ ! 208: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 209: movl $SW4,r6 /*first operand */ ! 210: movl $MW4,r7 /*second operand */ ! 211: movl $0,dif /*initialize destination */ ! 212: bicpsw $PSWMASK /*PSW = 0 */ ! 213: bispsw $Z /* these flags ON */ ! 214: subw3 r6,r7,dif+2 /* try 'sub' instruction reg reg mem */ ! 215: jgeq e4 /*error if N = 0 */ ! 216: jeql e4 /*error if Z = 1 */ ! 217: jvc e4 /*error if V = 0 */ ! 218: jcs e4 /*error if C = 1 */ ! 219: jmp 1f ! 220: e4: movpsl _actual /* actual = psl maybe incorrect */ ! 221: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 222: movl $2,_ercode /* error code flag failure */ ! 223: jmp *badrtn ! 224: 1: bicpsw $Z ! 225: cmpl $RW4,dif /*dif = expected ? */ ! 226: jeql sw5 /* if no error continue */ ! 227: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 228: movl $1,_ercode /* error code data miscompare */ ! 229: movl dif,_actual /* actual data */ ! 230: movl $RW4,_expected /* expected data */ ! 231: jmp *badrtn ! 232: ! 233: sw5: ! 234: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 235: as5: callf $4,_setjmp /* save context for return from error */ ! 236: movab as5,_stpc /* save subtest starting address */ ! 237: movl $5,_subtst /* subtest number */ ! 238: movl $2,_no_opr /* number of operands in use */ ! 239: movl $SW5,_opr /* first operand */ ! 240: movl $MW5,_opr + 4 /* second operand */ ! 241: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 242: movl $SW5,r6 /*first operand */ ! 243: movl $0,dif /*initialize destination */ ! 244: bicpsw $PSWMASK /*PSW = 0 */ ! 245: bispsw $(V|Z) /* these flags ON */ ! 246: subw3 r6,$MW5,dif+2 /* try 'sub' instruction reg data mem */ ! 247: jgeq e5 /*error if N = 0 */ ! 248: jeql e5 /*error if Z = 1 */ ! 249: jvs e5 /*error if V = 1 */ ! 250: jcs e5 /*error if C = 1 */ ! 251: jmp 1f ! 252: e5: movpsl _actual /* actual = psl maybe incorrect */ ! 253: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 254: movl $2,_ercode /* error code flag failure */ ! 255: jmp *badrtn ! 256: 1: bicpsw $Z ! 257: cmpl $RW5,dif /*dif = expected ? */ ! 258: jeql sw6 /* if no error continue */ ! 259: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 260: movl $1,_ercode /* error code data miscompare */ ! 261: movl dif,_actual /* actual data */ ! 262: movl $RW5,_expected /* expected data */ ! 263: jmp *badrtn ! 264: ! 265: sw6: ! 266: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 267: as6: callf $4,_setjmp /* save context for return from error */ ! 268: movab as6,_stpc /* save subtest starting address */ ! 269: movl $6,_subtst /* subtest number */ ! 270: movl $2,_no_opr /* number of operands in use */ ! 271: movl $SW6,_opr /* first operand */ ! 272: movl $MW6,_opr + 4 /* second operand */ ! 273: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 274: movl $SW6,sub /*first operand */ ! 275: movl $MW6,r7 /*second operand */ ! 276: movl $0,dif /*initialize destination */ ! 277: bicpsw $PSWMASK /*PSW = 0 */ ! 278: bispsw $(Z|C|N) /* these flags ON */ ! 279: subw3 $SW6,r7,dif+2 /* try 'sub' instruction data reg mem */ ! 280: jlss e6 /*error if N = 1 */ ! 281: jeql e6 /*error if Z = 1 */ ! 282: jvc e6 /*error if V = 0 */ ! 283: jcc e6 /*error if C = 0 */ ! 284: jmp 1f ! 285: e6: movpsl _actual /* actual = psl maybe incorrect */ ! 286: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 287: movl $2,_ercode /* error code flag failure */ ! 288: jmp *badrtn ! 289: 1: bicpsw $Z ! 290: cmpl $RW6,dif /*dif = expected ? */ ! 291: jeql sw7 /* if no error continue */ ! 292: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 293: movl $1,_ercode /* error code data miscompare */ ! 294: movl dif,_actual /* actual data */ ! 295: movl $RW6,_expected /* expected data */ ! 296: jmp *badrtn ! 297: ! 298: sw7: ! 299: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 300: as7: callf $4,_setjmp /* save context for return from error */ ! 301: movab as7,_stpc /* save subtest starting address */ ! 302: movl $7,_subtst /* subtest number */ ! 303: movl $2,_no_opr /* number of operands in use */ ! 304: movl $SW1,_opr /* first operand */ ! 305: movl $MW1,_opr + 4 /* second operand */ ! 306: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 307: movl $SW1,r6 /*first operand */ ! 308: movl $MW1,r7 /*second operand */ ! 309: movl $INITW,r8 /*initialize destination */ ! 310: bicpsw $PSWMASK /*PSW = 0 */ ! 311: bispsw $(N|V|C) /* these flags ON */ ! 312: subw3 r6,r7,r8 /* try 'sub' instruction mem mem mem */ ! 313: jlss e7 /*error if N = 1 */ ! 314: jneq e7 /*error if Z = 0 */ ! 315: jvs e7 /*error if V = 1 */ ! 316: jcc e7 /*error if C = 0 */ ! 317: jmp 1f ! 318: e7: movpsl _actual /* actual = psl maybe incorrect */ ! 319: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 320: movl $2,_ercode /* error code flag failure */ ! 321: jmp *badrtn ! 322: 1: bicpsw $Z ! 323: cmpl $0x00,r8 /*r8 = expected ? */ ! 324: jeql sw8 /* if no error continue */ ! 325: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 326: movl $1,_ercode /* error code data miscompare */ ! 327: movl r8,_actual /* actual data */ ! 328: movl $0,_expected /* expected data */ ! 329: jmp *badrtn ! 330: ! 331: sw8: ! 332: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 333: as8: callf $4,_setjmp /* save context for return from error */ ! 334: movab as8,_stpc /* save subtest starting address */ ! 335: movl $8,_subtst /* subtest number */ ! 336: movl $2,_no_opr /* number of operands in use */ ! 337: movl $SW1,_opr /* first operand */ ! 338: movl $MW1,_opr + 4 /* second operand */ ! 339: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 340: movl $SW1,r6 /*first operand */ ! 341: movl $MW1,min /*second operand */ ! 342: movl $INITW,r8 /*initialize destination */ ! 343: bicpsw $PSWMASK /*PSW = 0 */ ! 344: bispsw $(N|V|C) /* these flags ON */ ! 345: subw3 r6,min+2,r8 /* try 'sub' instruction reg mem reg */ ! 346: jgeq e8 /*error if N = 1 */ ! 347: jeql e8 /*error if Z = 0 */ ! 348: jvs e8 /*error if V = 1 */ ! 349: jcs e8 /*error if C = 0 */ ! 350: jmp 1f ! 351: e8: movpsl _actual /* actual = psl maybe incorrect */ ! 352: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 353: movl $2,_ercode /* error code flag failure */ ! 354: jmp *badrtn ! 355: 1: bicpsw $Z ! 356: cmpl $0xeee10000,r8 /*r8 = expected ? */ ! 357: jeql sw9 /* if no error continue */ ! 358: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 359: movl $1,_ercode /* error code data miscompare */ ! 360: movl r8,_actual /* actual data */ ! 361: movl $0xeee10000,_expected /* expected data */ ! 362: jmp *badrtn ! 363: ! 364: sw9: ! 365: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 366: as9: callf $4,_setjmp /* save context for return from error */ ! 367: movab as9,_stpc /* save subtest starting address */ ! 368: movl $9,_subtst /* subtest number */ ! 369: movl $2,_no_opr /* number of operands in use */ ! 370: movl $SW1,_opr /* first operand */ ! 371: movl $MW1,_opr + 4 /* second operand */ ! 372: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 373: movl $SW1,r6 /*first operand */ ! 374: movl $INITW,r8 /*initialize destination */ ! 375: bicpsw $PSWMASK /*PSW = 0 */ ! 376: bispsw $(N|V|C) /* these flags ON */ ! 377: subw3 r6,$MW1,r8 /* try 'sub' instruction reg data reg */ ! 378: jlss e9 /*error if N = 1 */ ! 379: jneq e9 /*error if Z = 0 */ ! 380: jvs e9 /*error if V = 1 */ ! 381: jcc e9 /*error if C = 0 */ ! 382: jmp 1f ! 383: e9: movpsl _actual /* actual = psl maybe incorrect */ ! 384: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 385: movl $2,_ercode /* error code flag failure */ ! 386: jmp *badrtn ! 387: 1: bicpsw $Z ! 388: cmpl $0x00,r8 /*r8 = expected ? */ ! 389: jeql sw10 /* if no error continue */ ! 390: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 391: movl $1,_ercode /* error code data miscompare */ ! 392: movl r8,_actual /* actual data */ ! 393: movl $0,_expected /* expected data */ ! 394: jmp *badrtn ! 395: ! 396: sw10: ! 397: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 398: as10: callf $4,_setjmp /* save context for return from error */ ! 399: movab as10,_stpc /* save subtest starting address */ ! 400: movl $0xa,_subtst /* subtest number */ ! 401: movl $2,_no_opr /* number of operands in use */ ! 402: movl $SW1,_opr /* first operand */ ! 403: movl $MW1,_opr + 4 /* second operand */ ! 404: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 405: movl $SW1,sub /*first operand */ ! 406: movl $MW1,r7 /*second operand */ ! 407: movl $INITW,r8 /*initialize destination */ ! 408: bicpsw $PSWMASK /*PSW = 0 */ ! 409: bispsw $(N|V|C) /* these flags ON */ ! 410: subw3 sub+2,r7,r8 /* try 'sub' instruction mem reg reg */ ! 411: jlss e10 /*error if N = 1 */ ! 412: jeql e10 /*error if Z = 0 */ ! 413: jvs e10 /*error if V = 1 */ ! 414: jcc e10 /*error if C = 0 */ ! 415: jmp 1f ! 416: e10: movpsl _actual /* actual = psl maybe incorrect */ ! 417: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 418: movl $2,_ercode /* error code flag failure */ ! 419: jmp *badrtn ! 420: 1: bicpsw $Z ! 421: cmpl $RW1,r8 /*r8 = expected ? */ ! 422: jeql sw11 /* if no error continue */ ! 423: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 424: movl $1,_ercode /* error code data miscompare */ ! 425: movl r8,_actual /* actual data */ ! 426: movl $RW1,_expected /* expected data */ ! 427: jmp *badrtn ! 428: ! 429: ! 430: sw11: ! 431: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 432: as11: callf $4,_setjmp /* save context for return from error */ ! 433: movab as11,_stpc /* save subtest starting address */ ! 434: movl $0xb,_subtst /* subtest number */ ! 435: movl $2,_no_opr /* number of operands in use */ ! 436: movl $SW1,_opr /* first operand */ ! 437: movl $MW1,_opr + 4 /* second operand */ ! 438: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 439: movl $SW1,r6 /*first operand */ ! 440: movl $MW1,r7 /*second operand */ ! 441: movl $INITW,r8 /*initialize destination */ ! 442: bicpsw $PSWMASK /*PSW = 0 */ ! 443: bispsw $(N|V|C) /* these flags ON */ ! 444: subw3 $SW1,r7,r8 /* try 'sub' instruction data reg reg */ ! 445: jlss e11 /*error if N = 1 */ ! 446: jneq e11 /*error if Z = 0 */ ! 447: jvs e11 /*error if V = 1 */ ! 448: jcc e11 /*error if C = 0 */ ! 449: jmp 1f ! 450: e11: movpsl _actual /* actual = psl maybe incorrect */ ! 451: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 452: movl $2,_ercode /* error code flag failure */ ! 453: jmp *badrtn ! 454: 1: bicpsw $Z ! 455: cmpl $0x00,r8 /*r8 = expected ? */ ! 456: jeql sw12 /* if no error continue */ ! 457: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 458: movl $1,_ercode /* error code data miscompare */ ! 459: movl r8,_actual /* actual data */ ! 460: movl $0,_expected /* expected data */ ! 461: jmp *badrtn ! 462: ! 463: ! 464: sw12: ! 465: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 466: as12: callf $4,_setjmp /* save context for return from error */ ! 467: movab as12,_stpc /* save subtest starting address */ ! 468: movl $0xc,_subtst /* subtest number */ ! 469: movl $2,_no_opr /* number of operands in use */ ! 470: movl $SW1,_opr /* first operand */ ! 471: movl $MW1,_opr + 4 /* second operand */ ! 472: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 473: movl $INITW,r8 /*initialize destination */ ! 474: bicpsw $PSWMASK /*PSW = 0 */ ! 475: bispsw $(N|V|C) /* these flags ON */ ! 476: subw3 $SW1,$MW1,r8 /* try 'sub' instruction data data reg */ ! 477: jlss e12 /*error if N = 1 */ ! 478: jneq e12 /*error if Z = 0 */ ! 479: jvs e12 /*error if V = 1 */ ! 480: jcc e12 /*error if C = 0 */ ! 481: jmp 1f ! 482: e12: movpsl _actual /* actual = psl maybe incorrect */ ! 483: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 484: movl $2,_ercode /* error code flag failure */ ! 485: jmp *badrtn ! 486: 1: bicpsw $Z ! 487: cmpl $0x00,r8 /*r8 = expected ? */ ! 488: jeql aldn /* if no error continue */ ! 489: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 490: movl $1,_ercode /* error code data miscompare */ ! 491: movl r8,_actual /* actual data */ ! 492: movl $0,_expected /* expected data */ ! 493: jmp *badrtn ! 494: ! 495: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 496: jmp *return ! 497: ! 498: ! 499: /* */ ! 500: /* Variables */ ! 501: /* */ ! 502: .align 2 ! 503: min: .space 4 ! 504: dif: .space 4 ! 505: sub: .space 4 ! 506: ! 507: /* End of file */ ! 508: ! 509:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.