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