|
|
1.1 ! root 1: /* PUSHAW instruction test */ ! 2: # ! 3: .set IPL,8 ! 4: .set MAPEN,9 ! 5: .set KSP,19 ! 6: ! 7: /* PSL fields */ ! 8: .set IV,32 ! 9: .set T,16 ! 10: .set N,8 ! 11: .set Z,4 ! 12: .set V,2 ! 13: .set C,1 ! 14: ! 15: /* constants */ ! 16: .set DISABLE,0 ! 17: .set ENABLE,1 ! 18: .set MAXPOSW,0x7fff ! 19: .set MAXNEGL,0x8000ffff ! 20: .set HIGH,31 /* highest interrupt priority */ ! 21: .set DISP,2 ! 22: .set LONG,4 ! 23: .set WORD,2 ! 24: .set BYTE,1 ! 25: ! 26: .globl _pushaw ! 27: _pushaw: ! 28: callf $4,_setjmp /* save context for return from error */ ! 29: movab _pushaw,_stpc /* address of subtest */ ! 30: movl $1,_subtst /* subtest number */ ! 31: movl $1,_no_opr /* number of operands in use */ ! 32: movab tstloc,_opr /* first operand */ ! 33: 0: bicpsw $(IV|T) /* disable exceptions */ ! 34: /* MOVE ADDRESS FROM MEMORY TO STACK(R14) */ ! 35: movab stk,r14 /* initialize stack */ ! 36: movab stk,r10 ! 37: bispsw $(N|Z|V ) /* set n,z,v flags */ ! 38: bicpsw $Z ! 39: pushaw tstloc /* push address tstloc on stack */ ! 40: jlss error1 /* error if any of the n,z,v */ ! 41: jeql error1 /* flags still set */ ! 42: jvs error1 ! 43: jcc error1 /* error if c flag clear */ ! 44: jmp 1f ! 45: error1: movpsl _actual /* actual = psl maybe incorrect */ ! 46: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 47: movl $2,_ercode /* error code flag failure */ ! 48: jmp *badrtn ! 49: 1: cmpl (r14),result /* check if stack has valid adr */ ! 50: jeql 1f ! 51: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 52: movl $1,_ercode /* error code data miscompare */ ! 53: movl (r14),_actual /* actual data */ ! 54: movl result,_expected /* expected data */ ! 55: jmp *badrtn ! 56: 1: bicpsw $Z ! 57: movab (r14),r13 ! 58: decl r10 ! 59: decl r10 ! 60: decl r10 ! 61: decl r10 ! 62: cmpl r10,r13 /* check if stack get decrement */ ! 63: jeql p2 ! 64: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 65: movl $1,_ercode /* error code data miscompare */ ! 66: movl r10,_actual /* actual data */ ! 67: movl r13,_expected /* expected data */ ! 68: jmp *badrtn ! 69: /* MOVE ADDRESS FROM REGISTER TO STACK */ ! 70: p2: ! 71: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 72: ap2: callf $4,_setjmp /* save context for return from error */ ! 73: movab ap2,_stpc /* address of subtest */ ! 74: movl $2,_subtst /* subtest number */ ! 75: movl $1,_no_opr /* number of operands in use */ ! 76: movl r12,_opr /* first operand */ ! 77: 0: movl result,r12 /* set r12 = address of tstloc */ ! 78: pushaw (r12) /* push address in r12 on stack */ ! 79: cmpl (r14),result /* compare result */ ! 80: jneq error2 ! 81: bicpsw $Z ! 82: movab (r14),r13 ! 83: decl r10 ! 84: decl r10 ! 85: decl r10 ! 86: decl r10 ! 87: cmpl r10,r13 /* check if stack get decrement */ ! 88: jeql chkflag ! 89: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 90: movl $1,_ercode /* error code data miscompare */ ! 91: movl r10,_actual /* actual data */ ! 92: movl r13,_expected /* expected data */ ! 93: jmp *badrtn ! 94: /* TESTING CONDITION FLAGS */ ! 95: chkflag: ! 96: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 97: ap3: callf $4,_setjmp /* save context for return from error */ ! 98: movab ap3,_stpc /* address of subtest */ ! 99: movl $3,_subtst /* subtest number */ ! 100: movl $1,_no_opr /* number of operands in use */ ! 101: movl $MAXNEGL,_opr /* first operand */ ! 102: 0: movl $MAXNEGL,r13 /* set r13 = $MAXNEGL */ ! 103: bispsw $(Z|V) /* set z,v flags */ ! 104: bicpsw $(C|N) /* clear n,c flag */ ! 105: pushaw (r13) /* push adr. in r13 on stack */ ! 106: jgeq error2 /* error if n flag clear */ ! 107: jcc error2 /* error if c flag clear */ ! 108: jeql error2 /* error if z flag still set */ ! 109: jvs error2 /* error if v flag still set */ ! 110: jmp 1f ! 111: error2: movpsl _actual /* actual = psl maybe incorrect */ ! 112: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 113: movl $2,_ercode /* error code flag failure */ ! 114: jmp *badrtn ! 115: 1: cmpl (r14),$MAXNEGL /* check address in temp */ ! 116: jeql p4 ! 117: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 118: movl $1,_ercode /* error code data miscompare */ ! 119: movl (r14),_actual /* actual data */ ! 120: movl $MAXNEGL,_expected /* expected data */ ! 121: jmp *badrtn ! 122: ! 123: p4: ! 124: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 125: ap4: callf $4,_setjmp /* save context for return from error */ ! 126: movab ap4,_stpc /* address of subtest */ ! 127: movl $4,_subtst /* subtest number */ ! 128: movl $1,_no_opr /* number of operands in use */ ! 129: movl $0,_opr /* first operand */ ! 130: 0: movl $0,r11 /* set r11 = $0 */ ! 131: bispsw $(N|V) /* set n,v flags */ ! 132: bicpsw $(Z|C) /* clear z,c flag */ ! 133: pushaw (r11) /* push adr. in r11 on stack */ ! 134: jcc error3 /* error if c flag clear */ ! 135: jneq error3 /* error if z flag clear */ ! 136: jlss error3 /* error if n flag still set */ ! 137: jvs error3 /* error if v flag still set */ ! 138: jmp 1f ! 139: error3: movpsl _actual /* actual = psl maybe incorrect */ ! 140: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 141: movl $2,_ercode /* error code flag failure */ ! 142: jmp *badrtn ! 143: 1: bicpsw $Z ! 144: cmpl (r14),$0 /* check address in temp */ ! 145: jeql p5 ! 146: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 147: movl $1,_ercode /* error code data miscompare */ ! 148: movl (r14),_actual /* actual data */ ! 149: movl $0,_expected /* expected data */ ! 150: jmp *badrtn ! 151: /* CHECKING INDEXING MODE */ ! 152: p5: ! 153: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 154: ap5: callf $4,_setjmp /* save context for return from error */ ! 155: movab ap5,_stpc /* address of subtest */ ! 156: movl $5,_subtst /* subtest number */ ! 157: movl $1,_no_opr /* number of operands in use */ ! 158: movl tstloc,_opr /* first operand */ ! 159: 0: movl $DISP,r0 /* set r0 = DISP = 2 */ ! 160: bispsw $(N|Z|V) /* set n,z,v flags */ ! 161: bicpsw $Z ! 162: pushaw tstloc[r0] /* move address tstloc on stack */ ! 163: jlss error4 /* error if any of the n,z,v */ ! 164: jeql error4 /* flags still set */ ! 165: jvs error4 ! 166: jcc error4 /* error if c flag clear */ ! 167: jmp 1f ! 168: error4: movpsl _actual /* actual = psl maybe incorrect */ ! 169: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 170: movl $2,_ercode /* error code flag failure */ ! 171: jmp *badrtn ! 172: 1: cmpl (r14),resul1 /* check if stack has valid adr */ ! 173: jeql aldn ! 174: bbs $0,_scoplp,0b /* if set scope loop on error */ ! 175: movl $1,_ercode /* error code data miscompare */ ! 176: movl (r14),_actual /* actual data */ ! 177: movl resul1,_expected /* expected data */ ! 178: jmp *badrtn ! 179: ! 180: ! 181: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */ ! 182: jmp *return ! 183: ! 184: /* test data */ ! 185: .align 2 /* align on longword boundery */ ! 186: /* STACK SPACE */ ! 187: .space 40 /* 10 long words for stack */ ! 188: stk: .long 0 ! 189: tstloc: .long 0 ! 190: result: .long tstloc ! 191: resul1: .long tstloc+(DISP*WORD)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.