|
|
1.1 ! root 1: /* DECW instruction test */ ! 2: /* DECL has been tested prior to this test */ ! 3: /* Privilege registers */ ! 4: ! 5: .set IPL,8 ! 6: .set MAPEN,9 ! 7: .set KSP,19 ! 8: ! 9: /* PSL fields */ ! 10: .set IV,32 ! 11: .set T,16 ! 12: .set N,8 ! 13: .set Z,4 ! 14: .set V,2 ! 15: .set C,1 ! 16: ! 17: /* constants */ ! 18: .set MAXPOSL,0x7fffffff ! 19: .set MAXNEGL,0x80000000 ! 20: .set MAXPOSW,0x7fff ! 21: .set MAXNEGW,0x8000 ! 22: .set MAXPOSB,0x7f ! 23: .set MAXNEGB,0x80 ! 24: .set ZERO,0 ! 25: .set ONES,0xffffffff ! 26: .set HIGH,31 /* highest interrupt priority */ ! 27: ! 28: .globl _dec_w ! 29: _dec_w: ! 30: callf $4,_setjmp /* save context for error return */ ! 31: movab _dec_w,_stpc /* save address of subtest start */ ! 32: movl $1,_subtst /* subtest number */ ! 33: movl $1,_no_opr /* number of operands in use */ ! 34: movl $1,_opr /* first operand */ ! 35: 0: movl $1,r3 /* load r3 with 1 */ ! 36: bispsw $(N|V) /* set n,v flags */ ! 37: bicpsw $(C|Z) /* clear c,z flag */ ! 38: decw r3 /* decrement r3 */ ! 39: jneq error1 /* error if z flag not set */ ! 40: jcc error1 /* error if c flag not set */ ! 41: jlss error1 /* error if n flag still set */ ! 42: jvs error1 /* error if v flag still set */ ! 43: jmp 1f ! 44: error1: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 45: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 46: movl $2,_ercode /* error code flag failure */ ! 47: jmp *badrtn ! 48: 1: cmpl $0,r3 /* compare r3 to 0 */ ! 49: jeql ovf1 /* no error then continue */ ! 50: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 51: movl $1,_ercode /* error code data miscompare */ ! 52: movl r3,_actual /* actual data */ ! 53: movl $0,_expected /* expected data */ ! 54: jmp *badrtn ! 55: ! 56: ovf1: /* To be tested in phase 2 */ ! 57: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 58: ad2: callf $4,_setjmp /* save context for error return */ ! 59: movab ad2,_stpc /* save address of subtest start */ ! 60: movl $2,_subtst /* subtest number */ ! 61: movl $1,_no_opr /* number of operands in use */ ! 62: movl $MAXNEGL,_opr /* first operand */ ! 63: 0: movl $MAXNEGL,r3 /* load r3 with largest neg. value */ ! 64: bispsw $Z /* set z flags */ ! 65: bicpsw $(V|C|N) /* clear n,v,c flag */ ! 66: decw r3 /* decrement r3 */ ! 67: jeql error2 /* error if z flag still set */ ! 68: jgeq error2 /* error if n flag not set */ ! 69: jcc error2 /* error if c flag not set */ ! 70: jvs error2 /* error if v flag not set */ ! 71: jmp 1f ! 72: error2: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 73: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 74: movl $2,_ercode /* error code flag failure */ ! 75: jmp *badrtn ! 76: 1: cmpl $MAXPOSL,r3 /* compare r3 to largest pos. value */ ! 77: jeql d3 /* no error then continue */ ! 78: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 79: movl $1,_ercode /* error code data miscompare */ ! 80: movl r3,_actual /* actual data */ ! 81: movl $MAXPOSL,_expected /* expected data */ ! 82: jmp *badrtn ! 83: ! 84: d3: ! 85: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 86: ad3: callf $4,_setjmp /* save context for error return */ ! 87: movab ad3,_stpc /* save address of subtest start */ ! 88: movl $3,_subtst /* subtest number */ ! 89: movl $1,_no_opr /* number of operands in use */ ! 90: movl $0,_opr /* first operand */ ! 91: 0: movl $0,r3 ! 92: bispsw $(C|Z|V) /* set c,z,v flags */ ! 93: bicpsw $N /* clear n flag */ ! 94: decw r3 ! 95: jeql error3 /* error if z flag still set */ ! 96: jcs error3 /* error if c flag still set */ ! 97: jvs error3 /* error if v flag still set */ ! 98: jgeq error3 /* error if n flag clear */ ! 99: jmp 1f ! 100: error3: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 101: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 102: movl $2,_ercode /* error code flag failure */ ! 103: jmp *badrtn ! 104: 1: cmpl $0xffffffff,r3 /* compare r3 to -1 */ ! 105: jeql decmw /* no error then continue */ ! 106: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 107: movl $1,_ercode /* error code data miscompare */ ! 108: movl r3,_actual /* actual data */ ! 109: movl $0xffffffff,_expected /* expected data */ ! 110: jmp *badrtn ! 111: ! 112: decmw: /* DECREMENT MEMORY */ ! 113: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 114: ad4: callf $4,_setjmp /* save context for error return */ ! 115: movab ad4,_stpc /* save address of subtest start */ ! 116: movl $4,_subtst /* subtest number */ ! 117: movl $1,_no_opr /* number of operands in use */ ! 118: movl $0x0001ffff,_opr /* first operand */ ! 119: 0: movl $0x0001ffff,tstloc /* load tstloc with 0x0001ffff */ ! 120: bispsw $(N|V) /* set n,v flags */ ! 121: bicpsw $(C|Z) /* clear c,z flag */ ! 122: decw tstloc /* decrement value in tstloc */ ! 123: jneq error4 /* error if z flag not set */ ! 124: jcc error4 /* error if c flag not set */ ! 125: jlss error4 /* error if n flag still set */ ! 126: jvs error4 /* error if v flag still set */ ! 127: jmp 1f ! 128: error4: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 129: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 130: movl $2,_ercode /* error code flag failure */ ! 131: jmp *badrtn ! 132: bicpsw $Z ! 133: 1: cmpl $0x0000ffff,tstloc /* compare tstloc to 0x0000ffff */ ! 134: jeql ovf2 /* no error then continue */ ! 135: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 136: movl $1,_ercode /* error code data miscompare */ ! 137: movl tstloc,_actual /* actual data */ ! 138: movl $0x0000ffff,_expected /* expected data */ ! 139: jmp *badrtn ! 140: ovf2: ! 141: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 142: ad5: callf $4,_setjmp /* save context for error return */ ! 143: movab ad5,_stpc /* save address of subtest start */ ! 144: movl $5,_subtst /* subtest number */ ! 145: movl $1,_no_opr /* number of operands in use */ ! 146: movl $0x80003333,_opr /* first operand */ ! 147: 0: movl $0x80003333,tstloc ! 148: bispsw $Z /* set z flags */ ! 149: bicpsw $(V|C|N) /* clear n,v,c flags */ ! 150: decw tstloc /* decrement tstloc */ ! 151: jeql error5 /* error if z flag still set */ ! 152: jgeq error5 /* error if n flag not set */ ! 153: jcc error5 /* error if c flag not set */ ! 154: jvc error5 /* error if v flag not set */ ! 155: jmp 1f ! 156: error5: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 157: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 158: movl $2,_ercode /* error code flag failure */ ! 159: jmp *badrtn ! 160: 1: cmpl $0x7fff3333,tstloc /* tstloc == 0x7fff3333 */ ! 161: jeql d6 /* no error then continue */ ! 162: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 163: movl $1,_ercode /* error code data miscompare */ ! 164: movl tstloc,_actual /* actual data */ ! 165: movl $0x7fff3333,_expected /* expected data */ ! 166: jmp *badrtn ! 167: ! 168: d6: ! 169: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 170: ad6: callf $4,_setjmp /* save context for error return */ ! 171: movab ad6,_stpc /* save address of subtest start */ ! 172: movl $6,_subtst /* subtest number */ ! 173: movl $1,_no_opr /* number of operands in use */ ! 174: movl $0x0000ffff,_opr /* first operand */ ! 175: 0: movl $0x0000ffff,tstloc /* set tstloc = 0x0000ffff */ ! 176: bispsw $(Z|V|C) /* set z,v,c flags */ ! 177: bicpsw $N /* clear n flag */ ! 178: decw tstloc /* decrement tstloc */ ! 179: jgeq error6 /* error if n flag not set */ ! 180: jeql error6 /* error if z flag still set */ ! 181: jvs error6 /* error if v flag still set */ ! 182: jcs error6 /* error if c flag still set */ ! 183: jmp 1f ! 184: error6: movpsl _actual /* actual = psl MAYBE it is incorrect */ ! 185: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 186: movl $2,_ercode /* error code flag failure */ ! 187: jmp *badrtn ! 188: 1: cmpl $0xffffffff,tstloc /* tstloc == 0xffffffff */ ! 189: jeql aldn /* no error then continue */ ! 190: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 191: movl $1,_ercode /* error code data miscompare */ ! 192: movl tstloc,_actual /* actual data */ ! 193: movl $0xffffffff,_expected /* expected data */ ! 194: jmp *badrtn ! 195: ! 196: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 197: jmp *return ! 198: ! 199: /* test data */ ! 200: .align 2 ! 201: tstloc: .long 0 ! 202: ! 203:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.