|
|
1.1 ! root 1: /* ADDB3 (add byte 3) test */ ! 2: /* */ ! 3: /*Test name = addb3 */ ! 4: /*Description = */ ! 5: /* This test checks 'addb3' instruction as follows: */ ! 6: /*add1 add2 sum N Z V C (flags) */ ! 7: /*___ ___ ______ _______________ */ ! 8: /*0x1111107f 0x1111107f 0x111110fe 0 0 1 0 */ ! 9: /*(127) (127) */ ! 10: /*0x11111080 0x11111080 0x11111000 0 1 1 1 */ ! 11: /*(-128) (-128) (0) */ ! 12: /*0x80 0xff 0x7f 0 0 1 1 */ ! 13: /*(-128) (-1) (127) */ ! 14: /*0x81 0x7f 0x00 0 1 0 1 */ ! 15: /*(-127) (127) (0) */ ! 16: /*0x80 0x7f 0xff 1 0 0 0 */ ! 17: /*(-128) (127) (-1) */ ! 18: /*0xc0 0xc0 0x80 1 0 0 1 */ ! 19: /*(-64) (-64) (-128) */ ! 20: /* */ ! 21: /* */ ! 22: /* */ ! 23: /* */ ! 24: /* constants definition for 'addx' tests. */ ! 25: /* */ ! 26: ! 27: .set A1B1,0x1111107f/*+127, highest +ve number, byte */ ! 28: .set A1W1,0x11107fff ! 29: .set A1L1,0x7fffffff ! 30: .set A2B1,0x1111107f/* +127 */ ! 31: .set A2W1,0x11107fff ! 32: .set A2L1,A1L1 ! 33: .set RB1,0x111110fe ! 34: .set RW1,0x1110fffe ! 35: .set RL1,0xfffffffe ! 36: .set A1B2,0x11111080/* -128 */ ! 37: .set A1W2,0x11108000 ! 38: .set A1L2,0x80000000 ! 39: .set A2B2,0x11111080/* -128 */ ! 40: .set A2W2,0x11118000 ! 41: .set A2L2,0X80000000 ! 42: .set RB2,0x11111000/* 0 */ ! 43: .set RW2,0x11100000 ! 44: .set RL2,0x00000000 ! 45: .set A1B3,0X80 /* -128 */ ! 46: .set A1W3,0x8000 ! 47: .set A1L3,0x80000000 ! 48: .set A2B3,0xff /* -1 */ ! 49: .set A2W3,0xffff ! 50: .set A2L3,0xffffffff ! 51: .set RB3,0x0000007f ! 52: .set RW3,0X00007fff ! 53: .set RL3,0X7fffffff ! 54: .set A1B4,0x81 /* -127 */ ! 55: .set A1W4,0x8001 ! 56: .set A1L4,0x80000001 ! 57: .set A2B4,0x7f /* 127 */ ! 58: .set A2W4,0x7fff ! 59: .set A2L4,0x7fffffff ! 60: .set RB4,0 /* 0 */ ! 61: .set RW4,RB4 ! 62: .set RL4,RB4 ! 63: .set A1B5,A1B3 /* -128 */ ! 64: .set A1W5,A1W3 ! 65: .set A1L5,A1L3 ! 66: .set A2B5,A2B4 /* 127 */ ! 67: .set A2W5,A2W4 ! 68: .set A2L5,A2L4 ! 69: .set RB5,0xff /* -1 */ ! 70: .set RW5,0xffff ! 71: .set RL5,0xffffffff ! 72: .set A1B6,0xc0 /* -64 */ ! 73: .set A1W6,0xc000 ! 74: .set A1L6,0xc0000000 ! 75: .set A2B6,A1B6 /* -64 */ ! 76: .set A2W6,A1W6 ! 77: .set A2L6,A1L6 ! 78: .set RB6,0x00000080 /* -128 */ ! 79: .set RW6,0x00008000 ! 80: .set RL6,0X80000000 ! 81: ! 82: .set INITB,0x11111055/* initialization values for 3 operand */ ! 83: .set INITW,0x11105555 ! 84: .set INITL,0X55555555 ! 85: ! 86: /* */ ! 87: /* Syst.s - Constants */ ! 88: /* */ ! 89: .set IPL,8 ! 90: .set HIGH,31 ! 91: .set ZERO,0 ! 92: .set ONES,0xffffffff ! 93: .set N,8 ! 94: .set Z,4 ! 95: .set V,2 ! 96: .set C,1 ! 97: .set T,16 ! 98: .set IV,32 ! 99: .set FU,64 ! 100: .set DV,128 ! 101: .set PSWMASK,0x003f ! 102: .set BMSK,0xff ! 103: ! 104: ! 105: .globl _addb3 ! 106: _addb3: ! 107: ab1: ! 108: callf $4,_setjmp /* save context for error return */ ! 109: movab ab1,_stpc /* progranm counter of subtest */ ! 110: movl $1,_subtst /*no error*/ ! 111: movl $2,_no_opr /* number of operands in use */ ! 112: movl $A1B1,_opr /* first operand */ ! 113: movl $A2B1,_opr + 4 /* second operand */ ! 114: 0: ! 115: bicpsw $PSWMASK /*PSW = 0 */ ! 116: movl $A1B1,add1 /*first operand */ ! 117: movl $A2B1,tmp2 /*second operand */ ! 118: movb tmp2+3,r7 /*second operand */ ! 119: movl $INITB,sum /*initial value */ ! 120: bispsw $(N|Z|C) /* these flags ON */ ! 121: addb3 add1+3,r7,sum+3 /* try 'add' instruction */ ! 122: jlss e1 /*error if N = 1 */ ! 123: jeql e1 /*error if Z = 1 */ ! 124: jvc e1 /*error if V = 0 */ ! 125: jcs e1 /*error if C = 1 */ ! 126: bicpsw $Z ! 127: cmpl $RB1,sum /*sum = expected ? */ ! 128: jeql ab1r /* if correct continue */ ! 129: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 130: movl $1,_ercode /* error code data miscompare */ ! 131: movl sum,_actual /* actual data */ ! 132: movl $RB1,_expected /* expected data */ ! 133: jmp *badrtn ! 134: e1: movpsl _actual /* actual = psl */ ! 135: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 136: movl $2,_ercode /* error code flag failure */ ! 137: jmp *badrtn ! 138: ! 139: ! 140: /* reverse operands */ ! 141: ! 142: ab1r: ! 143: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 144: aab1r: callf $4,_setjmp /* save context for error return */ ! 145: movab aab1r,_stpc /* progranm counter of subtest */ ! 146: movl $2,_subtst /*no error*/ ! 147: movl $2,_no_opr /* number of operands in use */ ! 148: movl $A2B1,_opr /* first operand */ ! 149: movl $0x7f,_opr + 4 /* second operand */ ! 150: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 151: movl $A2B1,add1 /*first operand */ ! 152: movl $INITB,sum ! 153: bispsw $(N|Z|C) /* these flags ON */ ! 154: addb3 add1+3,$0x7f,sum+3/* try 'add' instruction mem data mem */ ! 155: jlss e2 /*error if N = 1 */ ! 156: jeql e2 /*error if Z = 1 */ ! 157: jvc e2 /*error if V = 0 */ ! 158: jcs e2 /*error if C = 1 */ ! 159: bicpsw $Z ! 160: movl $RB1,r5 /*expected result*/ ! 161: cmpl $RB1,sum /*sum = expected ? */ ! 162: jeql ab2 /* if correct continue */ ! 163: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 164: movl $1,_ercode /* error code data miscompare */ ! 165: movl sum,_actual /* actual data */ ! 166: movl $RB1,_expected /* expected data */ ! 167: jmp *badrtn ! 168: e2: movpsl _actual /* actual = psl */ ! 169: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 170: movl $2,_ercode /* error code flag failure */ ! 171: jmp *badrtn ! 172: ! 173: ab2: ! 174: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 175: aab2: callf $4,_setjmp /* save context for error return */ ! 176: movab aab2,_stpc /* progranm counter of subtest */ ! 177: movl $3,_subtst /*no error*/ ! 178: movl $2,_no_opr /* number of operands in use */ ! 179: movl $-0x80,_opr /* first operand */ ! 180: movl $-0x80,_opr + 4 /* second operand */ ! 181: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 182: movl $INITB,sum ! 183: bispsw $N /* these flags ON */ ! 184: addb3 $-0x80,$-0x80,sum+3/* try 'add' instruction data data mem */ ! 185: jgeq e3 /*error if N = 1 */ ! 186: jeql e3 /*error if Z = 0 */ ! 187: jvc e3 /*error if V = 0 */ ! 188: jcc e3 /*error if C = 0 */ ! 189: bicpsw $Z ! 190: movl $RB2,r5 /*expected result*/ ! 191: cmpl $RB2,sum /*sum = expected ? */ ! 192: jeql ab2r /* if correct continue */ ! 193: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 194: movl $1,_ercode /* error code data miscompare */ ! 195: movl sum,_actual /* actual data */ ! 196: movl $RB2,_expected /* expected data */ ! 197: jmp *badrtn ! 198: e3: movpsl _actual /* actual = psl */ ! 199: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 200: movl $2,_ercode /* error code flag failure */ ! 201: jmp *badrtn ! 202: ! 203: ! 204: /* reverse operands */ ! 205: ! 206: ab2r: ! 207: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 208: aab2r: callf $4,_setjmp /* save context for error return */ ! 209: movab aab2r,_stpc /* progranm counter of subtest */ ! 210: movl $4,_subtst /*no error*/ ! 211: movl $2,_no_opr /* number of operands in use */ ! 212: movl $A2B2,_opr /* first operand */ ! 213: movl $A1B2,_opr + 4 /* second operand */ ! 214: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 215: movl $A2B2,add1 /*first operand */ ! 216: movl $A1B2,add2 /*second operand */ ! 217: movl $INITB,tmp3 ! 218: movb tmp3+3,r8 ! 219: bispsw $N /* these flags ON */ ! 220: addb3 add1+3,add2+3,r8/* try 'add' instruction mem mem reg */ ! 221: jgeq e4 /*error if N = 1 */ ! 222: jeql e4 /*error if Z = 0 */ ! 223: jvc e4 /*error if V = 0 */ ! 224: jcc e4 /*error if C = 0 */ ! 225: bicpsw $Z ! 226: movl $RB2,r5 /*expected result*/ ! 227: andl2 $BMSK,r5 ! 228: andl2 $BMSK,r8 /* mask off don't care bits */ ! 229: cmpl r5,r8 /*sum = expected ? */ ! 230: jeql ab3 /* if correct continue */ ! 231: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 232: movl $1,_ercode /* error code data miscompare */ ! 233: movl r5,_actual /* actual data */ ! 234: movl r8,_expected /* expected data */ ! 235: jmp *badrtn ! 236: e4: movpsl _actual /* actual = psl */ ! 237: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 238: movl $2,_ercode /* error code flag failure */ ! 239: jmp *badrtn ! 240: ! 241: ! 242: ! 243: ab3: ! 244: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 245: aab3: callf $4,_setjmp /* save context for error return */ ! 246: movab aab3,_stpc /* progranm counter of subtest */ ! 247: movl $5,_subtst /*no error*/ ! 248: movl $2,_no_opr /* number of operands in use */ ! 249: movl $-0x80,_opr /* first operand */ ! 250: movl $A2B3,_opr + 4 /* second operand */ ! 251: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 252: movl $A2B3,tmp2 ! 253: movb tmp2+3,r7 ! 254: movl $0,sum ! 255: bispsw $(N|Z) /* these flags ON */ ! 256: addb3 $-0x80,r7,sum+3 /* ' add ' inst, data reg mem */ ! 257: jgeq e5 /*error if N = 1 */ ! 258: jeql e5 /*error if Z = 1 */ ! 259: jvc e5 /*error if V = 0 */ ! 260: jcc e5 /*error if C = 0 */ ! 261: bicpsw $Z ! 262: cmpl $RB3,sum /*sum = expected ? */ ! 263: jeql ab3r /* if correct continue */ ! 264: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 265: movl $1,_ercode /* error code data miscompare */ ! 266: movl $RB3,_actual /* actual data */ ! 267: movl sum,_expected /* expected data */ ! 268: jmp *badrtn ! 269: e5: movpsl _actual /* actual = psl */ ! 270: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 271: movl $2,_ercode /* error code flag failure */ ! 272: jmp *badrtn ! 273: ! 274: ! 275: /* reverse operands */ ! 276: ! 277: ab3r: ! 278: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 279: aab3r: callf $4,_setjmp /* save context for error return */ ! 280: movab aab3r,_stpc /* progranm counter of subtest */ ! 281: movl $6,_subtst /*no error*/ ! 282: movl $2,_no_opr /* number of operands in use */ ! 283: movl $-0x80,_opr /* first operand */ ! 284: movl $A2B3,_opr + 4 /* second operand */ ! 285: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 286: movl $A1B3,tmp2 /*second operand */ ! 287: movb tmp2+3,r7 /*second operand */ ! 288: movl $0,r8 ! 289: bispsw $(N|Z) /* these flags ON */ ! 290: addb3 $-1,r7,r8 /* try 'add' instruction data reg reg */ ! 291: jgeq e6 /*error if N = 1 */ ! 292: jeql e6 /*error if Z = 1 */ ! 293: jvc e6 /*error if V = 0 */ ! 294: jcc e6 /*error if C = 0 */ ! 295: bicpsw $Z ! 296: movl $RB3,r5 /*expected result*/ ! 297: andl2 $BMSK,r5 ! 298: andl2 $BMSK,r8 /* mask off don't care bits */ ! 299: cmpl r5,r8 /*sum = expected ? */ ! 300: jeql ab4 /* if correct continue */ ! 301: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 302: movl $1,_ercode /* error code data miscompare */ ! 303: movl r8,_actual /* actual data */ ! 304: movl $RB3,_expected /* expected data */ ! 305: jmp *badrtn ! 306: e6: movpsl _actual /* actual = psl */ ! 307: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 308: movl $2,_ercode /* error code flag failure */ ! 309: jmp *badrtn ! 310: ! 311: ab4: ! 312: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 313: aab4: callf $4,_setjmp /* save context for error return */ ! 314: movab aab4,_stpc /* progranm counter of subtest */ ! 315: movl $7,_subtst /*no error*/ ! 316: movl $2,_no_opr /* number of operands in use */ ! 317: movl $A1B4,_opr /* first operand */ ! 318: movl $A2B4,_opr + 4 /* second operand */ ! 319: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 320: movl $A1B4,tmp /*first operand */ ! 321: movb tmp+3,r6 /*first operand */ ! 322: movl $0,r8 ! 323: bispsw $(N|V) /* these flags ON */ ! 324: addb3 r6,$A2B4,r8 /* try 'add' instruction reg data reg */ ! 325: jlss e7 /*error if N = 1 */ ! 326: jneq e7 /*error if Z = 0 */ ! 327: jvs e7 /*error if V = 1 */ ! 328: jcc e7 /*error if C = 0 */ ! 329: bicpsw $Z ! 330: movl $RB4,r5 /*expected result*/ ! 331: andl2 $BMSK,r5 ! 332: andl2 $BMSK,r8 /* mask off don't cares */ ! 333: cmpl r5,r8 /*sum = expected ? */ ! 334: jeql ab4r /* if correct continue */ ! 335: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 336: movl $1,_ercode /* error code data miscompare */ ! 337: movl r8,_actual /* actual data */ ! 338: movl $RB4,_expected /* expected data */ ! 339: jmp *badrtn ! 340: e7: movpsl _actual /* actual = psl */ ! 341: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 342: movl $2,_ercode /* error code flag failure */ ! 343: jmp *badrtn ! 344: ! 345: ! 346: /* reverse operands */ ! 347: ! 348: ab4r: ! 349: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 350: aab4r: callf $4,_setjmp /* save context for error return */ ! 351: movab aab4r,_stpc /* progranm counter of subtest */ ! 352: movl $8,_subtst /*no error*/ ! 353: movl $2,_no_opr /* number of operands in use */ ! 354: movl $A2B4,_opr /* first operand */ ! 355: movl $A1B4,_opr + 4 /* second operand */ ! 356: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 357: movl $A2B4,tmp /*first operand */ ! 358: movb tmp+3,r6 /*first operand */ ! 359: movl $A2B4,r6 /*first operand */ ! 360: movl $A1B4,tmp2 /*first operand */ ! 361: movb tmp2+3,r7 /*first operand */ ! 362: movl $0,r8 ! 363: bispsw $(N|V) /* these flags ON */ ! 364: addb3 r6,r7,r8 /* try 'add' instruction reg reg reg */ ! 365: jlss e8 /*error if N = 1 */ ! 366: jneq e8 /*error if Z = 0 */ ! 367: jvs e8 /*error if V = 1 */ ! 368: jcc e8 /*error if C = 0 */ ! 369: bicpsw $Z ! 370: movl $RB4,r5 /*expected result*/ ! 371: andl2 $BMSK,r5 ! 372: andl2 $BMSK,r8 /* mask off don't cares */ ! 373: cmpl r5,r8 /*sum = expected ? */ ! 374: jeql ab5 /* if correct continue */ ! 375: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 376: movl $1,_ercode /* error code data miscompare */ ! 377: movl r8,_actual /* actual data */ ! 378: movl $RB4,_expected /* expected data */ ! 379: jmp *badrtn ! 380: e8: movpsl _actual /* actual = psl */ ! 381: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 382: movl $2,_ercode /* error code flag failure */ ! 383: jmp *badrtn ! 384: ! 385: ! 386: ! 387: ab5: ! 388: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 389: aab5: callf $4,_setjmp /* save context for error return */ ! 390: movab aab5,_stpc /* progranm counter of subtest */ ! 391: movl $9,_subtst /*no error*/ ! 392: movl $2,_no_opr /* number of operands in use */ ! 393: movl $A1B5,_opr /* first operand */ ! 394: movl $A2B5,_opr + 4 /* second operand */ ! 395: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 396: movl $A1B5,add1 /*first operand */ ! 397: movl $A2B5,add2 /*second operand */ ! 398: movl $0,sum ! 399: bispsw $(V|Z|C) /* these flags ON */ ! 400: addb3 add1+3,add2+3,sum+3/* try 'add' instr mem mem mem */ ! 401: jgeq e9 /*error if N = 0 */ ! 402: jeql e9 /*error if Z = 1 */ ! 403: jvs e9 /*error if V = 1 */ ! 404: jcs e9 /*error if C = 1 */ ! 405: bicpsw $Z ! 406: movl $RB5,r5 /*expected result*/ ! 407: cmpl $RB5,sum /*sum = expected ? */ ! 408: jeql ab5r /* if correct continue */ ! 409: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 410: movl $1,_ercode /* error code data miscompare */ ! 411: movl sum,_actual /* actual data */ ! 412: movl $RB5,_expected /* expected data */ ! 413: jmp *badrtn ! 414: e9: movpsl _actual /* actual = psl */ ! 415: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 416: movl $2,_ercode /* error code flag failure */ ! 417: jmp *badrtn ! 418: ! 419: ! 420: /* reverse operands */ ! 421: ! 422: ab5r: ! 423: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 424: aab5r: callf $4,_setjmp /* save context for error return */ ! 425: movab aab5r,_stpc /* progranm counter of subtest */ ! 426: movl $0xa,_subtst /*no error*/ ! 427: movl $2,_no_opr /* number of operands in use */ ! 428: movl $A2B5,_opr /* first operand */ ! 429: movl $A1B5,_opr + 4 /* second operand */ ! 430: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 431: movl $A2B5,tmp ! 432: movb tmp+3,r6 ! 433: movl $A1B5,tmp2 /*second operand */ ! 434: movb tmp2+3,r7 /*second operand */ ! 435: movl $0,sum ! 436: bispsw $(V|Z|C) /* these flags ON */ ! 437: addb3 r6,r7,sum+3 /* try 'add' instruction reg reg mem */ ! 438: jgeq e10 /*error if N = 0 */ ! 439: jeql e10 /*error if Z = 1 */ ! 440: jvs e10 /*error if V = 1 */ ! 441: jcs e10 /*error if C = 1 */ ! 442: bicpsw $Z ! 443: movl $RB5,r5 /*expected result*/ ! 444: cmpl $RB5,sum /*sum = expected ? */ ! 445: jeql ab6 /* if correct continue */ ! 446: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 447: movl $1,_ercode /* error code data miscompare */ ! 448: movl sum,_actual /* actual data */ ! 449: movl $RB5,_expected /* expected data */ ! 450: jmp *badrtn ! 451: e10: movpsl _actual /* actual = psl */ ! 452: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 453: movl $2,_ercode /* error code flag failure */ ! 454: jmp *badrtn ! 455: ! 456: ab6: ! 457: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 458: aab6: callf $4,_setjmp /* save context for error return */ ! 459: movab aab6,_stpc /* progranm counter of subtest */ ! 460: movl $0xb,_subtst /*no error*/ ! 461: movl $2,_no_opr /* number of operands in use */ ! 462: movl $A1B6,_opr /* first operand */ ! 463: movl $A2B6,_opr + 4 /* second operand */ ! 464: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 465: movl $A1B6,add1 /*first operand */ ! 466: movl $A2B6,add2 /*second operand */ ! 467: movl $0,sum ! 468: bispsw $(Z|V) /* these flags ON */ ! 469: addb3 add1+3,add2+3,sum+3/* try 'add' instruction */ ! 470: jgeq e11 /*error if N = 0 */ ! 471: jeql e11 /*error if Z = 1 */ ! 472: jvs e11 /*error if V = 1 */ ! 473: jcc e11 /*error if C = 0 */ ! 474: bicpsw $Z ! 475: movl $RB6,r5 /*expected result*/ ! 476: cmpl $RB6,sum /*sum = expected ? */ ! 477: jeql ab6r /* if correct continue */ ! 478: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 479: movl $1,_ercode /* error code data miscompare */ ! 480: movl sum,_actual /* actual data */ ! 481: movl $RB6,_expected /* expected data */ ! 482: jmp *badrtn ! 483: e11: movpsl _actual /* actual = psl */ ! 484: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 485: movl $2,_ercode /* error code flag failure */ ! 486: jmp *badrtn ! 487: ! 488: ! 489: /* reverse operands */ ! 490: ! 491: ab6r: ! 492: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 493: aab6r: callf $4,_setjmp /* save context for error return */ ! 494: movab aab6r,_stpc /* progranm counter of subtest */ ! 495: movl $0xc,_subtst /*no error*/ ! 496: movl $2,_no_opr /* number of operands in use */ ! 497: movl $A1B6,_opr /* first operand */ ! 498: movl $A2B6,_opr + 4 /* second operand */ ! 499: 0: bicpsw $PSWMASK /*PSW = 0 */ ! 500: movl $A2B6,add1 /*first operand */ ! 501: movl $A1B6,add2 /*second operand */ ! 502: movl $0,sum ! 503: bispsw $(Z|V) /* these flags ON */ ! 504: addb3 add1+3,add2+3,sum+3/* try 'add' instruction */ ! 505: jgeq e12 /*error if N = 0 */ ! 506: jeql e12 /*error if Z = 1 */ ! 507: jvs e12 /*error if V = 1 */ ! 508: jcc e12 /*error if C = 0 */ ! 509: bicpsw $Z ! 510: movl $RB6,r5 /*expected result*/ ! 511: cmpl $RB6,sum /*sum = expected ? */ ! 512: jeql e555 /* if correct continue */ ! 513: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 514: movl $1,_ercode /* error code data miscompare */ ! 515: movl sum,_actual /* actual data */ ! 516: movl $RB6,_expected /* expected data */ ! 517: jmp *badrtn ! 518: e12: movpsl _actual /* actual = psl */ ! 519: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 520: movl $2,_ercode /* error code flag failure */ ! 521: jmp *badrtn ! 522: e555: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 523: jmp *return ! 524: /*test passed , goto monitor */ ! 525: ! 526: /* */ ! 527: /* Variables */ ! 528: /* */ ! 529: .align 2 ! 530: add1: .space 4 ! 531: add2: .space 4 ! 532: sum: .space 4 ! 533: add: .space 4 ! 534: tmp: .space 4 ! 535: tmp2: .space 4 ! 536: tmp3: .space 4 ! 537: ! 538: /* End of file */ ! 539: ! 540:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.