|
|
1.1 root 1:
2:
3:
4: /* ORW3 (or word 3 operand) test */
5:
6: /*Test name = orw3 */
7: /*Description = */
8: /* This test checks 'orw3' instruction as follows: */
9: /* source mask destination Z N C V(flags) */
10: /* ___________ ____ ___________ _____________ */
11: /* 0xaaaa 0xaaaa 0x7fffffaa 0 0 1 0 */
12: /* 0xaaaa 0x5555 0x7fffffff 0 0 1 0 */
13: /* 0x0000 0x0000 0x00000000 1 0 x 0 */
14: /* R R R --- */
15: /* M M M --- */
16: /* R M M --- */
17: /* M R R --- */
18: /* */
19: /* */
20: /* */
21: /* Constants */
22: /* */
23: .set MASK1B3,0xaa
24: .set MASK1W3,0xaaaa
25: .set MASK1L3,0xaaaaaaaa
26: .set MASK2B3,0x55
27: .set MASK2W3,0x5555
28: .set MASK2L3,0x55555555
29: .set MASK3B3,0x00
30: .set MASK3W3,0x0000
31: .set MASK3L3,0x00000000
32: .set SOURCE1B3,0xaa
33: .set SOURCE1W3,0xaaaa
34: .set SOURCE1L3,0xaaaaaaaa
35: .set SOURCE2B3,0xaa
36: .set SOURCE2W3,0xaaaa
37: .set SOURCE2L3,0xaaaaaaaa
38: .set SOURCE3B3,0x00
39: .set SOURCE3W3,0x0000
40: .set SOURCE3L3,0x00000000
41: .set INIT1B3,0x7fffff00
42: .set INIT1W3,0x7fff0000
43: .set INIT1L3,0x00000000
44: .set INIT3B3,0x7fffffff
45: .set INIT3W3,INIT3B3
46: .set INIT3L3,INIT3B3
47: .set EXP1B3,0x7fffffaa
48: .set EXP1W3,0x7fffaaaa
49: .set EXP1L3,0xaaaaaaaa
50: .set EXP2B3,0x7fffffff
51: .set EXP2W3,0x7fffffff
52: .set EXP2L3,0xffffffff
53: .set EXP3B3,0x00000000
54: .set EXP3W3,EXP3B3
55: .set EXP3L3,EXP3B3
56:
57: /* */
58: /* */
59: /* */
60: /* Syst.s - constants */
61: /* */
62: .set IPL,8
63: .set HIGH,31
64: .set ZERO,0
65: .set ONES,0xffffffff
66: .set N,8
67: .set Z,4
68: .set V,2
69: .set C,1
70: .set T,16
71: .set IV,32
72: .set FU,64
73: .set DV,128
74: .set PSWMASK,0x003f
75: /* */
76:
77: .globl _orw3
78: _orw3:
79: callf $4,_setjmp /* save context for error return */
80: movab _orw3,_stpc /* starting address of subtest */
81: movl $1,_subtst /* subtest number */
82: movl $2,_no_opr /* number of operands in use */
83: movl $MASK1W3,_opr /* first operand */
84: movl $SOURCE1W3,_opr + 4 /* second operand */
85: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
86: movl $MASK1W3,r3 /*mask */
87: movl $SOURCE1W3,r4 /*source */
88: movl $INIT1W3,r5 /*destination */
89: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
90: orw3 r3,r4,r5 /*try it reg reg reg */
91: jeql error1 /*error if Z = 1 */
92: jlss error1 /*error if N =1 */
93: jcc error1 /*error if C = 0 */
94: jvs error1 /*error if V = 1 */
95: jmp 1f
96: error1: movpsl _actual /* actual data */
97: bbs $0,_scoplp,0b /* if set scope loop on error */
98: movl $2,_ercode /* error code flag failure */
99: jmp *badrtn
100: 1: cmpl r5,$0xaaaa /*if dest <> expected value, */
101: jeql o2 /* if no error continue */
102: bbs $0,_scoplp,0b /* if set scope loop on error */
103: movl $1,_ercode /* error code data miscompare */
104: movl r5,_actual /* actual data */
105: movl $0xaaaa,_expected /* expected data */
106: jmp *badrtn
107:
108: /* Now try another mask(0x5555) */
109: /* */
110:
111: o2:
112: bbs $0,_force_lp,0b /* if set loop on last subtest */
113: ao2: callf $4,_setjmp /* save context for error return */
114: movab ao2,_stpc /* starting address of subtest */
115: movl $2,_subtst /* subtest number */
116: movl $2,_no_opr /* number of operands in use */
117: movl $MASK2W3,_opr /* first operand */
118: movl $SOURCE2W3,_opr + 4 /* second operand */
119: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
120: movl $MASK2W3,r3 /*mask */
121: movl $SOURCE2W3,r4 /*source */
122: movl $INIT1W3,dest /*destination */
123: bispsw $(Z|V) /*overflow & zero bits ON */
124: orw3 r3,r4,dest+2 /* try again reg reg mem */
125: jeql error2 /*error if Z = 1 */
126: jlss error2 /*error if N =1 */
127: jcc error2 /*error if C = 0 */
128: jvs error2 /*error if V = 1 */
129: jmp 1f
130: error2: movpsl _actual /* actual data */
131: bbs $0,_scoplp,0b /* if set scope loop on error */
132: movl $2,_ercode /* error code flag failure */
133: jmp *badrtn
134: 1: movl $0x7fffffff,r6
135: cmpl dest,r6 /*if dest <> expected value, */
136: jeql o3 /* if no error continue */
137: bbs $0,_scoplp,0b /* if set scope loop on error */
138: movl $1,_ercode /* error code data miscompare */
139: movl dest,_actual /* actual data */
140: movl r6,_expected /* expected data */
141: jmp *badrtn
142:
143:
144: /* Now try another mask(0x0000), source(0x0000) & dest(0x0000) */
145:
146: o3:
147: bbs $0,_force_lp,0b /* if set loop on last subtest */
148: ao3: callf $4,_setjmp /* save context for error return */
149: movab ao3,_stpc /* starting address of subtest */
150: movl $3,_subtst /* subtest number */
151: movl $2,_no_opr /* number of operands in use */
152: movl $MASK3W3,_opr /* first operand */
153: movl $SOURCE3W3,_opr + 4 /* second operand */
154: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
155: movl $MASK3W3,r3 /*mask */
156: movl $INIT3W3,r5 /*destination */
157: bispsw $(N|V) /*overflow & negetive bits ON */
158: orw3 r3,$SOURCE3W3,r5/* reg to data to reg */
159: jneq error3 /*error if Z = 0 */
160: jlss error3 /*error if N = 1 */
161: jcc error3 /*error if C = 0 */
162: jvs error3 /*error if V = 1 */
163: jmp 1f
164: error3: movpsl _actual /* actual data */
165: bbs $0,_scoplp,0b /* if set scope loop on error */
166: movl $2,_ercode /* error code flag failure */
167: jmp *badrtn
168: 1: cmpl r5,$EXP3W3 /*if dest <> expected value, */
169: jeql orw3mmm /* if no error continue */
170: bbs $0,_scoplp,0b /* if set scope loop on error */
171: movl $1,_ercode /* error code data miscompare */
172: movl r5,_actual /* actual data */
173: movl $EXP3W3,_expected /* expected data */
174: jmp *badrtn
175:
176: /* */
177: /* now try source = M, mask = M, destination = M */
178: orw3mmm:
179: bbs $0,_force_lp,0b /* if set loop on last subtest */
180: ao4: callf $4,_setjmp /* save context for error return */
181: movab ao4,_stpc /* starting address of subtest */
182: movl $4,_subtst /* subtest number */
183: movl $2,_no_opr /* number of operands in use */
184: movl $MASK3W3,_opr /* first operand */
185: movl $SOURCE3W3,_opr + 4 /* second operand */
186: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
187: movl $MASK1W3,mask /*mask */
188: movl $SOURCE1W3,source/*source */
189: movl $INIT1W3,dest /*destination */
190: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
191: orw3 mask+2,source+2,dest+2/*try it mem mem mem */
192: jeql error4 /*error if Z = 1 */
193: jgeq error4 /*error if N =0 */
194: jcc error4 /*error if C = 0 */
195: jvs error4 /*error if V = 1 */
196: jmp 1f
197: error4: movpsl _actual /* actual data */
198: bbs $0,_scoplp,0b /* if set scope loop on error */
199: movl $2,_ercode /* error code flag failure */
200: jmp *badrtn
201: 1: cmpl dest,$EXP1W3 /*if dest <> expected value, */
202: jeql o5 /* if no error continue */
203: bbs $0,_scoplp,0b /* if set scope loop on error */
204: movl $1,_ercode /* error code data miscompare */
205: movl dest,_actual /* actual data */
206: movl $EXP1W3,_expected /* expected data */
207: jmp *badrtn
208:
209: /* Now try another mask(0x5555) */
210: /* */
211:
212: o5:
213: bbs $0,_force_lp,0b /* if set loop on last subtest */
214: ao5: callf $4,_setjmp /* save context for error return */
215: movab ao5,_stpc /* starting address of subtest */
216: movl $5,_subtst /* subtest number */
217: movl $2,_no_opr /* number of operands in use */
218: movl $MASK2W3,_opr /* first operand */
219: movl $SOURCE2W3,_opr + 4 /* second operand */
220: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
221: movl $MASK2W3,mask /*mask */
222: movl $SOURCE2W3,source/*source */
223: movl $INIT1W3,r5 /*destination */
224: bispsw $(Z|V) /*overflow & zero bits ON */
225: orw3 mask+2,source+2,r5/*try it mem mem reg */
226: jeql error5 /*error if Z = 1 */
227: jgeq error5 /*error if N =0 */
228: jcc error5 /*error if C = 0 */
229: jvs error5 /*error if V = 1 */
230: jmp 1f
231: error5: movpsl _actual /* actual data */
232: bbs $0,_scoplp,0b /* if set scope loop on error */
233: movl $2,_ercode /* error code flag failure */
234: jmp *badrtn
235: 1: movl $EXP2L3,r6
236: cmpl r5,r6 /*if dest <> expected value, */
237: jeql o6 /* if no error continue */
238: bbs $0,_scoplp,0b /* if set scope loop on error */
239: movl $1,_ercode /* error code data miscompare */
240: movl r5,_actual /* actual data */
241: movl r6,_expected /* expected data */
242: jmp *badrtn
243: /* */
244: /* Now try another mask(0x0000), source(0x0000), & dest(0x0000) */
245: /* */
246: o6:
247: bbs $0,_force_lp,0b /* if set loop on last subtest */
248: ao6: callf $4,_setjmp /* save context for error return */
249: movab ao6,_stpc /* starting address of subtest */
250: movl $6,_subtst /* subtest number */
251: movl $2,_no_opr /* number of operands in use */
252: movl $MASK3W3,_opr /* first operand */
253: movl $SOURCE3W3,_opr + 4 /* second operand */
254: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
255: movl $MASK3W3,mask /*mask */
256: movl $SOURCE3W3,r4 /*source */
257: movl $INIT3W3,dest /*destination */
258: bispsw $(N|V) /*overflow & negetive bits ON */
259: orw3 mask+2,r4,dest+2/*try it mem reg mem */
260: jneq error6 /*error if Z = 0 */
261: jlss error6 /*error if N = 1 */
262: jcc error6 /*error if C = 0 */
263: jvs error6 /*error if V = 1 */
264: jmp 1f
265: error6: movpsl _actual /* actual data */
266: bbs $0,_scoplp,0b /* if set scope loop on error */
267: movl $2,_ercode /* error code flag failure */
268: jmp *badrtn
269: 1: movl $0x7fff0000,r6
270: cmpl dest,r6 /*if dest <> expected value, */
271: jeql orw3mrm /* if no error continue */
272: bbs $0,_scoplp,0b /* if set scope loop on error */
273: movl $1,_ercode /* error code data miscompare */
274: movl dest,_actual /* actual data */
275: movl r6,_expected /* expected data */
276: jmp *badrtn
277: /* */
278: /* Now use mask = R, source & destination = M */
279: /* */
280: orw3mrm:
281: bbs $0,_force_lp,0b /* if set loop on last subtest */
282: ao7: callf $4,_setjmp /* save context for error return */
283: movab ao7,_stpc /* starting address of subtest */
284: movl $7,_subtst /* subtest number */
285: movl $2,_no_opr /* number of operands in use */
286: movl $MASK1W3,_opr /* first operand */
287: movl $SOURCE1W3,_opr + 4 /* second operand */
288: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
289: movl $MASK1W3,r3 /*mask */
290: movl $SOURCE1W3,source/*source */
291: movl $INIT1W3,dest /*destination */
292: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
293: orw3 r3,source+2,dest+2/*try it reg mem mem */
294: jeql error7 /*error if Z = 1 */
295: jgeq error7 /*error if N =0 */
296: jcc error7 /*error if C = 0 */
297: jvs error7 /*error if V = 1 */
298: jmp 1f
299: error7: movpsl _actual /* actual data */
300: bbs $0,_scoplp,0b /* if set scope loop on error */
301: movl $2,_ercode /* error code flag failure */
302: jmp *badrtn
303: 1: cmpl dest,$EXP1W3 /*if dest <> expected value, */
304: jeql o8 /* if no error continue */
305: bbs $0,_scoplp,0b /* if set scope loop on error */
306: movl $1,_ercode /* error code data miscompare */
307: movl dest,_actual /* actual data */
308: movl $EXP1W3,_expected /* expected data */
309: jmp *badrtn
310: /* */
311: /* Now try another mask(0x5555) */
312: /* */
313: o8:
314: bbs $0,_force_lp,0b /* if set loop on last subtest */
315: ao8: callf $4,_setjmp /* save context for error return */
316: movab ao8,_stpc /* starting address of subtest */
317: movl $8,_subtst /* subtest number */
318: movl $2,_no_opr /* number of operands in use */
319: movl $MASK2W3,_opr /* first operand */
320: movl $SOURCE2W3,_opr + 4 /* second operand */
321: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
322: movl $MASK2W3,mask /*mask */
323: movl $INIT1W3,dest /*destination */
324: bispsw $(Z|V) /*overflow & zero bits ON */
325: orw3 mask+2,$SOURCE2W3,dest+2 /*try it mem data mem */
326: jeql error8 /*error if Z = 1 */
327: jlss error8 /*error if N =1 */
328: jcc error8 /*error if C = 0 */
329: jvs error8 /*error if V = 1 */
330: jmp 1f
331: error8: movpsl _actual /* actual data */
332: bbs $0,_scoplp,0b /* if set scope loop on error */
333: movl $2,_ercode /* error code flag failure */
334: jmp *badrtn
335: 1: cmpl dest,$EXP2W3 /*if dest <> expected value, */
336: jeql o9 /* if no error continue */
337: bbs $0,_scoplp,0b /* if set scope loop on error */
338: movl $1,_ercode /* error code data miscompare */
339: movl dest,_actual /* actual data */
340: movl $EXP2W3,_expected /* expected data */
341: jmp *badrtn
342: /* */
343: /* Now try another mask(0x0000), source(0x0000), & dest(0x0000) */
344: /* */
345: o9:
346: bbs $0,_force_lp,0b /* if set loop on last subtest */
347: ao9: callf $4,_setjmp /* save context for error return */
348: movab ao9,_stpc /* starting address of subtest */
349: movl $9,_subtst /* subtest number */
350: movl $2,_no_opr /* number of operands in use */
351: movl $MASK2W3,_opr /* first operand */
352: movl $SOURCE2W3,_opr + 4 /* second operand */
353: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
354: movl $SOURCE3W3,r4 /*source */
355: movl $INIT3W3,dest /*destination */
356: bispsw $(N|V) /*overflow & negetive bits ON */
357: orw3 $MASK3W3,r4,dest+2/*try it data reg mem */
358: jneq error9 /*error if Z = 0 */
359: jlss error9 /*error if N = 1 */
360: jcc error9 /*error if C = 0 */
361: jvs error9 /*error if V = 1 */
362: jmp 1f
363: error9: movpsl _actual /* actual data */
364: bbs $0,_scoplp,0b /* if set scope loop on error */
365: movl $2,_ercode /* error code flag failure */
366: jmp *badrtn
367: 1: movl $0x7fff0000,r6
368: cmpl dest,r6 /*if dest <> expected value, */
369: jeql orw3rmm /* if no error continue */
370: bbs $0,_scoplp,0b /* if set scope loop on error */
371: movl $1,_ercode /* error code data miscompare */
372: movl dest,_actual /* actual data */
373: movl r6,_expected /* expected data */
374: jmp *badrtn
375:
376: /* */
377: /* Now try mask = M, source = R, dest = M */
378: /* */
379: orw3rmm:
380:
381: bbs $0,_force_lp,0b /* if set loop on last subtest */
382: ao10: callf $4,_setjmp /* save context for error return */
383: movab ao10,_stpc /* starting address of subtest */
384: movl $0xa,_subtst /* subtest number */
385: movl $2,_no_opr /* number of operands in use */
386: movl $MASK1W3,_opr /* first operand */
387: movl $SOURCE1W3,_opr + 4 /* second operand */
388: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
389: movl $INIT1W3,dest /*destination */
390: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
391: orw3 $MASK1W3,$SOURCE1W3,dest+2/*try it data data mem */
392: jeql error10 /*error if Z = 1 */
393: jlss error10 /*error if N =0 */
394: jcc error10 /*error if C = 0 */
395: jvs error10 /*error if V = 1 */
396: jmp 1f
397: error10: movpsl _actual /* actual data */
398: bbs $0,_scoplp,0b /* if set scope loop on error */
399: movl $2,_ercode /* error code flag failure */
400: jmp *badrtn
401: 1: cmpl dest,$EXP1W3 /*if dest <> expected value, */
402: jeql o11 /* if no error continue */
403: bbs $0,_scoplp,0b /* if set scope loop on error */
404: movl $1,_ercode /* error code data miscompare */
405: movl dest,_actual /* actual data */
406: movl $EXP1W3,_expected /* expected data */
407: jmp *badrtn
408:
409: /* Now try another mask(0x5555) */
410: /* */
411:
412: o11:
413: bbs $0,_force_lp,0b /* if set loop on last subtest */
414: ao11: callf $4,_setjmp /* save context for error return */
415: movab ao11,_stpc /* starting address of subtest */
416: movl $0xb,_subtst /* subtest number */
417: movl $2,_no_opr /* number of operands in use */
418: movl $MASK2W3,_opr /* first operand */
419: movl $SOURCE2W3,_opr + 4 /* second operand */
420: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
421: movl $SOURCE2W3,r4 /*source */
422: movl $INIT1W3,r5 /*destination */
423: bispsw $(Z|V) /*overflow & zero bits ON */
424: orw3 $MASK2W3,r4,r5 /*try it data reg reg */
425: jeql error11 /*error if Z = 1 */
426: jlss error11 /*error if N =1 */
427: jcc error11 /*error if C = 0 */
428: jvs error11 /*error if V = 1 */
429: jmp 1f
430: error11: movpsl _actual /* actual data */
431: bbs $0,_scoplp,0b /* if set scope loop on error */
432: movl $2,_ercode /* error code flag failure */
433: jmp *badrtn
434: 1: movl $0xffff,r6
435: cmpl r5,r6 /*if dest <> expected value, */
436: jeql o12 /* if no error continue */
437: bbs $0,_scoplp,0b /* if set scope loop on error */
438: movl $1,_ercode /* error code data miscompare */
439: movl r5,_actual /* actual data */
440: movl r6,_expected /* expected data */
441: jmp *badrtn
442: /* */
443: /* Now try another mask(0x0000), mask(0x0000), dest(0x0000) */
444: /* */
445: o12:
446: bbs $0,_force_lp,0b /* if set loop on last subtest */
447: ao12: callf $4,_setjmp /* save context for error return */
448: movab ao12,_stpc /* starting address of subtest */
449: movl $0xc,_subtst /* subtest number */
450: movl $2,_no_opr /* number of operands in use */
451: movl $MASK3W3,_opr /* first operand */
452: movl $SOURCE3W3,_opr + 4 /* second operand */
453: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
454: movl $MASK3W3,mask /*mask */
455: movl $SOURCE3W3,r4 /*source */
456: movl $INIT3W3,dest /*destination */
457: bispsw $(N|V) /*overflow & negetive bits ON */
458: orw3 mask+2,r4,dest+2 /*try it */
459: jneq error1 /*error if Z = 0 */
460: jlss error1 /*error if N = 1 */
461: jcc error1 /*error if C = 0 */
462: jvs error1 /*error if V = 1 */
463: jmp 1f
464: error12: movpsl _actual /* actual data */
465: bbs $0,_scoplp,0b /* if set scope loop on error */
466: movl $2,_ercode /* error code flag failure */
467: jmp *badrtn
468: 1: movl $0x7fff0000,r6
469: cmpl dest,r6 /*if dest <> expected value, */
470: jeql orw3mrr /* if no error continue */
471: bbs $0,_scoplp,0b /* if set scope loop on error */
472: movl $1,_ercode /* error code data miscompare */
473: movl dest,_actual /* actual data */
474: movl r6,_expected /* expected data */
475: jmp *badrtn
476: /* */
477: /* Now try mask = R, source = M, dest = R */
478: /* */
479: orw3mrr:
480: bbs $0,_force_lp,0b /* if set loop on last subtest */
481: ao13: callf $4,_setjmp /* save context for error return */
482: movab ao13,_stpc /* starting address of subtest */
483: movl $0xd,_subtst /* subtest number */
484: movl $2,_no_opr /* number of operands in use */
485: movl $MASK1W3,_opr /* first operand */
486: movl $SOURCE1W3,_opr + 4 /* second operand */
487: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
488: movl $MASK1W3,r3 /*mask */
489: movl $SOURCE1W3,source/*source */
490: movl $INIT1W3,r5 /*destination */
491: bispsw $(Z|V|C) /*overflow, Z & carry bits ON */
492: orw3 r3,source+2,r5 /*try it */
493: jeql error13 /*error if Z = 1 */
494: jgeq error13 /*error if N =1 */
495: jcc error13 /*error if C = 0 */
496: jvs error13 /*error if V = 1 */
497: jmp 1f
498: error13: movpsl _actual /* actual data */
499: bbs $0,_scoplp,0b /* if set scope loop on error */
500: movl $2,_ercode /* error code flag failure */
501: jmp *badrtn
502: 1: movl $0xffffaaaa,r6
503: cmpl r5,r6 /*if dest <> expected value, */
504: jeql o14 /* if no error continue */
505: bbs $0,_scoplp,0b /* if set scope loop on error */
506: movl $1,_ercode /* error code data miscompare */
507: movl r5,_actual /* actual data */
508: movl r6,_expected /* expected data */
509: jmp *badrtn
510:
511: /* Now try another mask(0x5555) */
512: /* */
513:
514: o14:
515: bbs $0,_force_lp,0b /* if set loop on last subtest */
516: ao14: callf $4,_setjmp /* save context for error return */
517: movab ao14,_stpc /* starting address of subtest */
518: movl $0xe,_subtst /* subtest number */
519: movl $2,_no_opr /* number of operands in use */
520: movl $MASK2W3,_opr /* first operand */
521: movl $SOURCE2W3,_opr + 4 /* second operand */
522: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
523: movl $MASK2W3,r3 /*mask */
524: movl $SOURCE2W3,source/*source */
525: movl $INIT1W3,r5 /*destination */
526: bispsw $(Z|V) /*overflow & zero bits ON */
527: orw3 r3,source+2,r5 /*try it */
528: jeql error14 /*error if Z = 1 */
529: jgeq error14 /*error if N =0 */
530: jcc error14 /*error if C = 0 */
531: jvs error14 /*error if V = 1 */
532: jmp 1f
533: error14: movpsl _actual /* actual data */
534: bbs $0,_scoplp,0b /* if set scope loop on error */
535: movl $2,_ercode /* error code flag failure */
536: jmp *badrtn
537: 1: movl $-1,r6
538: cmpl r5,r6 /*if dest <> expected value, */
539: jeql o15 /* if no error continue */
540: bbs $0,_scoplp,0b /* if set scope loop on error */
541: movl $1,_ercode /* error code data miscompare */
542: movl r5,_actual /* actual data */
543: movl r6,_expected /* expected data */
544: jmp *badrtn
545: /* */
546: /* Now try another mask(0x0000), mask(0x0000), & dest(0x0000) */
547: /* */
548: o15:
549: bbs $0,_force_lp,0b /* if set loop on last subtest */
550: ao15: callf $4,_setjmp /* save context for error return */
551: movab ao15,_stpc /* starting address of subtest */
552: movl $0xf,_subtst /* subtest number */
553: movl $2,_no_opr /* number of operands in use */
554: movl $MASK3W3,_opr /* first operand */
555: movl $SOURCE3W3,_opr + 4 /* second operand */
556: 0: bicpsw $PSWMASK /*turn overflow enable bit off */
557: movl $MASK3W3,r3 /*mask */
558: movl $SOURCE3W3,source/*source */
559: movl $INIT3W3,r5 /*destination */
560: bispsw $(N|V) /*overflow & negetive bits ON */
561: orw3 r3,source+2,r5 /*try it */
562: jneq error15 /*error if Z = 0 */
563: jlss error15 /*error if N = 1 */
564: jcc error15 /*error if C = 0 */
565: jvs error15 /*error if V = 1 */
566: jmp 1f
567: error15: movpsl _actual /* actual data */
568: bbs $0,_scoplp,0b /* if set scope loop on error */
569: movl $2,_ercode /* error code flag failure */
570: jmp *badrtn
571: 1: cmpl r5,$EXP3W3 /*if dest <> expected value, */
572: jeql aldn /* if no error continue */
573: bbs $0,_scoplp,0b /* if set scope loop on error */
574: movl $1,_ercode /* error code data miscompare */
575: movl r5,_actual /* actual data */
576: movl r6,_expected /* expected data */
577: jmp *badrtn
578:
579: aldn: bbs $0,_force_lp,0b /* if set loop on last subtest */
580: jmp *return
581:
582: /* */
583: /* Variables */
584: /* */
585: .align 2
586: mask: .space 4
587: source: .space 4
588: dest: .space 4
589:
590: /* */
591: /* End of file */
592:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.