|
|
1.1 root 1:
2:
3:
4:
5:
6: /* TESTW (test word) test */
7:
8: /*Test name = tstw */
9: /*Description = */
10: /* This test checks "tstw" instruction to see that */
11: /* (1)Z, V, & C flags are set to zero (src < 0) & N = 1 */
12: /* (2)N, V, & C flags are set to zero (src = 0) & Z = 1 */
13: /* (3)all the flags are zero (src > 0). */
14: /* Register 1 (r1) & memory location tmloc(lebel) are used as */
15: /* src(source). */
16: /* */
17: /* Constants definition */
18: /* */
19: .set IPL,8
20: .set HIGH,31
21: .set ZERO,0
22: .set ONES,0xffffffff
23: .set N,8
24: .set Z,4
25: .set V,2
26: .set C,1
27: .set PSWMASK,0x003f
28: .set SRCB1,0xff
29: .set SRCW1,0xffff
30: .set SRCL1,0xffffffff
31: .set SRCB2,0
32: .set SRCW2,0
33: .set SRCL2,0
34: .set SRCB3,1
35: .set SRCW3,1
36: .set SRCL3,1
37:
38: .globl _tst_w
39: _tst_w:
40: callf $4,_setjmp /* save context for error return */
41: movab _tst_w,_stpc /* starting address of subtest */
42: movl $1,_subtst /* subtest number */
43: movl $1,_no_opr /* number of operands in use */
44: movl $SRCW1,_opr /* first operand */
45: 0: movl $SRCW1,r3 /*r3 = source */
46: bispsw $(Z|V|C) /*turn zero, overflow, & carry ON */
47: tstw r3 /*execute "tstw" */
48: beql error1 /*error if Z = 1 */
49: blss error1 /*error if N = 1 */
50: bvs error1 /*error if V = 1 */
51: bcc error1 /*error if C = 0 */
52: jmp t2
53: error1: movpsl _actual /* actual = psl is incorrect */
54: bbs $0,_scoplp,0b /* if set scope loop on error */
55: movl $2,_ercode /* error code flag failure */
56: jmp *badrtn
57: /* */
58: /* Now try src = 0 */
59: /* */
60: t2:
61: bbs $0,_force_lp,0b /* if set loop on last subtest */
62: at2: callf $4,_setjmp /* save context for error return */
63: movab at2,_stpc /* starting address of subtest */
64: movl $2,_subtst /* subtest number */
65: movl $1,_no_opr /* number of operands in use */
66: movl $SRCW2,_opr /* first operand */
67: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */
68: movl $SRCW2,r3 /*r3 = source */
69: bispsw $(N|V|C) /*turn neg, overflow, & carry ON */
70: tstw r3 /*execute "tstw" */
71: bneq error2 /*error if Z = 0 */
72: blss error2 /*error if N = 1 */
73: bvs error2 /*error if V = 1 */
74: bcc error2 /*error if C = 0 */
75: jmp t3
76: error2: movpsl _actual /* actual = psl is incorrect */
77: bbs $0,_scoplp,0b /* if set scope loop on error */
78: movl $2,_ercode /* error code flag failure */
79: jmp *badrtn
80: /* */
81: /* Now try src > 0 */
82: /* */
83:
84: t3:
85: bbs $0,_force_lp,0b /* if set loop on last subtest */
86: at3: callf $4,_setjmp /* save context for error return */
87: movab at3,_stpc /* starting address of subtest */
88: movl $3,_subtst /* subtest number */
89: movl $1,_no_opr /* number of operands in use */
90: movl $SRCW3,_opr /* first operand */
91: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */
92: movl $SRCW3,r3 /*r3 = source */
93: bispsw $(Z|N|V|C) /*turn zero, neg, overflow, & carry ON */
94: tstw r3 /*execute "tstw" */
95: beql error3 /*error if Z = 1 */
96: blss error3 /*error if N = 1 */
97: bvs error3 /*error if V = 1 */
98: bcc error3 /*error if C = 0 */
99: jmp tstwm
100: error3: movpsl _actual /* actual = psl 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:
105: /* */
106: /* Now use memory location(tmloc) instead of r3 */
107: /* */
108: tstwm:
109: bbs $0,_force_lp,0b /* if set loop on last subtest */
110: at4: callf $4,_setjmp /* save context for error return */
111: movab at4,_stpc /* starting address of subtest */
112: movl $4,_subtst /* subtest number */
113: movl $1,_no_opr /* number of operands in use */
114: movl $SRCW1,_opr /* first operand */
115: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */
116: movl $SRCW1,tmloc /*tmloc = source */
117: bispsw $(Z|V|C) /*turn zero, overflow, & carry ON */
118: tstw tmloc+2 /*execute "tstw" */
119: beql error4 /*error if Z = 1 */
120: bgeq error4 /*error if N = 0 */
121: bvs error4 /*error if V = 1 */
122: bcc error4 /*error if C = 0 */
123: jmp t5
124: error4: movpsl _actual /* actual = psl is incorrect */
125: bbs $0,_scoplp,0b /* if set scope loop on error */
126: movl $2,_ercode /* error code flag failure */
127: jmp *badrtn
128: /* */
129: /* Now try src = 0 */
130: /* */
131: t5:
132: bbs $0,_force_lp,0b /* if set loop on last subtest */
133: at5: callf $4,_setjmp /* save context for error return */
134: movab at5,_stpc /* starting address of subtest */
135: movl $5,_subtst /* subtest number */
136: movl $1,_no_opr /* number of operands in use */
137: movl $SRCW2,_opr /* first operand */
138: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */
139: bispsw $(N|V|C) /*turn neg, overflow, & carry ON */
140: tstw $SRCW2 /*execute "tstw" immediate data */
141: bneq error5 /*error if Z = 0 */
142: blss error5 /*error if N = 1 */
143: bvs error5 /*error if V = 1 */
144: bcc error5 /*error if C = 0 */
145: jmp t6
146: error5: movpsl _actual /* actual = psl is incorrect */
147: bbs $0,_scoplp,0b /* if set scope loop on error */
148: movl $2,_ercode /* error code flag failure */
149: jmp *badrtn
150: /* */
151: /* Now try src > 0 */
152: /* */
153:
154: t6:
155: bbs $0,_force_lp,0b /* if set loop on last subtest */
156: at6: callf $4,_setjmp /* save context for error return */
157: movab at6,_stpc /* starting address of subtest */
158: movl $6,_subtst /* subtest number */
159: movl $1,_no_opr /* number of operands in use */
160: movl $SRCW3,_opr /* first operand */
161: 0: bicpsw $PSWMASK /*disable overflow & other enable bits */
162: movl $SRCW3,tmloc /*tmloc = source */
163: bispsw $(Z|N|V|C) /*turn zero, neg, overflow, & carry ON */
164: tstw tmloc+2 /*execute "tstw" */
165: beql error6 /*error if Z = 1 */
166: blss error6 /*error if N = 1 */
167: bvs error6 /*error if V = 1 */
168: bcc error6 /*error if C = 0 */
169: jmp aldn
170: error6: movpsl _actual /* actual = psl is incorrect */
171: bbs $0,_scoplp,0b /* if set scope loop on error */
172: movl $2,_ercode /* error code flag failure */
173: jmp *badrtn
174:
175:
176: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */
177: jmp *return /* good, return to monitor */
178:
179:
180: /* */
181: /* Variables */
182: /* */
183: .align 2
184: tmloc: .space 4
185:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.