|
|
1.1 root 1: ;
2: ; nono
3: ; Copyright (C) 2019 [email protected]
4: ;
5:
6: ; How to compile:
7: ; > has fmovem.has
8: ; > hlk fmovem.o si_util.o
9:
10: .xref hexstr_long
11: .include doscall.mac
12: .list
13: .cpu 68030
14:
15: PRINT .macro msg
16: pea.l msg(pc)
17: DOS _PRINT
18: addq.l #4,sp
19: .endm
20:
21: SET_FLINE_TRAP .macro
22: move.l (a5),a4
23: lea.l fline_handler(pc),a1
24: move.l a1,(a5)
25: .endm
26:
27: RESTORE_FLINE_TRAP .macro
28: move.l a4,(a5)
29: .endm
30:
31: .text
32: .even
33: test_fmovem_dn_to____:
34: PRINT msg_fmovem_dn_to____
35: fmove.l #0,fpcr
36: fmove.l #0,fpsr
37: fmove.l #0,fpiar
38: move.l #$55555555,d0
39: SET_FLINE_TRAP
40: moveq.l #0,d7
41: lea.l @f,a3
42: .dc.w $f200, $8000
43: @@:
44: RESTORE_FLINE_TRAP
45: tst.l d7
46: beq @f
47: PRINT msg_fail_trap
48: rts
49: @@:
50: fmove.l fpcr,d0
51: moveq.l #0,d1
52: cmp.l d1,d0
53: beq @f
54: pea.l msg_fail_cr(pc)
55: move.l d1,-(sp)
56: move.l d0,-(sp)
57: bsr result
58: lea.l 12(sp),sp
59: @@:
60: fmove.l fpsr,d0
61: moveq.l #0,d1
62: cmp.l d1,d0
63: beq @f
64: pea.l msg_fail_sr(pc)
65: move.l d1,-(sp)
66: move.l d0,-(sp)
67: bsr result
68: lea.l 12(sp),sp
69: @@:
70: fmove.l fpiar,a0
71: move.l #$55555555,a1
72: cmpa.l a1,a0
73: beq @f
74: pea.l msg_fail_ir(pc)
75: move.l a1,-(sp)
76: move.l a0,-(sp)
77: bsr result
78: lea.l 12(sp),sp
79: @@:
80: tst.l d7
81: bne @f
82: PRINT msg_ok
83: @@:
84: rts
85:
86: test_fmovem_an_to____:
87: PRINT msg_fmovem_an_to____
88: fmove.l #0,fpcr
89: fmove.l #0,fpsr
90: fmove.l #0,fpiar
91: move.l #$55555555,a0
92: SET_FLINE_TRAP
93: moveq.l #0,d7
94: lea.l @f,a3
95: .dc.w $f208, $8000
96: @@:
97: RESTORE_FLINE_TRAP
98: tst.l d7
99: beq @f
100: PRINT msg_fail_trap
101: rts
102: @@:
103: fmove.l fpcr,d0
104: moveq.l #0,d1
105: cmp.l d1,d0
106: beq @f
107: pea.l msg_fail_cr(pc)
108: move.l d1,-(sp)
109: move.l d0,-(sp)
110: bsr result
111: lea.l 12(sp),sp
112: @@:
113: fmove.l fpsr,d0
114: moveq.l #0,d1
115: cmp.l d1,d0
116: beq @f
117: pea.l msg_fail_sr(pc)
118: move.l d1,-(sp)
119: move.l d0,-(sp)
120: bsr result
121: lea.l 12(sp),sp
122: @@:
123: fmove.l fpiar,a0
124: move.l #$55555555,a1
125: cmpa.l a1,a0
126: beq @f
127: pea.l msg_fail_ir(pc)
128: move.l a1,-(sp)
129: move.l a0,-(sp)
130: bsr result
131: lea.l 12(sp),sp
132: @@:
133: tst.l d7
134: bne @f
135: PRINT msg_ok
136: @@:
137: rts
138:
139: test_fmovem_anin_to____:
140: PRINT msg_fmovem_anin_to____
141: fmove.l #0,fpcr
142: fmove.l #0,fpsr
143: fmove.l #0,fpiar
144: move.l #$55555555,workarea
145: lea.l workarea(pc),a0
146: SET_FLINE_TRAP
147: moveq.l #0,d7
148: lea.l @f,a3
149: .dc.w $f210, $8000
150: @@:
151: RESTORE_FLINE_TRAP
152: tst.l d7
153: beq @f
154: PRINT msg_fail_trap
155: rts
156: @@:
157: lea.l workarea(pc),a1
158: cmpa.l a1,a0
159: beq @f
160: pea.l msg_fail_addr(pc)
161: move.l a1,-(sp)
162: move.l a0,-(sp)
163: bsr result
164: lea.l 12(sp),sp
165: @@:
166: fmove.l fpcr,d0
167: moveq.l #0,d1
168: cmp.l d1,d0
169: beq @f
170: pea.l msg_fail_cr(pc)
171: move.l d1,-(sp)
172: move.l d0,-(sp)
173: bsr result
174: lea.l 12(sp),sp
175: @@:
176: fmove.l fpsr,d0
177: moveq.l #0,d1
178: cmp.l d1,d0
179: beq @f
180: pea.l msg_fail_sr(pc)
181: move.l d1,-(sp)
182: move.l d0,-(sp)
183: bsr result
184: lea.l 12(sp),sp
185: @@:
186: fmove.l fpiar,a0
187: move.l #$55555555,a1
188: cmpa.l a1,a0
189: beq @f
190: pea.l msg_fail_ir(pc)
191: move.l a1,-(sp)
192: move.l a0,-(sp)
193: bsr result
194: lea.l 12(sp),sp
195: @@:
196: tst.l d7
197: bne @f
198: PRINT msg_ok
199: @@:
200: rts
201:
202: test_fmovem_anpi_to____:
203: PRINT msg_fmovem_anpi_to____
204: fmove.l #0,fpcr
205: fmove.l #0,fpsr
206: fmove.l #0,fpiar
207: move.l #$55555555,workarea
208: lea.l workarea(pc),a0
209: SET_FLINE_TRAP
210: moveq.l #0,d7
211: lea.l @f,a3
212: .dc.w $f218, $8000
213: @@:
214: RESTORE_FLINE_TRAP
215: tst.l d7
216: beq @f
217: PRINT msg_fail_trap
218: rts
219: @@:
220: lea.l workarea+4(pc),a1
221: cmpa.l a1,a0
222: beq @f
223: pea.l msg_fail_addr(pc)
224: move.l a1,-(sp)
225: move.l a0,-(sp)
226: bsr result
227: lea.l 12(sp),sp
228: @@:
229: fmove.l fpcr,d0
230: moveq.l #0,d1
231: cmp.l d1,d0
232: beq @f
233: pea.l msg_fail_cr(pc)
234: move.l d1,-(sp)
235: move.l d0,-(sp)
236: bsr result
237: lea.l 12(sp),sp
238: @@:
239: fmove.l fpsr,d0
240: moveq.l #0,d1
241: cmp.l d1,d0
242: beq @f
243: pea.l msg_fail_sr(pc)
244: move.l d1,-(sp)
245: move.l d0,-(sp)
246: bsr result
247: lea.l 12(sp),sp
248: @@:
249: fmove.l fpiar,a0
250: move.l #$55555555,a1
251: cmpa.l a1,a0
252: beq @f
253: pea.l msg_fail_ir(pc)
254: move.l a1,-(sp)
255: move.l a0,-(sp)
256: bsr result
257: lea.l 12(sp),sp
258: @@:
259: tst.l d7
260: bne @f
261: PRINT msg_ok
262: @@:
263: rts
264:
265: test_fmovem_anpd_to____:
266: PRINT msg_fmovem_anpd_to____
267: fmove.l #0,fpcr
268: fmove.l #0,fpsr
269: fmove.l #0,fpiar
270: move.l #$55555555,workarea
271: lea.l workarea+4(pc),a0
272: SET_FLINE_TRAP
273: moveq.l #0,d7
274: lea.l @f,a3
275: .dc.w $f220, $8000
276: @@:
277: RESTORE_FLINE_TRAP
278: tst.l d7
279: beq @f
280: PRINT msg_fail_trap
281: rts
282: @@:
283: lea.l workarea(pc),a1
284: cmpa.l a1,a0
285: beq @f
286: pea.l msg_fail_addr(pc)
287: move.l a1,-(sp)
288: move.l a0,-(sp)
289: bsr result
290: lea.l 12(sp),sp
291: @@:
292: fmove.l fpcr,d0
293: moveq.l #0,d1
294: cmp.l d1,d0
295: beq @f
296: pea.l msg_fail_cr(pc)
297: move.l d1,-(sp)
298: move.l d0,-(sp)
299: bsr result
300: lea.l 12(sp),sp
301: @@:
302: fmove.l fpsr,d0
303: moveq.l #0,d1
304: cmp.l d1,d0
305: beq @f
306: pea.l msg_fail_sr(pc)
307: move.l d1,-(sp)
308: move.l d0,-(sp)
309: bsr result
310: lea.l 12(sp),sp
311: @@:
312: fmove.l fpiar,a0
313: move.l #$55555555,a1
314: cmpa.l a1,a0
315: beq @f
316: pea.l msg_fail_ir(pc)
317: move.l a1,-(sp)
318: move.l a0,-(sp)
319: bsr result
320: lea.l 12(sp),sp
321: @@:
322: tst.l d7
323: bne @f
324: PRINT msg_ok
325: @@:
326: rts
327:
328: test_fmovem_imm_to____:
329: PRINT msg_fmovem_imm_to____
330: fmove.l #0,fpcr
331: fmove.l #0,fpsr
332: fmove.l #0,fpiar
333: SET_FLINE_TRAP
334: moveq.l #0,d7
335: lea.l @f,a3
336: .dc.w $f23c, $8000
337: .dc.l $55555555
338: @@:
339: RESTORE_FLINE_TRAP
340: tst.l d7
341: beq @f
342: PRINT msg_fail_trap
343: rts
344: @@:
345: fmove.l fpcr,d0
346: moveq.l #0,d1
347: cmp.l d1,d0
348: beq @f
349: pea.l msg_fail_cr(pc)
350: move.l d1,-(sp)
351: move.l d0,-(sp)
352: bsr result
353: lea.l 12(sp),sp
354: @@:
355: fmove.l fpsr,d0
356: moveq.l #0,d1
357: cmp.l d1,d0
358: beq @f
359: pea.l msg_fail_sr(pc)
360: move.l d1,-(sp)
361: move.l d0,-(sp)
362: bsr result
363: lea.l 12(sp),sp
364: @@:
365: fmove.l fpiar,a0
366: move.l #$55555555,a1
367: cmpa.l a1,a0
368: beq @f
369: pea.l msg_fail_ir(pc)
370: move.l a1,-(sp)
371: move.l a0,-(sp)
372: bsr result
373: lea.l 12(sp),sp
374: @@:
375: tst.l d7
376: bne @f
377: PRINT msg_ok
378: @@:
379: rts
380:
381: test_fmovem_dn_to___I:
382: PRINT msg_fmovem_dn_to___I
383: fmove.l #0,fpcr
384: fmove.l #0,fpsr
385: fmove.l #0,fpiar
386: move.l #$55555555,d0
387: SET_FLINE_TRAP
388: moveq.l #0,d7
389: lea.l @f,a3
390: fmovem.l d0,fpiar
391: @@:
392: RESTORE_FLINE_TRAP
393: tst.l d7
394: beq @f
395: PRINT msg_fail_trap
396: rts
397: @@:
398: fmove.l fpcr,d0
399: moveq.l #0,d1
400: cmp.l d1,d0
401: beq @f
402: pea.l msg_fail_cr(pc)
403: move.l d1,-(sp)
404: move.l d0,-(sp)
405: bsr result
406: lea.l 12(sp),sp
407: @@:
408: fmove.l fpsr,d0
409: moveq.l #0,d1
410: cmp.l d1,d0
411: beq @f
412: pea.l msg_fail_sr(pc)
413: move.l d1,-(sp)
414: move.l d0,-(sp)
415: bsr result
416: lea.l 12(sp),sp
417: @@:
418: fmove.l fpiar,a0
419: move.l #$55555555,a1
420: cmpa.l a1,a0
421: beq @f
422: pea.l msg_fail_ir(pc)
423: move.l a1,-(sp)
424: move.l a0,-(sp)
425: bsr result
426: lea.l 12(sp),sp
427: @@:
428: tst.l d7
429: bne @f
430: PRINT msg_ok
431: @@:
432: rts
433:
434: test_fmovem_an_to___I:
435: PRINT msg_fmovem_an_to___I
436: fmove.l #0,fpcr
437: fmove.l #0,fpsr
438: fmove.l #0,fpiar
439: move.l #$55555555,a0
440: SET_FLINE_TRAP
441: moveq.l #0,d7
442: lea.l @f,a3
443: fmovem.l a0,fpiar
444: @@:
445: RESTORE_FLINE_TRAP
446: tst.l d7
447: beq @f
448: PRINT msg_fail_trap
449: rts
450: @@:
451: fmove.l fpcr,d0
452: moveq.l #0,d1
453: cmp.l d1,d0
454: beq @f
455: pea.l msg_fail_cr(pc)
456: move.l d1,-(sp)
457: move.l d0,-(sp)
458: bsr result
459: lea.l 12(sp),sp
460: @@:
461: fmove.l fpsr,d0
462: moveq.l #0,d1
463: cmp.l d1,d0
464: beq @f
465: pea.l msg_fail_sr(pc)
466: move.l d1,-(sp)
467: move.l d0,-(sp)
468: bsr result
469: lea.l 12(sp),sp
470: @@:
471: fmove.l fpiar,a0
472: move.l #$55555555,a1
473: cmpa.l a1,a0
474: beq @f
475: pea.l msg_fail_ir(pc)
476: move.l a1,-(sp)
477: move.l a0,-(sp)
478: bsr result
479: lea.l 12(sp),sp
480: @@:
481: tst.l d7
482: bne @f
483: PRINT msg_ok
484: @@:
485: rts
486:
487: test_fmovem_anin_to___I:
488: PRINT msg_fmovem_anin_to___I
489: fmove.l #0,fpcr
490: fmove.l #0,fpsr
491: fmove.l #0,fpiar
492: move.l #$55555555,workarea
493: lea.l workarea(pc),a0
494: SET_FLINE_TRAP
495: moveq.l #0,d7
496: lea.l @f,a3
497: fmovem.l (a0),fpiar
498: @@:
499: RESTORE_FLINE_TRAP
500: tst.l d7
501: beq @f
502: PRINT msg_fail_trap
503: rts
504: @@:
505: lea.l workarea(pc),a1
506: cmpa.l a1,a0
507: beq @f
508: pea.l msg_fail_addr(pc)
509: move.l a1,-(sp)
510: move.l a0,-(sp)
511: bsr result
512: lea.l 12(sp),sp
513: @@:
514: fmove.l fpcr,d0
515: moveq.l #0,d1
516: cmp.l d1,d0
517: beq @f
518: pea.l msg_fail_cr(pc)
519: move.l d1,-(sp)
520: move.l d0,-(sp)
521: bsr result
522: lea.l 12(sp),sp
523: @@:
524: fmove.l fpsr,d0
525: moveq.l #0,d1
526: cmp.l d1,d0
527: beq @f
528: pea.l msg_fail_sr(pc)
529: move.l d1,-(sp)
530: move.l d0,-(sp)
531: bsr result
532: lea.l 12(sp),sp
533: @@:
534: fmove.l fpiar,a0
535: move.l #$55555555,a1
536: cmpa.l a1,a0
537: beq @f
538: pea.l msg_fail_ir(pc)
539: move.l a1,-(sp)
540: move.l a0,-(sp)
541: bsr result
542: lea.l 12(sp),sp
543: @@:
544: tst.l d7
545: bne @f
546: PRINT msg_ok
547: @@:
548: rts
549:
550: test_fmovem_anpi_to___I:
551: PRINT msg_fmovem_anpi_to___I
552: fmove.l #0,fpcr
553: fmove.l #0,fpsr
554: fmove.l #0,fpiar
555: move.l #$55555555,workarea
556: lea.l workarea(pc),a0
557: SET_FLINE_TRAP
558: moveq.l #0,d7
559: lea.l @f,a3
560: fmovem.l (a0)+,fpiar
561: @@:
562: RESTORE_FLINE_TRAP
563: tst.l d7
564: beq @f
565: PRINT msg_fail_trap
566: rts
567: @@:
568: lea.l workarea+4(pc),a1
569: cmpa.l a1,a0
570: beq @f
571: pea.l msg_fail_addr(pc)
572: move.l a1,-(sp)
573: move.l a0,-(sp)
574: bsr result
575: lea.l 12(sp),sp
576: @@:
577: fmove.l fpcr,d0
578: moveq.l #0,d1
579: cmp.l d1,d0
580: beq @f
581: pea.l msg_fail_cr(pc)
582: move.l d1,-(sp)
583: move.l d0,-(sp)
584: bsr result
585: lea.l 12(sp),sp
586: @@:
587: fmove.l fpsr,d0
588: moveq.l #0,d1
589: cmp.l d1,d0
590: beq @f
591: pea.l msg_fail_sr(pc)
592: move.l d1,-(sp)
593: move.l d0,-(sp)
594: bsr result
595: lea.l 12(sp),sp
596: @@:
597: fmove.l fpiar,a0
598: move.l #$55555555,a1
599: cmpa.l a1,a0
600: beq @f
601: pea.l msg_fail_ir(pc)
602: move.l a1,-(sp)
603: move.l a0,-(sp)
604: bsr result
605: lea.l 12(sp),sp
606: @@:
607: tst.l d7
608: bne @f
609: PRINT msg_ok
610: @@:
611: rts
612:
613: test_fmovem_anpd_to___I:
614: PRINT msg_fmovem_anpd_to___I
615: fmove.l #0,fpcr
616: fmove.l #0,fpsr
617: fmove.l #0,fpiar
618: move.l #$55555555,workarea
619: lea.l workarea+4(pc),a0
620: SET_FLINE_TRAP
621: moveq.l #0,d7
622: lea.l @f,a3
623: fmovem.l -(a0),fpiar
624: @@:
625: RESTORE_FLINE_TRAP
626: tst.l d7
627: beq @f
628: PRINT msg_fail_trap
629: rts
630: @@:
631: lea.l workarea(pc),a1
632: cmpa.l a1,a0
633: beq @f
634: pea.l msg_fail_addr(pc)
635: move.l a1,-(sp)
636: move.l a0,-(sp)
637: bsr result
638: lea.l 12(sp),sp
639: @@:
640: fmove.l fpcr,d0
641: moveq.l #0,d1
642: cmp.l d1,d0
643: beq @f
644: pea.l msg_fail_cr(pc)
645: move.l d1,-(sp)
646: move.l d0,-(sp)
647: bsr result
648: lea.l 12(sp),sp
649: @@:
650: fmove.l fpsr,d0
651: moveq.l #0,d1
652: cmp.l d1,d0
653: beq @f
654: pea.l msg_fail_sr(pc)
655: move.l d1,-(sp)
656: move.l d0,-(sp)
657: bsr result
658: lea.l 12(sp),sp
659: @@:
660: fmove.l fpiar,a0
661: move.l #$55555555,a1
662: cmpa.l a1,a0
663: beq @f
664: pea.l msg_fail_ir(pc)
665: move.l a1,-(sp)
666: move.l a0,-(sp)
667: bsr result
668: lea.l 12(sp),sp
669: @@:
670: tst.l d7
671: bne @f
672: PRINT msg_ok
673: @@:
674: rts
675:
676: test_fmovem_imm_to___I:
677: PRINT msg_fmovem_imm_to___I
678: fmove.l #0,fpcr
679: fmove.l #0,fpsr
680: fmove.l #0,fpiar
681: SET_FLINE_TRAP
682: moveq.l #0,d7
683: lea.l @f,a3
684: fmovem.l #$55555555,fpiar
685: @@:
686: RESTORE_FLINE_TRAP
687: tst.l d7
688: beq @f
689: PRINT msg_fail_trap
690: rts
691: @@:
692: fmove.l fpcr,d0
693: moveq.l #0,d1
694: cmp.l d1,d0
695: beq @f
696: pea.l msg_fail_cr(pc)
697: move.l d1,-(sp)
698: move.l d0,-(sp)
699: bsr result
700: lea.l 12(sp),sp
701: @@:
702: fmove.l fpsr,d0
703: moveq.l #0,d1
704: cmp.l d1,d0
705: beq @f
706: pea.l msg_fail_sr(pc)
707: move.l d1,-(sp)
708: move.l d0,-(sp)
709: bsr result
710: lea.l 12(sp),sp
711: @@:
712: fmove.l fpiar,a0
713: move.l #$55555555,a1
714: cmpa.l a1,a0
715: beq @f
716: pea.l msg_fail_ir(pc)
717: move.l a1,-(sp)
718: move.l a0,-(sp)
719: bsr result
720: lea.l 12(sp),sp
721: @@:
722: tst.l d7
723: bne @f
724: PRINT msg_ok
725: @@:
726: rts
727:
728: test_fmovem_dn_to__S_:
729: PRINT msg_fmovem_dn_to__S_
730: fmove.l #0,fpcr
731: fmove.l #0,fpsr
732: fmove.l #0,fpiar
733: move.l #$55555555,d0
734: SET_FLINE_TRAP
735: moveq.l #0,d7
736: lea.l @f,a3
737: fmovem.l d0,fpsr
738: @@:
739: RESTORE_FLINE_TRAP
740: tst.l d7
741: beq @f
742: PRINT msg_fail_trap
743: rts
744: @@:
745: fmove.l fpcr,d0
746: moveq.l #0,d1
747: cmp.l d1,d0
748: beq @f
749: pea.l msg_fail_cr(pc)
750: move.l d1,-(sp)
751: move.l d0,-(sp)
752: bsr result
753: lea.l 12(sp),sp
754: @@:
755: fmove.l fpsr,d0
756: move.l #$05555550,d1
757: cmp.l d1,d0
758: beq @f
759: pea.l msg_fail_sr(pc)
760: move.l d1,-(sp)
761: move.l d0,-(sp)
762: bsr result
763: lea.l 12(sp),sp
764: @@:
765: fmove.l fpiar,a0
766: move.l d7,a1 ; d7=0
767: cmpa.l a1,a0
768: beq @f
769: pea.l msg_fail_ir(pc)
770: move.l a1,-(sp)
771: move.l a0,-(sp)
772: bsr result
773: lea.l 12(sp),sp
774: @@:
775: tst.l d7
776: bne @f
777: PRINT msg_ok
778: @@:
779: rts
780:
781: test_fmovem_an_to__S_:
782: PRINT msg_fmovem_an_to__S_
783: SET_FLINE_TRAP
784: moveq.l #0,d7
785: lea.l @f,a3
786: .dc.w $f208, $8800
787: @@:
788: RESTORE_FLINE_TRAP
789: tst.l d7
790: bne @f
791: PRINT msg_fail_notrap
792: rts
793: @@:
794: PRINT msg_oktrap
795: rts
796:
797: test_fmovem_anin_to__S_:
798: PRINT msg_fmovem_anin_to__S_
799: fmove.l #0,fpcr
800: fmove.l #0,fpsr
801: fmove.l #0,fpiar
802: move.l #$55555555,workarea
803: lea.l workarea(pc),a0
804: SET_FLINE_TRAP
805: moveq.l #0,d7
806: lea.l @f,a3
807: fmovem.l (a0),fpsr
808: @@:
809: RESTORE_FLINE_TRAP
810: tst.l d7
811: beq @f
812: PRINT msg_fail_trap
813: rts
814: @@:
815: lea.l workarea(pc),a1
816: cmpa.l a1,a0
817: beq @f
818: pea.l msg_fail_addr(pc)
819: move.l a1,-(sp)
820: move.l a0,-(sp)
821: bsr result
822: lea.l 12(sp),sp
823: @@:
824: fmove.l fpcr,d0
825: moveq.l #0,d1
826: cmp.l d1,d0
827: beq @f
828: pea.l msg_fail_cr(pc)
829: move.l d1,-(sp)
830: move.l d0,-(sp)
831: bsr result
832: lea.l 12(sp),sp
833: @@:
834: fmove.l fpsr,d0
835: move.l #$05555550,d1
836: cmp.l d1,d0
837: beq @f
838: pea.l msg_fail_sr(pc)
839: move.l d1,-(sp)
840: move.l d0,-(sp)
841: bsr result
842: lea.l 12(sp),sp
843: @@:
844: fmove.l fpiar,a0
845: move.l d7,a1 ; d7=0
846: cmpa.l a1,a0
847: beq @f
848: pea.l msg_fail_ir(pc)
849: move.l a1,-(sp)
850: move.l a0,-(sp)
851: bsr result
852: lea.l 12(sp),sp
853: @@:
854: tst.l d7
855: bne @f
856: PRINT msg_ok
857: @@:
858: rts
859:
860: test_fmovem_anpi_to__S_:
861: PRINT msg_fmovem_anpi_to__S_
862: fmove.l #0,fpcr
863: fmove.l #0,fpsr
864: fmove.l #0,fpiar
865: move.l #$55555555,workarea
866: lea.l workarea(pc),a0
867: SET_FLINE_TRAP
868: moveq.l #0,d7
869: lea.l @f,a3
870: fmovem.l (a0)+,fpsr
871: @@:
872: RESTORE_FLINE_TRAP
873: tst.l d7
874: beq @f
875: PRINT msg_fail_trap
876: rts
877: @@:
878: lea.l workarea+4(pc),a1
879: cmpa.l a1,a0
880: beq @f
881: pea.l msg_fail_addr(pc)
882: move.l a1,-(sp)
883: move.l a0,-(sp)
884: bsr result
885: lea.l 12(sp),sp
886: @@:
887: fmove.l fpcr,d0
888: moveq.l #0,d1
889: cmp.l d1,d0
890: beq @f
891: pea.l msg_fail_cr(pc)
892: move.l d1,-(sp)
893: move.l d0,-(sp)
894: bsr result
895: lea.l 12(sp),sp
896: @@:
897: fmove.l fpsr,d0
898: move.l #$05555550,d1
899: cmp.l d1,d0
900: beq @f
901: pea.l msg_fail_sr(pc)
902: move.l d1,-(sp)
903: move.l d0,-(sp)
904: bsr result
905: lea.l 12(sp),sp
906: @@:
907: fmove.l fpiar,a0
908: move.l d7,a1 ; d7=0
909: cmpa.l a1,a0
910: beq @f
911: pea.l msg_fail_ir(pc)
912: move.l a1,-(sp)
913: move.l a0,-(sp)
914: bsr result
915: lea.l 12(sp),sp
916: @@:
917: tst.l d7
918: bne @f
919: PRINT msg_ok
920: @@:
921: rts
922:
923: test_fmovem_anpd_to__S_:
924: PRINT msg_fmovem_anpd_to__S_
925: fmove.l #0,fpcr
926: fmove.l #0,fpsr
927: fmove.l #0,fpiar
928: move.l #$55555555,workarea
929: lea.l workarea+4(pc),a0
930: SET_FLINE_TRAP
931: moveq.l #0,d7
932: lea.l @f,a3
933: fmovem.l -(a0),fpsr
934: @@:
935: RESTORE_FLINE_TRAP
936: tst.l d7
937: beq @f
938: PRINT msg_fail_trap
939: rts
940: @@:
941: lea.l workarea(pc),a1
942: cmpa.l a1,a0
943: beq @f
944: pea.l msg_fail_addr(pc)
945: move.l a1,-(sp)
946: move.l a0,-(sp)
947: bsr result
948: lea.l 12(sp),sp
949: @@:
950: fmove.l fpcr,d0
951: moveq.l #0,d1
952: cmp.l d1,d0
953: beq @f
954: pea.l msg_fail_cr(pc)
955: move.l d1,-(sp)
956: move.l d0,-(sp)
957: bsr result
958: lea.l 12(sp),sp
959: @@:
960: fmove.l fpsr,d0
961: move.l #$05555550,d1
962: cmp.l d1,d0
963: beq @f
964: pea.l msg_fail_sr(pc)
965: move.l d1,-(sp)
966: move.l d0,-(sp)
967: bsr result
968: lea.l 12(sp),sp
969: @@:
970: fmove.l fpiar,a0
971: move.l d7,a1 ; d7=0
972: cmpa.l a1,a0
973: beq @f
974: pea.l msg_fail_ir(pc)
975: move.l a1,-(sp)
976: move.l a0,-(sp)
977: bsr result
978: lea.l 12(sp),sp
979: @@:
980: tst.l d7
981: bne @f
982: PRINT msg_ok
983: @@:
984: rts
985:
986: test_fmovem_imm_to__S_:
987: PRINT msg_fmovem_imm_to__S_
988: fmove.l #0,fpcr
989: fmove.l #0,fpsr
990: fmove.l #0,fpiar
991: SET_FLINE_TRAP
992: moveq.l #0,d7
993: lea.l @f,a3
994: fmovem.l #$55555555,fpsr
995: @@:
996: RESTORE_FLINE_TRAP
997: tst.l d7
998: beq @f
999: PRINT msg_fail_trap
1000: rts
1001: @@:
1002: fmove.l fpcr,d0
1003: moveq.l #0,d1
1004: cmp.l d1,d0
1005: beq @f
1006: pea.l msg_fail_cr(pc)
1007: move.l d1,-(sp)
1008: move.l d0,-(sp)
1009: bsr result
1010: lea.l 12(sp),sp
1011: @@:
1012: fmove.l fpsr,d0
1013: move.l #$05555550,d1
1014: cmp.l d1,d0
1015: beq @f
1016: pea.l msg_fail_sr(pc)
1017: move.l d1,-(sp)
1018: move.l d0,-(sp)
1019: bsr result
1020: lea.l 12(sp),sp
1021: @@:
1022: fmove.l fpiar,a0
1023: move.l d7,a1 ; d7=0
1024: cmpa.l a1,a0
1025: beq @f
1026: pea.l msg_fail_ir(pc)
1027: move.l a1,-(sp)
1028: move.l a0,-(sp)
1029: bsr result
1030: lea.l 12(sp),sp
1031: @@:
1032: tst.l d7
1033: bne @f
1034: PRINT msg_ok
1035: @@:
1036: rts
1037:
1038: test_fmovem_dn_to__SI:
1039: PRINT msg_fmovem_dn_to__SI
1040: SET_FLINE_TRAP
1041: moveq.l #0,d7
1042: lea.l @f,a3
1043: .dc.w $f200, $8c00
1044: @@:
1045: RESTORE_FLINE_TRAP
1046: tst.l d7
1047: bne @f
1048: PRINT msg_fail_notrap
1049: rts
1050: @@:
1051: PRINT msg_oktrap
1052: rts
1053:
1054: test_fmovem_an_to__SI:
1055: PRINT msg_fmovem_an_to__SI
1056: SET_FLINE_TRAP
1057: moveq.l #0,d7
1058: lea.l @f,a3
1059: .dc.w $f208, $8c00
1060: @@:
1061: RESTORE_FLINE_TRAP
1062: tst.l d7
1063: bne @f
1064: PRINT msg_fail_notrap
1065: rts
1066: @@:
1067: PRINT msg_oktrap
1068: rts
1069:
1070: test_fmovem_anin_to__SI:
1071: PRINT msg_fmovem_anin_to__SI
1072: fmove.l #0,fpcr
1073: fmove.l #0,fpsr
1074: fmove.l #0,fpiar
1075: move.l #$55555555,workarea
1076: move.l #$aaaaaaaa,workarea+4
1077: lea.l workarea(pc),a0
1078: SET_FLINE_TRAP
1079: moveq.l #0,d7
1080: lea.l @f,a3
1081: fmovem.l (a0),fpsr/fpiar
1082: @@:
1083: RESTORE_FLINE_TRAP
1084: tst.l d7
1085: beq @f
1086: PRINT msg_fail_trap
1087: rts
1088: @@:
1089: lea.l workarea(pc),a1
1090: cmpa.l a1,a0
1091: beq @f
1092: pea.l msg_fail_addr(pc)
1093: move.l a1,-(sp)
1094: move.l a0,-(sp)
1095: bsr result
1096: lea.l 12(sp),sp
1097: @@:
1098: fmove.l fpcr,d0
1099: moveq.l #0,d1
1100: cmp.l d1,d0
1101: beq @f
1102: pea.l msg_fail_cr(pc)
1103: move.l d1,-(sp)
1104: move.l d0,-(sp)
1105: bsr result
1106: lea.l 12(sp),sp
1107: @@:
1108: fmove.l fpsr,d0
1109: move.l #$05555550,d1
1110: cmp.l d1,d0
1111: beq @f
1112: pea.l msg_fail_sr(pc)
1113: move.l d1,-(sp)
1114: move.l d0,-(sp)
1115: bsr result
1116: lea.l 12(sp),sp
1117: @@:
1118: fmove.l fpiar,a0
1119: move.l #$aaaaaaaa,a1
1120: cmpa.l a1,a0
1121: beq @f
1122: pea.l msg_fail_ir(pc)
1123: move.l a1,-(sp)
1124: move.l a0,-(sp)
1125: bsr result
1126: lea.l 12(sp),sp
1127: @@:
1128: tst.l d7
1129: bne @f
1130: PRINT msg_ok
1131: @@:
1132: rts
1133:
1134: test_fmovem_anpi_to__SI:
1135: PRINT msg_fmovem_anpi_to__SI
1136: fmove.l #0,fpcr
1137: fmove.l #0,fpsr
1138: fmove.l #0,fpiar
1139: move.l #$55555555,workarea
1140: move.l #$aaaaaaaa,workarea+4
1141: lea.l workarea(pc),a0
1142: SET_FLINE_TRAP
1143: moveq.l #0,d7
1144: lea.l @f,a3
1145: fmovem.l (a0)+,fpsr/fpiar
1146: @@:
1147: RESTORE_FLINE_TRAP
1148: tst.l d7
1149: beq @f
1150: PRINT msg_fail_trap
1151: rts
1152: @@:
1153: lea.l workarea+8(pc),a1
1154: cmpa.l a1,a0
1155: beq @f
1156: pea.l msg_fail_addr(pc)
1157: move.l a1,-(sp)
1158: move.l a0,-(sp)
1159: bsr result
1160: lea.l 12(sp),sp
1161: @@:
1162: fmove.l fpcr,d0
1163: moveq.l #0,d1
1164: cmp.l d1,d0
1165: beq @f
1166: pea.l msg_fail_cr(pc)
1167: move.l d1,-(sp)
1168: move.l d0,-(sp)
1169: bsr result
1170: lea.l 12(sp),sp
1171: @@:
1172: fmove.l fpsr,d0
1173: move.l #$05555550,d1
1174: cmp.l d1,d0
1175: beq @f
1176: pea.l msg_fail_sr(pc)
1177: move.l d1,-(sp)
1178: move.l d0,-(sp)
1179: bsr result
1180: lea.l 12(sp),sp
1181: @@:
1182: fmove.l fpiar,a0
1183: move.l #$aaaaaaaa,a1
1184: cmpa.l a1,a0
1185: beq @f
1186: pea.l msg_fail_ir(pc)
1187: move.l a1,-(sp)
1188: move.l a0,-(sp)
1189: bsr result
1190: lea.l 12(sp),sp
1191: @@:
1192: tst.l d7
1193: bne @f
1194: PRINT msg_ok
1195: @@:
1196: rts
1197:
1198: test_fmovem_anpd_to__SI:
1199: PRINT msg_fmovem_anpd_to__SI
1200: fmove.l #0,fpcr
1201: fmove.l #0,fpsr
1202: fmove.l #0,fpiar
1203: move.l #$55555555,workarea
1204: move.l #$aaaaaaaa,workarea+4
1205: lea.l workarea+8(pc),a0
1206: SET_FLINE_TRAP
1207: moveq.l #0,d7
1208: lea.l @f,a3
1209: fmovem.l -(a0),fpsr/fpiar
1210: @@:
1211: RESTORE_FLINE_TRAP
1212: tst.l d7
1213: beq @f
1214: PRINT msg_fail_trap
1215: rts
1216: @@:
1217: lea.l workarea(pc),a1
1218: cmpa.l a1,a0
1219: beq @f
1220: pea.l msg_fail_addr(pc)
1221: move.l a1,-(sp)
1222: move.l a0,-(sp)
1223: bsr result
1224: lea.l 12(sp),sp
1225: @@:
1226: fmove.l fpcr,d0
1227: moveq.l #0,d1
1228: cmp.l d1,d0
1229: beq @f
1230: pea.l msg_fail_cr(pc)
1231: move.l d1,-(sp)
1232: move.l d0,-(sp)
1233: bsr result
1234: lea.l 12(sp),sp
1235: @@:
1236: fmove.l fpsr,d0
1237: move.l #$05555550,d1
1238: cmp.l d1,d0
1239: beq @f
1240: pea.l msg_fail_sr(pc)
1241: move.l d1,-(sp)
1242: move.l d0,-(sp)
1243: bsr result
1244: lea.l 12(sp),sp
1245: @@:
1246: fmove.l fpiar,a0
1247: move.l #$aaaaaaaa,a1
1248: cmpa.l a1,a0
1249: beq @f
1250: pea.l msg_fail_ir(pc)
1251: move.l a1,-(sp)
1252: move.l a0,-(sp)
1253: bsr result
1254: lea.l 12(sp),sp
1255: @@:
1256: tst.l d7
1257: bne @f
1258: PRINT msg_ok
1259: @@:
1260: rts
1261:
1262: test_fmovem_imm_to__SI:
1263: PRINT msg_fmovem_imm_to__SI
1264: fmove.l #0,fpcr
1265: fmove.l #0,fpsr
1266: fmove.l #0,fpiar
1267: SET_FLINE_TRAP
1268: moveq.l #0,d7
1269: lea.l @f,a3
1270: fmovem.l #$55555555,#$aaaaaaaa,fpsr/fpiar
1271: @@:
1272: RESTORE_FLINE_TRAP
1273: tst.l d7
1274: beq @f
1275: PRINT msg_fail_trap
1276: rts
1277: @@:
1278: fmove.l fpcr,d0
1279: moveq.l #0,d1
1280: cmp.l d1,d0
1281: beq @f
1282: pea.l msg_fail_cr(pc)
1283: move.l d1,-(sp)
1284: move.l d0,-(sp)
1285: bsr result
1286: lea.l 12(sp),sp
1287: @@:
1288: fmove.l fpsr,d0
1289: move.l #$05555550,d1
1290: cmp.l d1,d0
1291: beq @f
1292: pea.l msg_fail_sr(pc)
1293: move.l d1,-(sp)
1294: move.l d0,-(sp)
1295: bsr result
1296: lea.l 12(sp),sp
1297: @@:
1298: fmove.l fpiar,a0
1299: move.l #$aaaaaaaa,a1
1300: cmpa.l a1,a0
1301: beq @f
1302: pea.l msg_fail_ir(pc)
1303: move.l a1,-(sp)
1304: move.l a0,-(sp)
1305: bsr result
1306: lea.l 12(sp),sp
1307: @@:
1308: tst.l d7
1309: bne @f
1310: PRINT msg_ok
1311: @@:
1312: rts
1313:
1314: test_fmovem_dn_to_C__:
1315: PRINT msg_fmovem_dn_to_C__
1316: fmove.l #0,fpcr
1317: fmove.l #0,fpsr
1318: fmove.l #0,fpiar
1319: move.l #$55555555,d0
1320: SET_FLINE_TRAP
1321: moveq.l #0,d7
1322: lea.l @f,a3
1323: fmovem.l d0,fpcr
1324: @@:
1325: RESTORE_FLINE_TRAP
1326: tst.l d7
1327: beq @f
1328: PRINT msg_fail_trap
1329: rts
1330: @@:
1331: fmove.l fpcr,d0
1332: move.l #$00005550,d1
1333: cmp.l d1,d0
1334: beq @f
1335: pea.l msg_fail_cr(pc)
1336: move.l d1,-(sp)
1337: move.l d0,-(sp)
1338: bsr result
1339: lea.l 12(sp),sp
1340: @@:
1341: fmove.l fpsr,d0
1342: moveq.l #0,d1
1343: cmp.l d1,d0
1344: beq @f
1345: pea.l msg_fail_sr(pc)
1346: move.l d1,-(sp)
1347: move.l d0,-(sp)
1348: bsr result
1349: lea.l 12(sp),sp
1350: @@:
1351: fmove.l fpiar,a0
1352: move.l d7,a1 ; d7=0
1353: cmpa.l a1,a0
1354: beq @f
1355: pea.l msg_fail_ir(pc)
1356: move.l a1,-(sp)
1357: move.l a0,-(sp)
1358: bsr result
1359: lea.l 12(sp),sp
1360: @@:
1361: tst.l d7
1362: bne @f
1363: PRINT msg_ok
1364: @@:
1365: rts
1366:
1367: test_fmovem_an_to_C__:
1368: PRINT msg_fmovem_an_to_C__
1369: SET_FLINE_TRAP
1370: moveq.l #0,d7
1371: lea.l @f,a3
1372: .dc.w $f208, $9000
1373: @@:
1374: RESTORE_FLINE_TRAP
1375: tst.l d7
1376: bne @f
1377: PRINT msg_fail_notrap
1378: rts
1379: @@:
1380: PRINT msg_oktrap
1381: rts
1382:
1383: test_fmovem_anin_to_C__:
1384: PRINT msg_fmovem_anin_to_C__
1385: fmove.l #0,fpcr
1386: fmove.l #0,fpsr
1387: fmove.l #0,fpiar
1388: move.l #$55555555,workarea
1389: lea.l workarea(pc),a0
1390: SET_FLINE_TRAP
1391: moveq.l #0,d7
1392: lea.l @f,a3
1393: fmovem.l (a0),fpcr
1394: @@:
1395: RESTORE_FLINE_TRAP
1396: tst.l d7
1397: beq @f
1398: PRINT msg_fail_trap
1399: rts
1400: @@:
1401: lea.l workarea(pc),a1
1402: cmpa.l a1,a0
1403: beq @f
1404: pea.l msg_fail_addr(pc)
1405: move.l a1,-(sp)
1406: move.l a0,-(sp)
1407: bsr result
1408: lea.l 12(sp),sp
1409: @@:
1410: fmove.l fpcr,d0
1411: move.l #$00005550,d1
1412: cmp.l d1,d0
1413: beq @f
1414: pea.l msg_fail_cr(pc)
1415: move.l d1,-(sp)
1416: move.l d0,-(sp)
1417: bsr result
1418: lea.l 12(sp),sp
1419: @@:
1420: fmove.l fpsr,d0
1421: moveq.l #0,d1
1422: cmp.l d1,d0
1423: beq @f
1424: pea.l msg_fail_sr(pc)
1425: move.l d1,-(sp)
1426: move.l d0,-(sp)
1427: bsr result
1428: lea.l 12(sp),sp
1429: @@:
1430: fmove.l fpiar,a0
1431: move.l d7,a1 ; d7=0
1432: cmpa.l a1,a0
1433: beq @f
1434: pea.l msg_fail_ir(pc)
1435: move.l a1,-(sp)
1436: move.l a0,-(sp)
1437: bsr result
1438: lea.l 12(sp),sp
1439: @@:
1440: tst.l d7
1441: bne @f
1442: PRINT msg_ok
1443: @@:
1444: rts
1445:
1446: test_fmovem_anpi_to_C__:
1447: PRINT msg_fmovem_anpi_to_C__
1448: fmove.l #0,fpcr
1449: fmove.l #0,fpsr
1450: fmove.l #0,fpiar
1451: move.l #$55555555,workarea
1452: lea.l workarea(pc),a0
1453: SET_FLINE_TRAP
1454: moveq.l #0,d7
1455: lea.l @f,a3
1456: fmovem.l (a0)+,fpcr
1457: @@:
1458: RESTORE_FLINE_TRAP
1459: tst.l d7
1460: beq @f
1461: PRINT msg_fail_trap
1462: rts
1463: @@:
1464: lea.l workarea+4(pc),a1
1465: cmpa.l a1,a0
1466: beq @f
1467: pea.l msg_fail_addr(pc)
1468: move.l a1,-(sp)
1469: move.l a0,-(sp)
1470: bsr result
1471: lea.l 12(sp),sp
1472: @@:
1473: fmove.l fpcr,d0
1474: move.l #$00005550,d1
1475: cmp.l d1,d0
1476: beq @f
1477: pea.l msg_fail_cr(pc)
1478: move.l d1,-(sp)
1479: move.l d0,-(sp)
1480: bsr result
1481: lea.l 12(sp),sp
1482: @@:
1483: fmove.l fpsr,d0
1484: moveq.l #0,d1
1485: cmp.l d1,d0
1486: beq @f
1487: pea.l msg_fail_sr(pc)
1488: move.l d1,-(sp)
1489: move.l d0,-(sp)
1490: bsr result
1491: lea.l 12(sp),sp
1492: @@:
1493: fmove.l fpiar,a0
1494: move.l d7,a1 ; d7=0
1495: cmpa.l a1,a0
1496: beq @f
1497: pea.l msg_fail_ir(pc)
1498: move.l a1,-(sp)
1499: move.l a0,-(sp)
1500: bsr result
1501: lea.l 12(sp),sp
1502: @@:
1503: tst.l d7
1504: bne @f
1505: PRINT msg_ok
1506: @@:
1507: rts
1508:
1509: test_fmovem_anpd_to_C__:
1510: PRINT msg_fmovem_anpd_to_C__
1511: fmove.l #0,fpcr
1512: fmove.l #0,fpsr
1513: fmove.l #0,fpiar
1514: move.l #$55555555,workarea
1515: lea.l workarea+4(pc),a0
1516: SET_FLINE_TRAP
1517: moveq.l #0,d7
1518: lea.l @f,a3
1519: fmovem.l -(a0),fpcr
1520: @@:
1521: RESTORE_FLINE_TRAP
1522: tst.l d7
1523: beq @f
1524: PRINT msg_fail_trap
1525: rts
1526: @@:
1527: lea.l workarea(pc),a1
1528: cmpa.l a1,a0
1529: beq @f
1530: pea.l msg_fail_addr(pc)
1531: move.l a1,-(sp)
1532: move.l a0,-(sp)
1533: bsr result
1534: lea.l 12(sp),sp
1535: @@:
1536: fmove.l fpcr,d0
1537: move.l #$00005550,d1
1538: cmp.l d1,d0
1539: beq @f
1540: pea.l msg_fail_cr(pc)
1541: move.l d1,-(sp)
1542: move.l d0,-(sp)
1543: bsr result
1544: lea.l 12(sp),sp
1545: @@:
1546: fmove.l fpsr,d0
1547: moveq.l #0,d1
1548: cmp.l d1,d0
1549: beq @f
1550: pea.l msg_fail_sr(pc)
1551: move.l d1,-(sp)
1552: move.l d0,-(sp)
1553: bsr result
1554: lea.l 12(sp),sp
1555: @@:
1556: fmove.l fpiar,a0
1557: move.l d7,a1 ; d7=0
1558: cmpa.l a1,a0
1559: beq @f
1560: pea.l msg_fail_ir(pc)
1561: move.l a1,-(sp)
1562: move.l a0,-(sp)
1563: bsr result
1564: lea.l 12(sp),sp
1565: @@:
1566: tst.l d7
1567: bne @f
1568: PRINT msg_ok
1569: @@:
1570: rts
1571:
1572: test_fmovem_imm_to_C__:
1573: PRINT msg_fmovem_imm_to_C__
1574: fmove.l #0,fpcr
1575: fmove.l #0,fpsr
1576: fmove.l #0,fpiar
1577: SET_FLINE_TRAP
1578: moveq.l #0,d7
1579: lea.l @f,a3
1580: fmovem.l #$55555555,fpcr
1581: @@:
1582: RESTORE_FLINE_TRAP
1583: tst.l d7
1584: beq @f
1585: PRINT msg_fail_trap
1586: rts
1587: @@:
1588: fmove.l fpcr,d0
1589: move.l #$00005550,d1
1590: cmp.l d1,d0
1591: beq @f
1592: pea.l msg_fail_cr(pc)
1593: move.l d1,-(sp)
1594: move.l d0,-(sp)
1595: bsr result
1596: lea.l 12(sp),sp
1597: @@:
1598: fmove.l fpsr,d0
1599: moveq.l #0,d1
1600: cmp.l d1,d0
1601: beq @f
1602: pea.l msg_fail_sr(pc)
1603: move.l d1,-(sp)
1604: move.l d0,-(sp)
1605: bsr result
1606: lea.l 12(sp),sp
1607: @@:
1608: fmove.l fpiar,a0
1609: move.l d7,a1 ; d7=0
1610: cmpa.l a1,a0
1611: beq @f
1612: pea.l msg_fail_ir(pc)
1613: move.l a1,-(sp)
1614: move.l a0,-(sp)
1615: bsr result
1616: lea.l 12(sp),sp
1617: @@:
1618: tst.l d7
1619: bne @f
1620: PRINT msg_ok
1621: @@:
1622: rts
1623:
1624: test_fmovem_dn_to_C_I:
1625: PRINT msg_fmovem_dn_to_C_I
1626: SET_FLINE_TRAP
1627: moveq.l #0,d7
1628: lea.l @f,a3
1629: .dc.w $f200, $9400
1630: @@:
1631: RESTORE_FLINE_TRAP
1632: tst.l d7
1633: bne @f
1634: PRINT msg_fail_notrap
1635: rts
1636: @@:
1637: PRINT msg_oktrap
1638: rts
1639:
1640: test_fmovem_an_to_C_I:
1641: PRINT msg_fmovem_an_to_C_I
1642: SET_FLINE_TRAP
1643: moveq.l #0,d7
1644: lea.l @f,a3
1645: .dc.w $f208, $9400
1646: @@:
1647: RESTORE_FLINE_TRAP
1648: tst.l d7
1649: bne @f
1650: PRINT msg_fail_notrap
1651: rts
1652: @@:
1653: PRINT msg_oktrap
1654: rts
1655:
1656: test_fmovem_anin_to_C_I:
1657: PRINT msg_fmovem_anin_to_C_I
1658: fmove.l #0,fpcr
1659: fmove.l #0,fpsr
1660: fmove.l #0,fpiar
1661: move.l #$55555555,workarea
1662: move.l #$aaaaaaaa,workarea+4
1663: lea.l workarea(pc),a0
1664: SET_FLINE_TRAP
1665: moveq.l #0,d7
1666: lea.l @f,a3
1667: fmovem.l (a0),fpcr/fpiar
1668: @@:
1669: RESTORE_FLINE_TRAP
1670: tst.l d7
1671: beq @f
1672: PRINT msg_fail_trap
1673: rts
1674: @@:
1675: lea.l workarea(pc),a1
1676: cmpa.l a1,a0
1677: beq @f
1678: pea.l msg_fail_addr(pc)
1679: move.l a1,-(sp)
1680: move.l a0,-(sp)
1681: bsr result
1682: lea.l 12(sp),sp
1683: @@:
1684: fmove.l fpcr,d0
1685: move.l #$00005550,d1
1686: cmp.l d1,d0
1687: beq @f
1688: pea.l msg_fail_cr(pc)
1689: move.l d1,-(sp)
1690: move.l d0,-(sp)
1691: bsr result
1692: lea.l 12(sp),sp
1693: @@:
1694: fmove.l fpsr,d0
1695: moveq.l #0,d1
1696: cmp.l d1,d0
1697: beq @f
1698: pea.l msg_fail_sr(pc)
1699: move.l d1,-(sp)
1700: move.l d0,-(sp)
1701: bsr result
1702: lea.l 12(sp),sp
1703: @@:
1704: fmove.l fpiar,a0
1705: move.l #$aaaaaaaa,a1
1706: cmpa.l a1,a0
1707: beq @f
1708: pea.l msg_fail_ir(pc)
1709: move.l a1,-(sp)
1710: move.l a0,-(sp)
1711: bsr result
1712: lea.l 12(sp),sp
1713: @@:
1714: tst.l d7
1715: bne @f
1716: PRINT msg_ok
1717: @@:
1718: rts
1719:
1720: test_fmovem_anpi_to_C_I:
1721: PRINT msg_fmovem_anpi_to_C_I
1722: fmove.l #0,fpcr
1723: fmove.l #0,fpsr
1724: fmove.l #0,fpiar
1725: move.l #$55555555,workarea
1726: move.l #$aaaaaaaa,workarea+4
1727: lea.l workarea(pc),a0
1728: SET_FLINE_TRAP
1729: moveq.l #0,d7
1730: lea.l @f,a3
1731: fmovem.l (a0)+,fpcr/fpiar
1732: @@:
1733: RESTORE_FLINE_TRAP
1734: tst.l d7
1735: beq @f
1736: PRINT msg_fail_trap
1737: rts
1738: @@:
1739: lea.l workarea+8(pc),a1
1740: cmpa.l a1,a0
1741: beq @f
1742: pea.l msg_fail_addr(pc)
1743: move.l a1,-(sp)
1744: move.l a0,-(sp)
1745: bsr result
1746: lea.l 12(sp),sp
1747: @@:
1748: fmove.l fpcr,d0
1749: move.l #$00005550,d1
1750: cmp.l d1,d0
1751: beq @f
1752: pea.l msg_fail_cr(pc)
1753: move.l d1,-(sp)
1754: move.l d0,-(sp)
1755: bsr result
1756: lea.l 12(sp),sp
1757: @@:
1758: fmove.l fpsr,d0
1759: moveq.l #0,d1
1760: cmp.l d1,d0
1761: beq @f
1762: pea.l msg_fail_sr(pc)
1763: move.l d1,-(sp)
1764: move.l d0,-(sp)
1765: bsr result
1766: lea.l 12(sp),sp
1767: @@:
1768: fmove.l fpiar,a0
1769: move.l #$aaaaaaaa,a1
1770: cmpa.l a1,a0
1771: beq @f
1772: pea.l msg_fail_ir(pc)
1773: move.l a1,-(sp)
1774: move.l a0,-(sp)
1775: bsr result
1776: lea.l 12(sp),sp
1777: @@:
1778: tst.l d7
1779: bne @f
1780: PRINT msg_ok
1781: @@:
1782: rts
1783:
1784: test_fmovem_anpd_to_C_I:
1785: PRINT msg_fmovem_anpd_to_C_I
1786: fmove.l #0,fpcr
1787: fmove.l #0,fpsr
1788: fmove.l #0,fpiar
1789: move.l #$55555555,workarea
1790: move.l #$aaaaaaaa,workarea+4
1791: lea.l workarea+8(pc),a0
1792: SET_FLINE_TRAP
1793: moveq.l #0,d7
1794: lea.l @f,a3
1795: fmovem.l -(a0),fpcr/fpiar
1796: @@:
1797: RESTORE_FLINE_TRAP
1798: tst.l d7
1799: beq @f
1800: PRINT msg_fail_trap
1801: rts
1802: @@:
1803: lea.l workarea(pc),a1
1804: cmpa.l a1,a0
1805: beq @f
1806: pea.l msg_fail_addr(pc)
1807: move.l a1,-(sp)
1808: move.l a0,-(sp)
1809: bsr result
1810: lea.l 12(sp),sp
1811: @@:
1812: fmove.l fpcr,d0
1813: move.l #$00005550,d1
1814: cmp.l d1,d0
1815: beq @f
1816: pea.l msg_fail_cr(pc)
1817: move.l d1,-(sp)
1818: move.l d0,-(sp)
1819: bsr result
1820: lea.l 12(sp),sp
1821: @@:
1822: fmove.l fpsr,d0
1823: moveq.l #0,d1
1824: cmp.l d1,d0
1825: beq @f
1826: pea.l msg_fail_sr(pc)
1827: move.l d1,-(sp)
1828: move.l d0,-(sp)
1829: bsr result
1830: lea.l 12(sp),sp
1831: @@:
1832: fmove.l fpiar,a0
1833: move.l #$aaaaaaaa,a1
1834: cmpa.l a1,a0
1835: beq @f
1836: pea.l msg_fail_ir(pc)
1837: move.l a1,-(sp)
1838: move.l a0,-(sp)
1839: bsr result
1840: lea.l 12(sp),sp
1841: @@:
1842: tst.l d7
1843: bne @f
1844: PRINT msg_ok
1845: @@:
1846: rts
1847:
1848: test_fmovem_imm_to_C_I:
1849: PRINT msg_fmovem_imm_to_C_I
1850: fmove.l #0,fpcr
1851: fmove.l #0,fpsr
1852: fmove.l #0,fpiar
1853: SET_FLINE_TRAP
1854: moveq.l #0,d7
1855: lea.l @f,a3
1856: fmovem.l #$55555555,#$aaaaaaaa,fpcr/fpiar
1857: @@:
1858: RESTORE_FLINE_TRAP
1859: tst.l d7
1860: beq @f
1861: PRINT msg_fail_trap
1862: rts
1863: @@:
1864: fmove.l fpcr,d0
1865: move.l #$00005550,d1
1866: cmp.l d1,d0
1867: beq @f
1868: pea.l msg_fail_cr(pc)
1869: move.l d1,-(sp)
1870: move.l d0,-(sp)
1871: bsr result
1872: lea.l 12(sp),sp
1873: @@:
1874: fmove.l fpsr,d0
1875: moveq.l #0,d1
1876: cmp.l d1,d0
1877: beq @f
1878: pea.l msg_fail_sr(pc)
1879: move.l d1,-(sp)
1880: move.l d0,-(sp)
1881: bsr result
1882: lea.l 12(sp),sp
1883: @@:
1884: fmove.l fpiar,a0
1885: move.l #$aaaaaaaa,a1
1886: cmpa.l a1,a0
1887: beq @f
1888: pea.l msg_fail_ir(pc)
1889: move.l a1,-(sp)
1890: move.l a0,-(sp)
1891: bsr result
1892: lea.l 12(sp),sp
1893: @@:
1894: tst.l d7
1895: bne @f
1896: PRINT msg_ok
1897: @@:
1898: rts
1899:
1900: test_fmovem_dn_to_CS_:
1901: PRINT msg_fmovem_dn_to_CS_
1902: SET_FLINE_TRAP
1903: moveq.l #0,d7
1904: lea.l @f,a3
1905: .dc.w $f200, $9800
1906: @@:
1907: RESTORE_FLINE_TRAP
1908: tst.l d7
1909: bne @f
1910: PRINT msg_fail_notrap
1911: rts
1912: @@:
1913: PRINT msg_oktrap
1914: rts
1915:
1916: test_fmovem_an_to_CS_:
1917: PRINT msg_fmovem_an_to_CS_
1918: SET_FLINE_TRAP
1919: moveq.l #0,d7
1920: lea.l @f,a3
1921: .dc.w $f208, $9800
1922: @@:
1923: RESTORE_FLINE_TRAP
1924: tst.l d7
1925: bne @f
1926: PRINT msg_fail_notrap
1927: rts
1928: @@:
1929: PRINT msg_oktrap
1930: rts
1931:
1932: test_fmovem_anin_to_CS_:
1933: PRINT msg_fmovem_anin_to_CS_
1934: fmove.l #0,fpcr
1935: fmove.l #0,fpsr
1936: fmove.l #0,fpiar
1937: move.l #$55555555,workarea
1938: move.l #$aaaaaaaa,workarea+4
1939: lea.l workarea(pc),a0
1940: SET_FLINE_TRAP
1941: moveq.l #0,d7
1942: lea.l @f,a3
1943: fmovem.l (a0),fpcr/fpsr
1944: @@:
1945: RESTORE_FLINE_TRAP
1946: tst.l d7
1947: beq @f
1948: PRINT msg_fail_trap
1949: rts
1950: @@:
1951: lea.l workarea(pc),a1
1952: cmpa.l a1,a0
1953: beq @f
1954: pea.l msg_fail_addr(pc)
1955: move.l a1,-(sp)
1956: move.l a0,-(sp)
1957: bsr result
1958: lea.l 12(sp),sp
1959: @@:
1960: fmove.l fpcr,d0
1961: move.l #$00005550,d1
1962: cmp.l d1,d0
1963: beq @f
1964: pea.l msg_fail_cr(pc)
1965: move.l d1,-(sp)
1966: move.l d0,-(sp)
1967: bsr result
1968: lea.l 12(sp),sp
1969: @@:
1970: fmove.l fpsr,d0
1971: move.l #$0aaaaaa8,d1
1972: cmp.l d1,d0
1973: beq @f
1974: pea.l msg_fail_sr(pc)
1975: move.l d1,-(sp)
1976: move.l d0,-(sp)
1977: bsr result
1978: lea.l 12(sp),sp
1979: @@:
1980: fmove.l fpiar,a0
1981: move.l d7,a1 ; d7=0
1982: cmpa.l a1,a0
1983: beq @f
1984: pea.l msg_fail_ir(pc)
1985: move.l a1,-(sp)
1986: move.l a0,-(sp)
1987: bsr result
1988: lea.l 12(sp),sp
1989: @@:
1990: tst.l d7
1991: bne @f
1992: PRINT msg_ok
1993: @@:
1994: rts
1995:
1996: test_fmovem_anpi_to_CS_:
1997: PRINT msg_fmovem_anpi_to_CS_
1998: fmove.l #0,fpcr
1999: fmove.l #0,fpsr
2000: fmove.l #0,fpiar
2001: move.l #$55555555,workarea
2002: move.l #$aaaaaaaa,workarea+4
2003: lea.l workarea(pc),a0
2004: SET_FLINE_TRAP
2005: moveq.l #0,d7
2006: lea.l @f,a3
2007: fmovem.l (a0)+,fpcr/fpsr
2008: @@:
2009: RESTORE_FLINE_TRAP
2010: tst.l d7
2011: beq @f
2012: PRINT msg_fail_trap
2013: rts
2014: @@:
2015: lea.l workarea+8(pc),a1
2016: cmpa.l a1,a0
2017: beq @f
2018: pea.l msg_fail_addr(pc)
2019: move.l a1,-(sp)
2020: move.l a0,-(sp)
2021: bsr result
2022: lea.l 12(sp),sp
2023: @@:
2024: fmove.l fpcr,d0
2025: move.l #$00005550,d1
2026: cmp.l d1,d0
2027: beq @f
2028: pea.l msg_fail_cr(pc)
2029: move.l d1,-(sp)
2030: move.l d0,-(sp)
2031: bsr result
2032: lea.l 12(sp),sp
2033: @@:
2034: fmove.l fpsr,d0
2035: move.l #$0aaaaaa8,d1
2036: cmp.l d1,d0
2037: beq @f
2038: pea.l msg_fail_sr(pc)
2039: move.l d1,-(sp)
2040: move.l d0,-(sp)
2041: bsr result
2042: lea.l 12(sp),sp
2043: @@:
2044: fmove.l fpiar,a0
2045: move.l d7,a1 ; d7=0
2046: cmpa.l a1,a0
2047: beq @f
2048: pea.l msg_fail_ir(pc)
2049: move.l a1,-(sp)
2050: move.l a0,-(sp)
2051: bsr result
2052: lea.l 12(sp),sp
2053: @@:
2054: tst.l d7
2055: bne @f
2056: PRINT msg_ok
2057: @@:
2058: rts
2059:
2060: test_fmovem_anpd_to_CS_:
2061: PRINT msg_fmovem_anpd_to_CS_
2062: fmove.l #0,fpcr
2063: fmove.l #0,fpsr
2064: fmove.l #0,fpiar
2065: move.l #$55555555,workarea
2066: move.l #$aaaaaaaa,workarea+4
2067: lea.l workarea+8(pc),a0
2068: SET_FLINE_TRAP
2069: moveq.l #0,d7
2070: lea.l @f,a3
2071: fmovem.l -(a0),fpcr/fpsr
2072: @@:
2073: RESTORE_FLINE_TRAP
2074: tst.l d7
2075: beq @f
2076: PRINT msg_fail_trap
2077: rts
2078: @@:
2079: lea.l workarea(pc),a1
2080: cmpa.l a1,a0
2081: beq @f
2082: pea.l msg_fail_addr(pc)
2083: move.l a1,-(sp)
2084: move.l a0,-(sp)
2085: bsr result
2086: lea.l 12(sp),sp
2087: @@:
2088: fmove.l fpcr,d0
2089: move.l #$00005550,d1
2090: cmp.l d1,d0
2091: beq @f
2092: pea.l msg_fail_cr(pc)
2093: move.l d1,-(sp)
2094: move.l d0,-(sp)
2095: bsr result
2096: lea.l 12(sp),sp
2097: @@:
2098: fmove.l fpsr,d0
2099: move.l #$0aaaaaa8,d1
2100: cmp.l d1,d0
2101: beq @f
2102: pea.l msg_fail_sr(pc)
2103: move.l d1,-(sp)
2104: move.l d0,-(sp)
2105: bsr result
2106: lea.l 12(sp),sp
2107: @@:
2108: fmove.l fpiar,a0
2109: move.l d7,a1 ; d7=0
2110: cmpa.l a1,a0
2111: beq @f
2112: pea.l msg_fail_ir(pc)
2113: move.l a1,-(sp)
2114: move.l a0,-(sp)
2115: bsr result
2116: lea.l 12(sp),sp
2117: @@:
2118: tst.l d7
2119: bne @f
2120: PRINT msg_ok
2121: @@:
2122: rts
2123:
2124: test_fmovem_imm_to_CS_:
2125: PRINT msg_fmovem_imm_to_CS_
2126: fmove.l #0,fpcr
2127: fmove.l #0,fpsr
2128: fmove.l #0,fpiar
2129: SET_FLINE_TRAP
2130: moveq.l #0,d7
2131: lea.l @f,a3
2132: fmovem.l #$55555555,#$aaaaaaaa,fpcr/fpsr
2133: @@:
2134: RESTORE_FLINE_TRAP
2135: tst.l d7
2136: beq @f
2137: PRINT msg_fail_trap
2138: rts
2139: @@:
2140: fmove.l fpcr,d0
2141: move.l #$00005550,d1
2142: cmp.l d1,d0
2143: beq @f
2144: pea.l msg_fail_cr(pc)
2145: move.l d1,-(sp)
2146: move.l d0,-(sp)
2147: bsr result
2148: lea.l 12(sp),sp
2149: @@:
2150: fmove.l fpsr,d0
2151: move.l #$0aaaaaa8,d1
2152: cmp.l d1,d0
2153: beq @f
2154: pea.l msg_fail_sr(pc)
2155: move.l d1,-(sp)
2156: move.l d0,-(sp)
2157: bsr result
2158: lea.l 12(sp),sp
2159: @@:
2160: fmove.l fpiar,a0
2161: move.l d7,a1 ; d7=0
2162: cmpa.l a1,a0
2163: beq @f
2164: pea.l msg_fail_ir(pc)
2165: move.l a1,-(sp)
2166: move.l a0,-(sp)
2167: bsr result
2168: lea.l 12(sp),sp
2169: @@:
2170: tst.l d7
2171: bne @f
2172: PRINT msg_ok
2173: @@:
2174: rts
2175:
2176: test_fmovem_dn_to_CSI:
2177: PRINT msg_fmovem_dn_to_CSI
2178: SET_FLINE_TRAP
2179: moveq.l #0,d7
2180: lea.l @f,a3
2181: .dc.w $f200, $9c00
2182: @@:
2183: RESTORE_FLINE_TRAP
2184: tst.l d7
2185: bne @f
2186: PRINT msg_fail_notrap
2187: rts
2188: @@:
2189: PRINT msg_oktrap
2190: rts
2191:
2192: test_fmovem_an_to_CSI:
2193: PRINT msg_fmovem_an_to_CSI
2194: SET_FLINE_TRAP
2195: moveq.l #0,d7
2196: lea.l @f,a3
2197: .dc.w $f208, $9c00
2198: @@:
2199: RESTORE_FLINE_TRAP
2200: tst.l d7
2201: bne @f
2202: PRINT msg_fail_notrap
2203: rts
2204: @@:
2205: PRINT msg_oktrap
2206: rts
2207:
2208: test_fmovem_anin_to_CSI:
2209: PRINT msg_fmovem_anin_to_CSI
2210: fmove.l #0,fpcr
2211: fmove.l #0,fpsr
2212: fmove.l #0,fpiar
2213: move.l #$55555555,workarea
2214: move.l #$aaaaaaaa,workarea+4
2215: move.l #$33333333,workarea+8
2216: lea.l workarea(pc),a0
2217: SET_FLINE_TRAP
2218: moveq.l #0,d7
2219: lea.l @f,a3
2220: fmovem.l (a0),fpcr/fpsr/fpiar
2221: @@:
2222: RESTORE_FLINE_TRAP
2223: tst.l d7
2224: beq @f
2225: PRINT msg_fail_trap
2226: rts
2227: @@:
2228: lea.l workarea(pc),a1
2229: cmpa.l a1,a0
2230: beq @f
2231: pea.l msg_fail_addr(pc)
2232: move.l a1,-(sp)
2233: move.l a0,-(sp)
2234: bsr result
2235: lea.l 12(sp),sp
2236: @@:
2237: fmove.l fpcr,d0
2238: move.l #$00005550,d1
2239: cmp.l d1,d0
2240: beq @f
2241: pea.l msg_fail_cr(pc)
2242: move.l d1,-(sp)
2243: move.l d0,-(sp)
2244: bsr result
2245: lea.l 12(sp),sp
2246: @@:
2247: fmove.l fpsr,d0
2248: move.l #$0aaaaaa8,d1
2249: cmp.l d1,d0
2250: beq @f
2251: pea.l msg_fail_sr(pc)
2252: move.l d1,-(sp)
2253: move.l d0,-(sp)
2254: bsr result
2255: lea.l 12(sp),sp
2256: @@:
2257: fmove.l fpiar,a0
2258: move.l #$33333333,a1
2259: cmpa.l a1,a0
2260: beq @f
2261: pea.l msg_fail_ir(pc)
2262: move.l a1,-(sp)
2263: move.l a0,-(sp)
2264: bsr result
2265: lea.l 12(sp),sp
2266: @@:
2267: tst.l d7
2268: bne @f
2269: PRINT msg_ok
2270: @@:
2271: rts
2272:
2273: test_fmovem_anpi_to_CSI:
2274: PRINT msg_fmovem_anpi_to_CSI
2275: fmove.l #0,fpcr
2276: fmove.l #0,fpsr
2277: fmove.l #0,fpiar
2278: move.l #$55555555,workarea
2279: move.l #$aaaaaaaa,workarea+4
2280: move.l #$33333333,workarea+8
2281: lea.l workarea(pc),a0
2282: SET_FLINE_TRAP
2283: moveq.l #0,d7
2284: lea.l @f,a3
2285: fmovem.l (a0)+,fpcr/fpsr/fpiar
2286: @@:
2287: RESTORE_FLINE_TRAP
2288: tst.l d7
2289: beq @f
2290: PRINT msg_fail_trap
2291: rts
2292: @@:
2293: lea.l workarea+12(pc),a1
2294: cmpa.l a1,a0
2295: beq @f
2296: pea.l msg_fail_addr(pc)
2297: move.l a1,-(sp)
2298: move.l a0,-(sp)
2299: bsr result
2300: lea.l 12(sp),sp
2301: @@:
2302: fmove.l fpcr,d0
2303: move.l #$00005550,d1
2304: cmp.l d1,d0
2305: beq @f
2306: pea.l msg_fail_cr(pc)
2307: move.l d1,-(sp)
2308: move.l d0,-(sp)
2309: bsr result
2310: lea.l 12(sp),sp
2311: @@:
2312: fmove.l fpsr,d0
2313: move.l #$0aaaaaa8,d1
2314: cmp.l d1,d0
2315: beq @f
2316: pea.l msg_fail_sr(pc)
2317: move.l d1,-(sp)
2318: move.l d0,-(sp)
2319: bsr result
2320: lea.l 12(sp),sp
2321: @@:
2322: fmove.l fpiar,a0
2323: move.l #$33333333,a1
2324: cmpa.l a1,a0
2325: beq @f
2326: pea.l msg_fail_ir(pc)
2327: move.l a1,-(sp)
2328: move.l a0,-(sp)
2329: bsr result
2330: lea.l 12(sp),sp
2331: @@:
2332: tst.l d7
2333: bne @f
2334: PRINT msg_ok
2335: @@:
2336: rts
2337:
2338: test_fmovem_anpd_to_CSI:
2339: PRINT msg_fmovem_anpd_to_CSI
2340: fmove.l #0,fpcr
2341: fmove.l #0,fpsr
2342: fmove.l #0,fpiar
2343: move.l #$55555555,workarea
2344: move.l #$aaaaaaaa,workarea+4
2345: move.l #$33333333,workarea+8
2346: lea.l workarea+12(pc),a0
2347: SET_FLINE_TRAP
2348: moveq.l #0,d7
2349: lea.l @f,a3
2350: fmovem.l -(a0),fpcr/fpsr/fpiar
2351: @@:
2352: RESTORE_FLINE_TRAP
2353: tst.l d7
2354: beq @f
2355: PRINT msg_fail_trap
2356: rts
2357: @@:
2358: lea.l workarea(pc),a1
2359: cmpa.l a1,a0
2360: beq @f
2361: pea.l msg_fail_addr(pc)
2362: move.l a1,-(sp)
2363: move.l a0,-(sp)
2364: bsr result
2365: lea.l 12(sp),sp
2366: @@:
2367: fmove.l fpcr,d0
2368: move.l #$00005550,d1
2369: cmp.l d1,d0
2370: beq @f
2371: pea.l msg_fail_cr(pc)
2372: move.l d1,-(sp)
2373: move.l d0,-(sp)
2374: bsr result
2375: lea.l 12(sp),sp
2376: @@:
2377: fmove.l fpsr,d0
2378: move.l #$0aaaaaa8,d1
2379: cmp.l d1,d0
2380: beq @f
2381: pea.l msg_fail_sr(pc)
2382: move.l d1,-(sp)
2383: move.l d0,-(sp)
2384: bsr result
2385: lea.l 12(sp),sp
2386: @@:
2387: fmove.l fpiar,a0
2388: move.l #$33333333,a1
2389: cmpa.l a1,a0
2390: beq @f
2391: pea.l msg_fail_ir(pc)
2392: move.l a1,-(sp)
2393: move.l a0,-(sp)
2394: bsr result
2395: lea.l 12(sp),sp
2396: @@:
2397: tst.l d7
2398: bne @f
2399: PRINT msg_ok
2400: @@:
2401: rts
2402:
2403: test_fmovem_imm_to_CSI:
2404: PRINT msg_fmovem_imm_to_CSI
2405: fmove.l #0,fpcr
2406: fmove.l #0,fpsr
2407: fmove.l #0,fpiar
2408: SET_FLINE_TRAP
2409: moveq.l #0,d7
2410: lea.l @f,a3
2411: fmovem.l #$55555555,#$aaaaaaaa,#$33333333,fpcr/fpsr/fpiar
2412: @@:
2413: RESTORE_FLINE_TRAP
2414: tst.l d7
2415: beq @f
2416: PRINT msg_fail_trap
2417: rts
2418: @@:
2419: fmove.l fpcr,d0
2420: move.l #$00005550,d1
2421: cmp.l d1,d0
2422: beq @f
2423: pea.l msg_fail_cr(pc)
2424: move.l d1,-(sp)
2425: move.l d0,-(sp)
2426: bsr result
2427: lea.l 12(sp),sp
2428: @@:
2429: fmove.l fpsr,d0
2430: move.l #$0aaaaaa8,d1
2431: cmp.l d1,d0
2432: beq @f
2433: pea.l msg_fail_sr(pc)
2434: move.l d1,-(sp)
2435: move.l d0,-(sp)
2436: bsr result
2437: lea.l 12(sp),sp
2438: @@:
2439: fmove.l fpiar,a0
2440: move.l #$33333333,a1
2441: cmpa.l a1,a0
2442: beq @f
2443: pea.l msg_fail_ir(pc)
2444: move.l a1,-(sp)
2445: move.l a0,-(sp)
2446: bsr result
2447: lea.l 12(sp),sp
2448: @@:
2449: tst.l d7
2450: bne @f
2451: PRINT msg_ok
2452: @@:
2453: rts
2454:
2455: test_fmovem_____to_dn:
2456: PRINT msg_fmovem_____to_dn
2457: fmove.l #$00000000,fpcr
2458: fmove.l #$00000000,fpsr
2459: fmove.l #$55555555,fpiar
2460: SET_FLINE_TRAP
2461: moveq.l #0,d7
2462: lea.l @f,a3
2463: .dc.w $f200, $a000
2464: @@:
2465: RESTORE_FLINE_TRAP
2466: tst.l d7
2467: beq @f
2468: PRINT msg_fail_trap
2469: rts
2470: @@:
2471: move.l #$55555555,d1
2472: cmp.l d1,d0
2473: beq @f
2474: pea.l msg_fail(pc)
2475: move.l d1,-(sp)
2476: move.l d0,-(sp)
2477: bsr result
2478: lea.l 12(sp),sp
2479: @@:
2480: tst.l d7
2481: bne @f
2482: PRINT msg_ok
2483: @@:
2484: rts
2485:
2486: test_fmovem_____to_an:
2487: PRINT msg_fmovem_____to_an
2488: fmove.l #$00000000,fpcr
2489: fmove.l #$00000000,fpsr
2490: fmove.l #$55555555,fpiar
2491: SET_FLINE_TRAP
2492: moveq.l #0,d7
2493: lea.l @f,a3
2494: .dc.w $f208, $a000
2495: @@:
2496: RESTORE_FLINE_TRAP
2497: tst.l d7
2498: beq @f
2499: PRINT msg_fail_trap
2500: rts
2501: @@:
2502: movea.l #$55555555,a1
2503: cmp.l a1,a0
2504: beq @f
2505: pea.l msg_fail(pc)
2506: move.l a1,-(sp)
2507: move.l a0,-(sp)
2508: bsr result
2509: lea.l 12(sp),sp
2510: @@:
2511: tst.l d7
2512: bne @f
2513: PRINT msg_ok
2514: @@:
2515: rts
2516:
2517: test_fmovem_____to_anin:
2518: PRINT msg_fmovem_____to_anin
2519: fmove.l #$00000000,fpcr
2520: fmove.l #$00000000,fpsr
2521: fmove.l #$55555555,fpiar
2522: lea.l workarea(pc),a0
2523: SET_FLINE_TRAP
2524: moveq.l #0,d7
2525: lea.l @f,a3
2526: .dc.w $f210, $a000
2527: @@:
2528: RESTORE_FLINE_TRAP
2529: tst.l d7
2530: beq @f
2531: PRINT msg_fail_trap
2532: rts
2533: @@:
2534: lea.l workarea(pc),a1
2535: cmpa.l a1,a0
2536: beq @f
2537: pea.l msg_fail_addr(pc)
2538: move.l a1,-(sp)
2539: move.l a0,-(sp)
2540: bsr result
2541: lea.l 12(sp),sp
2542: @@:
2543: move.l #$55555555,d1
2544: cmp.l workarea+0,d1
2545: beq @f
2546: pea.l msg_fail(pc)
2547: move.l d1,-(sp)
2548: move.l workarea+4,-(sp)
2549: bsr result
2550: lea.l 12(sp),sp
2551: @@:
2552: tst.l d7
2553: bne @f
2554: PRINT msg_ok
2555: @@:
2556: rts
2557:
2558: test_fmovem_____to_anpi:
2559: PRINT msg_fmovem_____to_anpi
2560: fmove.l #$00000000,fpcr
2561: fmove.l #$00000000,fpsr
2562: fmove.l #$55555555,fpiar
2563: lea.l workarea(pc),a0
2564: SET_FLINE_TRAP
2565: moveq.l #0,d7
2566: lea.l @f,a3
2567: .dc.w $f218, $a000
2568: @@:
2569: RESTORE_FLINE_TRAP
2570: tst.l d7
2571: beq @f
2572: PRINT msg_fail_trap
2573: rts
2574: @@:
2575: lea.l workarea+4(pc),a1
2576: cmpa.l a1,a0
2577: beq @f
2578: pea.l msg_fail_addr(pc)
2579: move.l a1,-(sp)
2580: move.l a0,-(sp)
2581: bsr result
2582: lea.l 12(sp),sp
2583: @@:
2584: move.l #$55555555,d1
2585: cmp.l workarea+0,d1
2586: beq @f
2587: pea.l msg_fail(pc)
2588: move.l d1,-(sp)
2589: move.l workarea+4,-(sp)
2590: bsr result
2591: lea.l 12(sp),sp
2592: @@:
2593: tst.l d7
2594: bne @f
2595: PRINT msg_ok
2596: @@:
2597: rts
2598:
2599: test_fmovem_____to_anpd:
2600: PRINT msg_fmovem_____to_anpd
2601: fmove.l #$00000000,fpcr
2602: fmove.l #$00000000,fpsr
2603: fmove.l #$55555555,fpiar
2604: lea.l workarea+4(pc),a0
2605: SET_FLINE_TRAP
2606: moveq.l #0,d7
2607: lea.l @f,a3
2608: .dc.w $f220, $a000
2609: @@:
2610: RESTORE_FLINE_TRAP
2611: tst.l d7
2612: beq @f
2613: PRINT msg_fail_trap
2614: rts
2615: @@:
2616: lea.l workarea(pc),a1
2617: cmpa.l a1,a0
2618: beq @f
2619: pea.l msg_fail_addr(pc)
2620: move.l a1,-(sp)
2621: move.l a0,-(sp)
2622: bsr result
2623: lea.l 12(sp),sp
2624: @@:
2625: move.l #$55555555,d1
2626: cmp.l workarea+0,d1
2627: beq @f
2628: pea.l msg_fail(pc)
2629: move.l d1,-(sp)
2630: move.l workarea+4,-(sp)
2631: bsr result
2632: lea.l 12(sp),sp
2633: @@:
2634: tst.l d7
2635: bne @f
2636: PRINT msg_ok
2637: @@:
2638: rts
2639:
2640: test_fmovem_____to_imm:
2641: PRINT msg_fmovem_____to_imm
2642: SET_FLINE_TRAP
2643: moveq.l #0,d7
2644: lea.l @f,a3
2645: .dc.w $f23c, $a000
2646: @@:
2647: RESTORE_FLINE_TRAP
2648: tst.l d7
2649: bne @f
2650: PRINT msg_fail_notrap
2651: rts
2652: @@:
2653: PRINT msg_oktrap
2654: rts
2655:
2656: test_fmovem___I_to_dn:
2657: PRINT msg_fmovem___I_to_dn
2658: fmove.l #$00000000,fpcr
2659: fmove.l #$00000000,fpsr
2660: fmove.l #$55555555,fpiar
2661: SET_FLINE_TRAP
2662: moveq.l #0,d7
2663: lea.l @f,a3
2664: fmovem.l fpiar,d0
2665: @@:
2666: RESTORE_FLINE_TRAP
2667: tst.l d7
2668: beq @f
2669: PRINT msg_fail_trap
2670: rts
2671: @@:
2672: move.l #$55555555,d1
2673: cmp.l d1,d0
2674: beq @f
2675: pea.l msg_fail(pc)
2676: move.l d1,-(sp)
2677: move.l d0,-(sp)
2678: bsr result
2679: lea.l 12(sp),sp
2680: @@:
2681: tst.l d7
2682: bne @f
2683: PRINT msg_ok
2684: @@:
2685: rts
2686:
2687: test_fmovem___I_to_an:
2688: PRINT msg_fmovem___I_to_an
2689: fmove.l #$00000000,fpcr
2690: fmove.l #$00000000,fpsr
2691: fmove.l #$55555555,fpiar
2692: SET_FLINE_TRAP
2693: moveq.l #0,d7
2694: lea.l @f,a3
2695: fmovem.l fpiar,a0
2696: @@:
2697: RESTORE_FLINE_TRAP
2698: tst.l d7
2699: beq @f
2700: PRINT msg_fail_trap
2701: rts
2702: @@:
2703: movea.l #$55555555,a1
2704: cmp.l a1,a0
2705: beq @f
2706: pea.l msg_fail(pc)
2707: move.l a1,-(sp)
2708: move.l a0,-(sp)
2709: bsr result
2710: lea.l 12(sp),sp
2711: @@:
2712: tst.l d7
2713: bne @f
2714: PRINT msg_ok
2715: @@:
2716: rts
2717:
2718: test_fmovem___I_to_anin:
2719: PRINT msg_fmovem___I_to_anin
2720: fmove.l #$00000000,fpcr
2721: fmove.l #$00000000,fpsr
2722: fmove.l #$55555555,fpiar
2723: lea.l workarea(pc),a0
2724: SET_FLINE_TRAP
2725: moveq.l #0,d7
2726: lea.l @f,a3
2727: fmovem.l fpiar,(a0)
2728: @@:
2729: RESTORE_FLINE_TRAP
2730: tst.l d7
2731: beq @f
2732: PRINT msg_fail_trap
2733: rts
2734: @@:
2735: lea.l workarea(pc),a1
2736: cmpa.l a1,a0
2737: beq @f
2738: pea.l msg_fail_addr(pc)
2739: move.l a1,-(sp)
2740: move.l a0,-(sp)
2741: bsr result
2742: lea.l 12(sp),sp
2743: @@:
2744: move.l #$55555555,d1
2745: cmp.l workarea+0,d1
2746: beq @f
2747: pea.l msg_fail(pc)
2748: move.l d1,-(sp)
2749: move.l workarea+4,-(sp)
2750: bsr result
2751: lea.l 12(sp),sp
2752: @@:
2753: tst.l d7
2754: bne @f
2755: PRINT msg_ok
2756: @@:
2757: rts
2758:
2759: test_fmovem___I_to_anpi:
2760: PRINT msg_fmovem___I_to_anpi
2761: fmove.l #$00000000,fpcr
2762: fmove.l #$00000000,fpsr
2763: fmove.l #$55555555,fpiar
2764: lea.l workarea(pc),a0
2765: SET_FLINE_TRAP
2766: moveq.l #0,d7
2767: lea.l @f,a3
2768: fmovem.l fpiar,(a0)+
2769: @@:
2770: RESTORE_FLINE_TRAP
2771: tst.l d7
2772: beq @f
2773: PRINT msg_fail_trap
2774: rts
2775: @@:
2776: lea.l workarea+4(pc),a1
2777: cmpa.l a1,a0
2778: beq @f
2779: pea.l msg_fail_addr(pc)
2780: move.l a1,-(sp)
2781: move.l a0,-(sp)
2782: bsr result
2783: lea.l 12(sp),sp
2784: @@:
2785: move.l #$55555555,d1
2786: cmp.l workarea+0,d1
2787: beq @f
2788: pea.l msg_fail(pc)
2789: move.l d1,-(sp)
2790: move.l workarea+4,-(sp)
2791: bsr result
2792: lea.l 12(sp),sp
2793: @@:
2794: tst.l d7
2795: bne @f
2796: PRINT msg_ok
2797: @@:
2798: rts
2799:
2800: test_fmovem___I_to_anpd:
2801: PRINT msg_fmovem___I_to_anpd
2802: fmove.l #$00000000,fpcr
2803: fmove.l #$00000000,fpsr
2804: fmove.l #$55555555,fpiar
2805: lea.l workarea+4(pc),a0
2806: SET_FLINE_TRAP
2807: moveq.l #0,d7
2808: lea.l @f,a3
2809: fmovem.l fpiar,-(a0)
2810: @@:
2811: RESTORE_FLINE_TRAP
2812: tst.l d7
2813: beq @f
2814: PRINT msg_fail_trap
2815: rts
2816: @@:
2817: lea.l workarea(pc),a1
2818: cmpa.l a1,a0
2819: beq @f
2820: pea.l msg_fail_addr(pc)
2821: move.l a1,-(sp)
2822: move.l a0,-(sp)
2823: bsr result
2824: lea.l 12(sp),sp
2825: @@:
2826: move.l #$55555555,d1
2827: cmp.l workarea+0,d1
2828: beq @f
2829: pea.l msg_fail(pc)
2830: move.l d1,-(sp)
2831: move.l workarea+4,-(sp)
2832: bsr result
2833: lea.l 12(sp),sp
2834: @@:
2835: tst.l d7
2836: bne @f
2837: PRINT msg_ok
2838: @@:
2839: rts
2840:
2841: test_fmovem___I_to_imm:
2842: PRINT msg_fmovem___I_to_imm
2843: SET_FLINE_TRAP
2844: moveq.l #0,d7
2845: lea.l @f,a3
2846: .dc.w $f23c, $a400
2847: @@:
2848: RESTORE_FLINE_TRAP
2849: tst.l d7
2850: bne @f
2851: PRINT msg_fail_notrap
2852: rts
2853: @@:
2854: PRINT msg_oktrap
2855: rts
2856:
2857: test_fmovem__S__to_dn:
2858: PRINT msg_fmovem__S__to_dn
2859: fmove.l #$00000000,fpcr
2860: fmove.l #$55555555,fpsr
2861: fmove.l #$00000000,fpiar
2862: SET_FLINE_TRAP
2863: moveq.l #0,d7
2864: lea.l @f,a3
2865: fmovem.l fpsr,d0
2866: @@:
2867: RESTORE_FLINE_TRAP
2868: tst.l d7
2869: beq @f
2870: PRINT msg_fail_trap
2871: rts
2872: @@:
2873: move.l #$05555550,d1
2874: cmp.l d1,d0
2875: beq @f
2876: pea.l msg_fail(pc)
2877: move.l d1,-(sp)
2878: move.l d0,-(sp)
2879: bsr result
2880: lea.l 12(sp),sp
2881: @@:
2882: tst.l d7
2883: bne @f
2884: PRINT msg_ok
2885: @@:
2886: rts
2887:
2888: test_fmovem__S__to_an:
2889: PRINT msg_fmovem__S__to_an
2890: SET_FLINE_TRAP
2891: moveq.l #0,d7
2892: lea.l @f,a3
2893: .dc.w $f208, $a800
2894: @@:
2895: RESTORE_FLINE_TRAP
2896: tst.l d7
2897: bne @f
2898: PRINT msg_fail_notrap
2899: rts
2900: @@:
2901: PRINT msg_oktrap
2902: rts
2903:
2904: test_fmovem__S__to_anin:
2905: PRINT msg_fmovem__S__to_anin
2906: fmove.l #$00000000,fpcr
2907: fmove.l #$55555555,fpsr
2908: fmove.l #$00000000,fpiar
2909: lea.l workarea(pc),a0
2910: SET_FLINE_TRAP
2911: moveq.l #0,d7
2912: lea.l @f,a3
2913: fmovem.l fpsr,(a0)
2914: @@:
2915: RESTORE_FLINE_TRAP
2916: tst.l d7
2917: beq @f
2918: PRINT msg_fail_trap
2919: rts
2920: @@:
2921: lea.l workarea(pc),a1
2922: cmpa.l a1,a0
2923: beq @f
2924: pea.l msg_fail_addr(pc)
2925: move.l a1,-(sp)
2926: move.l a0,-(sp)
2927: bsr result
2928: lea.l 12(sp),sp
2929: @@:
2930: move.l #$05555550,d1
2931: cmp.l workarea+0,d1
2932: beq @f
2933: pea.l msg_fail(pc)
2934: move.l d1,-(sp)
2935: move.l workarea+4,-(sp)
2936: bsr result
2937: lea.l 12(sp),sp
2938: @@:
2939: tst.l d7
2940: bne @f
2941: PRINT msg_ok
2942: @@:
2943: rts
2944:
2945: test_fmovem__S__to_anpi:
2946: PRINT msg_fmovem__S__to_anpi
2947: fmove.l #$00000000,fpcr
2948: fmove.l #$55555555,fpsr
2949: fmove.l #$00000000,fpiar
2950: lea.l workarea(pc),a0
2951: SET_FLINE_TRAP
2952: moveq.l #0,d7
2953: lea.l @f,a3
2954: fmovem.l fpsr,(a0)+
2955: @@:
2956: RESTORE_FLINE_TRAP
2957: tst.l d7
2958: beq @f
2959: PRINT msg_fail_trap
2960: rts
2961: @@:
2962: lea.l workarea+4(pc),a1
2963: cmpa.l a1,a0
2964: beq @f
2965: pea.l msg_fail_addr(pc)
2966: move.l a1,-(sp)
2967: move.l a0,-(sp)
2968: bsr result
2969: lea.l 12(sp),sp
2970: @@:
2971: move.l #$05555550,d1
2972: cmp.l workarea+0,d1
2973: beq @f
2974: pea.l msg_fail(pc)
2975: move.l d1,-(sp)
2976: move.l workarea+4,-(sp)
2977: bsr result
2978: lea.l 12(sp),sp
2979: @@:
2980: tst.l d7
2981: bne @f
2982: PRINT msg_ok
2983: @@:
2984: rts
2985:
2986: test_fmovem__S__to_anpd:
2987: PRINT msg_fmovem__S__to_anpd
2988: fmove.l #$00000000,fpcr
2989: fmove.l #$55555555,fpsr
2990: fmove.l #$00000000,fpiar
2991: lea.l workarea+4(pc),a0
2992: SET_FLINE_TRAP
2993: moveq.l #0,d7
2994: lea.l @f,a3
2995: fmovem.l fpsr,-(a0)
2996: @@:
2997: RESTORE_FLINE_TRAP
2998: tst.l d7
2999: beq @f
3000: PRINT msg_fail_trap
3001: rts
3002: @@:
3003: lea.l workarea(pc),a1
3004: cmpa.l a1,a0
3005: beq @f
3006: pea.l msg_fail_addr(pc)
3007: move.l a1,-(sp)
3008: move.l a0,-(sp)
3009: bsr result
3010: lea.l 12(sp),sp
3011: @@:
3012: move.l #$05555550,d1
3013: cmp.l workarea+0,d1
3014: beq @f
3015: pea.l msg_fail(pc)
3016: move.l d1,-(sp)
3017: move.l workarea+4,-(sp)
3018: bsr result
3019: lea.l 12(sp),sp
3020: @@:
3021: tst.l d7
3022: bne @f
3023: PRINT msg_ok
3024: @@:
3025: rts
3026:
3027: test_fmovem__S__to_imm:
3028: PRINT msg_fmovem__S__to_imm
3029: SET_FLINE_TRAP
3030: moveq.l #0,d7
3031: lea.l @f,a3
3032: .dc.w $f23c, $a800
3033: @@:
3034: RESTORE_FLINE_TRAP
3035: tst.l d7
3036: bne @f
3037: PRINT msg_fail_notrap
3038: rts
3039: @@:
3040: PRINT msg_oktrap
3041: rts
3042:
3043: test_fmovem__SI_to_dn:
3044: PRINT msg_fmovem__SI_to_dn
3045: SET_FLINE_TRAP
3046: moveq.l #0,d7
3047: lea.l @f,a3
3048: .dc.w $f200, $ac00
3049: @@:
3050: RESTORE_FLINE_TRAP
3051: tst.l d7
3052: bne @f
3053: PRINT msg_fail_notrap
3054: rts
3055: @@:
3056: PRINT msg_oktrap
3057: rts
3058:
3059: test_fmovem__SI_to_an:
3060: PRINT msg_fmovem__SI_to_an
3061: SET_FLINE_TRAP
3062: moveq.l #0,d7
3063: lea.l @f,a3
3064: .dc.w $f208, $ac00
3065: @@:
3066: RESTORE_FLINE_TRAP
3067: tst.l d7
3068: bne @f
3069: PRINT msg_fail_notrap
3070: rts
3071: @@:
3072: PRINT msg_oktrap
3073: rts
3074:
3075: test_fmovem__SI_to_anin:
3076: PRINT msg_fmovem__SI_to_anin
3077: fmove.l #$00000000,fpcr
3078: fmove.l #$55555555,fpsr
3079: fmove.l #$aaaaaaaa,fpiar
3080: lea.l workarea(pc),a0
3081: SET_FLINE_TRAP
3082: moveq.l #0,d7
3083: lea.l @f,a3
3084: fmovem.l fpsr/fpiar,(a0)
3085: @@:
3086: RESTORE_FLINE_TRAP
3087: tst.l d7
3088: beq @f
3089: PRINT msg_fail_trap
3090: rts
3091: @@:
3092: lea.l workarea(pc),a1
3093: cmpa.l a1,a0
3094: beq @f
3095: pea.l msg_fail_addr(pc)
3096: move.l a1,-(sp)
3097: move.l a0,-(sp)
3098: bsr result
3099: lea.l 12(sp),sp
3100: @@:
3101: move.l #$05555550,d1
3102: cmp.l workarea+0,d1
3103: beq @f
3104: pea.l msg_fail(pc)
3105: move.l d1,-(sp)
3106: move.l workarea+4,-(sp)
3107: bsr result
3108: lea.l 12(sp),sp
3109: @@:
3110: move.l #$aaaaaaaa,d1
3111: cmp.l workarea+4,d1
3112: beq @f
3113: pea.l msg_fail(pc)
3114: move.l d1,-(sp)
3115: move.l workarea+8,-(sp)
3116: bsr result
3117: lea.l 12(sp),sp
3118: @@:
3119: tst.l d7
3120: bne @f
3121: PRINT msg_ok
3122: @@:
3123: rts
3124:
3125: test_fmovem__SI_to_anpi:
3126: PRINT msg_fmovem__SI_to_anpi
3127: fmove.l #$00000000,fpcr
3128: fmove.l #$55555555,fpsr
3129: fmove.l #$aaaaaaaa,fpiar
3130: lea.l workarea(pc),a0
3131: SET_FLINE_TRAP
3132: moveq.l #0,d7
3133: lea.l @f,a3
3134: fmovem.l fpsr/fpiar,(a0)+
3135: @@:
3136: RESTORE_FLINE_TRAP
3137: tst.l d7
3138: beq @f
3139: PRINT msg_fail_trap
3140: rts
3141: @@:
3142: lea.l workarea+8(pc),a1
3143: cmpa.l a1,a0
3144: beq @f
3145: pea.l msg_fail_addr(pc)
3146: move.l a1,-(sp)
3147: move.l a0,-(sp)
3148: bsr result
3149: lea.l 12(sp),sp
3150: @@:
3151: move.l #$05555550,d1
3152: cmp.l workarea+0,d1
3153: beq @f
3154: pea.l msg_fail(pc)
3155: move.l d1,-(sp)
3156: move.l workarea+4,-(sp)
3157: bsr result
3158: lea.l 12(sp),sp
3159: @@:
3160: move.l #$aaaaaaaa,d1
3161: cmp.l workarea+4,d1
3162: beq @f
3163: pea.l msg_fail(pc)
3164: move.l d1,-(sp)
3165: move.l workarea+8,-(sp)
3166: bsr result
3167: lea.l 12(sp),sp
3168: @@:
3169: tst.l d7
3170: bne @f
3171: PRINT msg_ok
3172: @@:
3173: rts
3174:
3175: test_fmovem__SI_to_anpd:
3176: PRINT msg_fmovem__SI_to_anpd
3177: fmove.l #$00000000,fpcr
3178: fmove.l #$55555555,fpsr
3179: fmove.l #$aaaaaaaa,fpiar
3180: lea.l workarea+8(pc),a0
3181: SET_FLINE_TRAP
3182: moveq.l #0,d7
3183: lea.l @f,a3
3184: fmovem.l fpsr/fpiar,-(a0)
3185: @@:
3186: RESTORE_FLINE_TRAP
3187: tst.l d7
3188: beq @f
3189: PRINT msg_fail_trap
3190: rts
3191: @@:
3192: lea.l workarea(pc),a1
3193: cmpa.l a1,a0
3194: beq @f
3195: pea.l msg_fail_addr(pc)
3196: move.l a1,-(sp)
3197: move.l a0,-(sp)
3198: bsr result
3199: lea.l 12(sp),sp
3200: @@:
3201: move.l #$05555550,d1
3202: cmp.l workarea+0,d1
3203: beq @f
3204: pea.l msg_fail(pc)
3205: move.l d1,-(sp)
3206: move.l workarea+4,-(sp)
3207: bsr result
3208: lea.l 12(sp),sp
3209: @@:
3210: move.l #$aaaaaaaa,d1
3211: cmp.l workarea+4,d1
3212: beq @f
3213: pea.l msg_fail(pc)
3214: move.l d1,-(sp)
3215: move.l workarea+8,-(sp)
3216: bsr result
3217: lea.l 12(sp),sp
3218: @@:
3219: tst.l d7
3220: bne @f
3221: PRINT msg_ok
3222: @@:
3223: rts
3224:
3225: test_fmovem__SI_to_imm:
3226: PRINT msg_fmovem__SI_to_imm
3227: SET_FLINE_TRAP
3228: moveq.l #0,d7
3229: lea.l @f,a3
3230: .dc.w $f23c, $ac00
3231: @@:
3232: RESTORE_FLINE_TRAP
3233: tst.l d7
3234: bne @f
3235: PRINT msg_fail_notrap
3236: rts
3237: @@:
3238: PRINT msg_oktrap
3239: rts
3240:
3241: test_fmovem_C___to_dn:
3242: PRINT msg_fmovem_C___to_dn
3243: fmove.l #$55555555,fpcr
3244: fmove.l #$00000000,fpsr
3245: fmove.l #$00000000,fpiar
3246: SET_FLINE_TRAP
3247: moveq.l #0,d7
3248: lea.l @f,a3
3249: fmovem.l fpcr,d0
3250: @@:
3251: RESTORE_FLINE_TRAP
3252: tst.l d7
3253: beq @f
3254: PRINT msg_fail_trap
3255: rts
3256: @@:
3257: move.l #$00005550,d1
3258: cmp.l d1,d0
3259: beq @f
3260: pea.l msg_fail(pc)
3261: move.l d1,-(sp)
3262: move.l d0,-(sp)
3263: bsr result
3264: lea.l 12(sp),sp
3265: @@:
3266: tst.l d7
3267: bne @f
3268: PRINT msg_ok
3269: @@:
3270: rts
3271:
3272: test_fmovem_C___to_an:
3273: PRINT msg_fmovem_C___to_an
3274: SET_FLINE_TRAP
3275: moveq.l #0,d7
3276: lea.l @f,a3
3277: .dc.w $f208, $b000
3278: @@:
3279: RESTORE_FLINE_TRAP
3280: tst.l d7
3281: bne @f
3282: PRINT msg_fail_notrap
3283: rts
3284: @@:
3285: PRINT msg_oktrap
3286: rts
3287:
3288: test_fmovem_C___to_anin:
3289: PRINT msg_fmovem_C___to_anin
3290: fmove.l #$55555555,fpcr
3291: fmove.l #$00000000,fpsr
3292: fmove.l #$00000000,fpiar
3293: lea.l workarea(pc),a0
3294: SET_FLINE_TRAP
3295: moveq.l #0,d7
3296: lea.l @f,a3
3297: fmovem.l fpcr,(a0)
3298: @@:
3299: RESTORE_FLINE_TRAP
3300: tst.l d7
3301: beq @f
3302: PRINT msg_fail_trap
3303: rts
3304: @@:
3305: lea.l workarea(pc),a1
3306: cmpa.l a1,a0
3307: beq @f
3308: pea.l msg_fail_addr(pc)
3309: move.l a1,-(sp)
3310: move.l a0,-(sp)
3311: bsr result
3312: lea.l 12(sp),sp
3313: @@:
3314: move.l #$00005550,d1
3315: cmp.l workarea+0,d1
3316: beq @f
3317: pea.l msg_fail(pc)
3318: move.l d1,-(sp)
3319: move.l workarea+4,-(sp)
3320: bsr result
3321: lea.l 12(sp),sp
3322: @@:
3323: tst.l d7
3324: bne @f
3325: PRINT msg_ok
3326: @@:
3327: rts
3328:
3329: test_fmovem_C___to_anpi:
3330: PRINT msg_fmovem_C___to_anpi
3331: fmove.l #$55555555,fpcr
3332: fmove.l #$00000000,fpsr
3333: fmove.l #$00000000,fpiar
3334: lea.l workarea(pc),a0
3335: SET_FLINE_TRAP
3336: moveq.l #0,d7
3337: lea.l @f,a3
3338: fmovem.l fpcr,(a0)+
3339: @@:
3340: RESTORE_FLINE_TRAP
3341: tst.l d7
3342: beq @f
3343: PRINT msg_fail_trap
3344: rts
3345: @@:
3346: lea.l workarea+4(pc),a1
3347: cmpa.l a1,a0
3348: beq @f
3349: pea.l msg_fail_addr(pc)
3350: move.l a1,-(sp)
3351: move.l a0,-(sp)
3352: bsr result
3353: lea.l 12(sp),sp
3354: @@:
3355: move.l #$00005550,d1
3356: cmp.l workarea+0,d1
3357: beq @f
3358: pea.l msg_fail(pc)
3359: move.l d1,-(sp)
3360: move.l workarea+4,-(sp)
3361: bsr result
3362: lea.l 12(sp),sp
3363: @@:
3364: tst.l d7
3365: bne @f
3366: PRINT msg_ok
3367: @@:
3368: rts
3369:
3370: test_fmovem_C___to_anpd:
3371: PRINT msg_fmovem_C___to_anpd
3372: fmove.l #$55555555,fpcr
3373: fmove.l #$00000000,fpsr
3374: fmove.l #$00000000,fpiar
3375: lea.l workarea+4(pc),a0
3376: SET_FLINE_TRAP
3377: moveq.l #0,d7
3378: lea.l @f,a3
3379: fmovem.l fpcr,-(a0)
3380: @@:
3381: RESTORE_FLINE_TRAP
3382: tst.l d7
3383: beq @f
3384: PRINT msg_fail_trap
3385: rts
3386: @@:
3387: lea.l workarea(pc),a1
3388: cmpa.l a1,a0
3389: beq @f
3390: pea.l msg_fail_addr(pc)
3391: move.l a1,-(sp)
3392: move.l a0,-(sp)
3393: bsr result
3394: lea.l 12(sp),sp
3395: @@:
3396: move.l #$00005550,d1
3397: cmp.l workarea+0,d1
3398: beq @f
3399: pea.l msg_fail(pc)
3400: move.l d1,-(sp)
3401: move.l workarea+4,-(sp)
3402: bsr result
3403: lea.l 12(sp),sp
3404: @@:
3405: tst.l d7
3406: bne @f
3407: PRINT msg_ok
3408: @@:
3409: rts
3410:
3411: test_fmovem_C___to_imm:
3412: PRINT msg_fmovem_C___to_imm
3413: SET_FLINE_TRAP
3414: moveq.l #0,d7
3415: lea.l @f,a3
3416: .dc.w $f23c, $b000
3417: @@:
3418: RESTORE_FLINE_TRAP
3419: tst.l d7
3420: bne @f
3421: PRINT msg_fail_notrap
3422: rts
3423: @@:
3424: PRINT msg_oktrap
3425: rts
3426:
3427: test_fmovem_C_I_to_dn:
3428: PRINT msg_fmovem_C_I_to_dn
3429: SET_FLINE_TRAP
3430: moveq.l #0,d7
3431: lea.l @f,a3
3432: .dc.w $f200, $b400
3433: @@:
3434: RESTORE_FLINE_TRAP
3435: tst.l d7
3436: bne @f
3437: PRINT msg_fail_notrap
3438: rts
3439: @@:
3440: PRINT msg_oktrap
3441: rts
3442:
3443: test_fmovem_C_I_to_an:
3444: PRINT msg_fmovem_C_I_to_an
3445: SET_FLINE_TRAP
3446: moveq.l #0,d7
3447: lea.l @f,a3
3448: .dc.w $f208, $b400
3449: @@:
3450: RESTORE_FLINE_TRAP
3451: tst.l d7
3452: bne @f
3453: PRINT msg_fail_notrap
3454: rts
3455: @@:
3456: PRINT msg_oktrap
3457: rts
3458:
3459: test_fmovem_C_I_to_anin:
3460: PRINT msg_fmovem_C_I_to_anin
3461: fmove.l #$55555555,fpcr
3462: fmove.l #$00000000,fpsr
3463: fmove.l #$aaaaaaaa,fpiar
3464: lea.l workarea(pc),a0
3465: SET_FLINE_TRAP
3466: moveq.l #0,d7
3467: lea.l @f,a3
3468: fmovem.l fpcr/fpiar,(a0)
3469: @@:
3470: RESTORE_FLINE_TRAP
3471: tst.l d7
3472: beq @f
3473: PRINT msg_fail_trap
3474: rts
3475: @@:
3476: lea.l workarea(pc),a1
3477: cmpa.l a1,a0
3478: beq @f
3479: pea.l msg_fail_addr(pc)
3480: move.l a1,-(sp)
3481: move.l a0,-(sp)
3482: bsr result
3483: lea.l 12(sp),sp
3484: @@:
3485: move.l #$00005550,d1
3486: cmp.l workarea+0,d1
3487: beq @f
3488: pea.l msg_fail(pc)
3489: move.l d1,-(sp)
3490: move.l workarea+4,-(sp)
3491: bsr result
3492: lea.l 12(sp),sp
3493: @@:
3494: move.l #$aaaaaaaa,d1
3495: cmp.l workarea+4,d1
3496: beq @f
3497: pea.l msg_fail(pc)
3498: move.l d1,-(sp)
3499: move.l workarea+8,-(sp)
3500: bsr result
3501: lea.l 12(sp),sp
3502: @@:
3503: tst.l d7
3504: bne @f
3505: PRINT msg_ok
3506: @@:
3507: rts
3508:
3509: test_fmovem_C_I_to_anpi:
3510: PRINT msg_fmovem_C_I_to_anpi
3511: fmove.l #$55555555,fpcr
3512: fmove.l #$00000000,fpsr
3513: fmove.l #$aaaaaaaa,fpiar
3514: lea.l workarea(pc),a0
3515: SET_FLINE_TRAP
3516: moveq.l #0,d7
3517: lea.l @f,a3
3518: fmovem.l fpcr/fpiar,(a0)+
3519: @@:
3520: RESTORE_FLINE_TRAP
3521: tst.l d7
3522: beq @f
3523: PRINT msg_fail_trap
3524: rts
3525: @@:
3526: lea.l workarea+8(pc),a1
3527: cmpa.l a1,a0
3528: beq @f
3529: pea.l msg_fail_addr(pc)
3530: move.l a1,-(sp)
3531: move.l a0,-(sp)
3532: bsr result
3533: lea.l 12(sp),sp
3534: @@:
3535: move.l #$00005550,d1
3536: cmp.l workarea+0,d1
3537: beq @f
3538: pea.l msg_fail(pc)
3539: move.l d1,-(sp)
3540: move.l workarea+4,-(sp)
3541: bsr result
3542: lea.l 12(sp),sp
3543: @@:
3544: move.l #$aaaaaaaa,d1
3545: cmp.l workarea+4,d1
3546: beq @f
3547: pea.l msg_fail(pc)
3548: move.l d1,-(sp)
3549: move.l workarea+8,-(sp)
3550: bsr result
3551: lea.l 12(sp),sp
3552: @@:
3553: tst.l d7
3554: bne @f
3555: PRINT msg_ok
3556: @@:
3557: rts
3558:
3559: test_fmovem_C_I_to_anpd:
3560: PRINT msg_fmovem_C_I_to_anpd
3561: fmove.l #$55555555,fpcr
3562: fmove.l #$00000000,fpsr
3563: fmove.l #$aaaaaaaa,fpiar
3564: lea.l workarea+8(pc),a0
3565: SET_FLINE_TRAP
3566: moveq.l #0,d7
3567: lea.l @f,a3
3568: fmovem.l fpcr/fpiar,-(a0)
3569: @@:
3570: RESTORE_FLINE_TRAP
3571: tst.l d7
3572: beq @f
3573: PRINT msg_fail_trap
3574: rts
3575: @@:
3576: lea.l workarea(pc),a1
3577: cmpa.l a1,a0
3578: beq @f
3579: pea.l msg_fail_addr(pc)
3580: move.l a1,-(sp)
3581: move.l a0,-(sp)
3582: bsr result
3583: lea.l 12(sp),sp
3584: @@:
3585: move.l #$00005550,d1
3586: cmp.l workarea+0,d1
3587: beq @f
3588: pea.l msg_fail(pc)
3589: move.l d1,-(sp)
3590: move.l workarea+4,-(sp)
3591: bsr result
3592: lea.l 12(sp),sp
3593: @@:
3594: move.l #$aaaaaaaa,d1
3595: cmp.l workarea+4,d1
3596: beq @f
3597: pea.l msg_fail(pc)
3598: move.l d1,-(sp)
3599: move.l workarea+8,-(sp)
3600: bsr result
3601: lea.l 12(sp),sp
3602: @@:
3603: tst.l d7
3604: bne @f
3605: PRINT msg_ok
3606: @@:
3607: rts
3608:
3609: test_fmovem_C_I_to_imm:
3610: PRINT msg_fmovem_C_I_to_imm
3611: SET_FLINE_TRAP
3612: moveq.l #0,d7
3613: lea.l @f,a3
3614: .dc.w $f23c, $b400
3615: @@:
3616: RESTORE_FLINE_TRAP
3617: tst.l d7
3618: bne @f
3619: PRINT msg_fail_notrap
3620: rts
3621: @@:
3622: PRINT msg_oktrap
3623: rts
3624:
3625: test_fmovem_CS__to_dn:
3626: PRINT msg_fmovem_CS__to_dn
3627: SET_FLINE_TRAP
3628: moveq.l #0,d7
3629: lea.l @f,a3
3630: .dc.w $f200, $b800
3631: @@:
3632: RESTORE_FLINE_TRAP
3633: tst.l d7
3634: bne @f
3635: PRINT msg_fail_notrap
3636: rts
3637: @@:
3638: PRINT msg_oktrap
3639: rts
3640:
3641: test_fmovem_CS__to_an:
3642: PRINT msg_fmovem_CS__to_an
3643: SET_FLINE_TRAP
3644: moveq.l #0,d7
3645: lea.l @f,a3
3646: .dc.w $f208, $b800
3647: @@:
3648: RESTORE_FLINE_TRAP
3649: tst.l d7
3650: bne @f
3651: PRINT msg_fail_notrap
3652: rts
3653: @@:
3654: PRINT msg_oktrap
3655: rts
3656:
3657: test_fmovem_CS__to_anin:
3658: PRINT msg_fmovem_CS__to_anin
3659: fmove.l #$55555555,fpcr
3660: fmove.l #$aaaaaaaa,fpsr
3661: fmove.l #$00000000,fpiar
3662: lea.l workarea(pc),a0
3663: SET_FLINE_TRAP
3664: moveq.l #0,d7
3665: lea.l @f,a3
3666: fmovem.l fpcr/fpsr,(a0)
3667: @@:
3668: RESTORE_FLINE_TRAP
3669: tst.l d7
3670: beq @f
3671: PRINT msg_fail_trap
3672: rts
3673: @@:
3674: lea.l workarea(pc),a1
3675: cmpa.l a1,a0
3676: beq @f
3677: pea.l msg_fail_addr(pc)
3678: move.l a1,-(sp)
3679: move.l a0,-(sp)
3680: bsr result
3681: lea.l 12(sp),sp
3682: @@:
3683: move.l #$00005550,d1
3684: cmp.l workarea+0,d1
3685: beq @f
3686: pea.l msg_fail(pc)
3687: move.l d1,-(sp)
3688: move.l workarea+4,-(sp)
3689: bsr result
3690: lea.l 12(sp),sp
3691: @@:
3692: move.l #$0aaaaaa8,d1
3693: cmp.l workarea+4,d1
3694: beq @f
3695: pea.l msg_fail(pc)
3696: move.l d1,-(sp)
3697: move.l workarea+8,-(sp)
3698: bsr result
3699: lea.l 12(sp),sp
3700: @@:
3701: tst.l d7
3702: bne @f
3703: PRINT msg_ok
3704: @@:
3705: rts
3706:
3707: test_fmovem_CS__to_anpi:
3708: PRINT msg_fmovem_CS__to_anpi
3709: fmove.l #$55555555,fpcr
3710: fmove.l #$aaaaaaaa,fpsr
3711: fmove.l #$00000000,fpiar
3712: lea.l workarea(pc),a0
3713: SET_FLINE_TRAP
3714: moveq.l #0,d7
3715: lea.l @f,a3
3716: fmovem.l fpcr/fpsr,(a0)+
3717: @@:
3718: RESTORE_FLINE_TRAP
3719: tst.l d7
3720: beq @f
3721: PRINT msg_fail_trap
3722: rts
3723: @@:
3724: lea.l workarea+8(pc),a1
3725: cmpa.l a1,a0
3726: beq @f
3727: pea.l msg_fail_addr(pc)
3728: move.l a1,-(sp)
3729: move.l a0,-(sp)
3730: bsr result
3731: lea.l 12(sp),sp
3732: @@:
3733: move.l #$00005550,d1
3734: cmp.l workarea+0,d1
3735: beq @f
3736: pea.l msg_fail(pc)
3737: move.l d1,-(sp)
3738: move.l workarea+4,-(sp)
3739: bsr result
3740: lea.l 12(sp),sp
3741: @@:
3742: move.l #$0aaaaaa8,d1
3743: cmp.l workarea+4,d1
3744: beq @f
3745: pea.l msg_fail(pc)
3746: move.l d1,-(sp)
3747: move.l workarea+8,-(sp)
3748: bsr result
3749: lea.l 12(sp),sp
3750: @@:
3751: tst.l d7
3752: bne @f
3753: PRINT msg_ok
3754: @@:
3755: rts
3756:
3757: test_fmovem_CS__to_anpd:
3758: PRINT msg_fmovem_CS__to_anpd
3759: fmove.l #$55555555,fpcr
3760: fmove.l #$aaaaaaaa,fpsr
3761: fmove.l #$00000000,fpiar
3762: lea.l workarea+8(pc),a0
3763: SET_FLINE_TRAP
3764: moveq.l #0,d7
3765: lea.l @f,a3
3766: fmovem.l fpcr/fpsr,-(a0)
3767: @@:
3768: RESTORE_FLINE_TRAP
3769: tst.l d7
3770: beq @f
3771: PRINT msg_fail_trap
3772: rts
3773: @@:
3774: lea.l workarea(pc),a1
3775: cmpa.l a1,a0
3776: beq @f
3777: pea.l msg_fail_addr(pc)
3778: move.l a1,-(sp)
3779: move.l a0,-(sp)
3780: bsr result
3781: lea.l 12(sp),sp
3782: @@:
3783: move.l #$00005550,d1
3784: cmp.l workarea+0,d1
3785: beq @f
3786: pea.l msg_fail(pc)
3787: move.l d1,-(sp)
3788: move.l workarea+4,-(sp)
3789: bsr result
3790: lea.l 12(sp),sp
3791: @@:
3792: move.l #$0aaaaaa8,d1
3793: cmp.l workarea+4,d1
3794: beq @f
3795: pea.l msg_fail(pc)
3796: move.l d1,-(sp)
3797: move.l workarea+8,-(sp)
3798: bsr result
3799: lea.l 12(sp),sp
3800: @@:
3801: tst.l d7
3802: bne @f
3803: PRINT msg_ok
3804: @@:
3805: rts
3806:
3807: test_fmovem_CS__to_imm:
3808: PRINT msg_fmovem_CS__to_imm
3809: SET_FLINE_TRAP
3810: moveq.l #0,d7
3811: lea.l @f,a3
3812: .dc.w $f23c, $b800
3813: @@:
3814: RESTORE_FLINE_TRAP
3815: tst.l d7
3816: bne @f
3817: PRINT msg_fail_notrap
3818: rts
3819: @@:
3820: PRINT msg_oktrap
3821: rts
3822:
3823: test_fmovem_CSI_to_dn:
3824: PRINT msg_fmovem_CSI_to_dn
3825: SET_FLINE_TRAP
3826: moveq.l #0,d7
3827: lea.l @f,a3
3828: .dc.w $f200, $bc00
3829: @@:
3830: RESTORE_FLINE_TRAP
3831: tst.l d7
3832: bne @f
3833: PRINT msg_fail_notrap
3834: rts
3835: @@:
3836: PRINT msg_oktrap
3837: rts
3838:
3839: test_fmovem_CSI_to_an:
3840: PRINT msg_fmovem_CSI_to_an
3841: SET_FLINE_TRAP
3842: moveq.l #0,d7
3843: lea.l @f,a3
3844: .dc.w $f208, $bc00
3845: @@:
3846: RESTORE_FLINE_TRAP
3847: tst.l d7
3848: bne @f
3849: PRINT msg_fail_notrap
3850: rts
3851: @@:
3852: PRINT msg_oktrap
3853: rts
3854:
3855: test_fmovem_CSI_to_anin:
3856: PRINT msg_fmovem_CSI_to_anin
3857: fmove.l #$55555555,fpcr
3858: fmove.l #$aaaaaaaa,fpsr
3859: fmove.l #$33333333,fpiar
3860: lea.l workarea(pc),a0
3861: SET_FLINE_TRAP
3862: moveq.l #0,d7
3863: lea.l @f,a3
3864: fmovem.l fpcr/fpsr/fpiar,(a0)
3865: @@:
3866: RESTORE_FLINE_TRAP
3867: tst.l d7
3868: beq @f
3869: PRINT msg_fail_trap
3870: rts
3871: @@:
3872: lea.l workarea(pc),a1
3873: cmpa.l a1,a0
3874: beq @f
3875: pea.l msg_fail_addr(pc)
3876: move.l a1,-(sp)
3877: move.l a0,-(sp)
3878: bsr result
3879: lea.l 12(sp),sp
3880: @@:
3881: move.l #$00005550,d1
3882: cmp.l workarea+0,d1
3883: beq @f
3884: pea.l msg_fail(pc)
3885: move.l d1,-(sp)
3886: move.l workarea+4,-(sp)
3887: bsr result
3888: lea.l 12(sp),sp
3889: @@:
3890: move.l #$0aaaaaa8,d1
3891: cmp.l workarea+4,d1
3892: beq @f
3893: pea.l msg_fail(pc)
3894: move.l d1,-(sp)
3895: move.l workarea+8,-(sp)
3896: bsr result
3897: lea.l 12(sp),sp
3898: @@:
3899: move.l #$33333333,d1
3900: cmp.l workarea+8,d1
3901: beq @f
3902: pea.l msg_fail(pc)
3903: move.l d1,-(sp)
3904: move.l workarea+12,-(sp)
3905: bsr result
3906: lea.l 12(sp),sp
3907: @@:
3908: tst.l d7
3909: bne @f
3910: PRINT msg_ok
3911: @@:
3912: rts
3913:
3914: test_fmovem_CSI_to_anpi:
3915: PRINT msg_fmovem_CSI_to_anpi
3916: fmove.l #$55555555,fpcr
3917: fmove.l #$aaaaaaaa,fpsr
3918: fmove.l #$33333333,fpiar
3919: lea.l workarea(pc),a0
3920: SET_FLINE_TRAP
3921: moveq.l #0,d7
3922: lea.l @f,a3
3923: fmovem.l fpcr/fpsr/fpiar,(a0)+
3924: @@:
3925: RESTORE_FLINE_TRAP
3926: tst.l d7
3927: beq @f
3928: PRINT msg_fail_trap
3929: rts
3930: @@:
3931: lea.l workarea+12(pc),a1
3932: cmpa.l a1,a0
3933: beq @f
3934: pea.l msg_fail_addr(pc)
3935: move.l a1,-(sp)
3936: move.l a0,-(sp)
3937: bsr result
3938: lea.l 12(sp),sp
3939: @@:
3940: move.l #$00005550,d1
3941: cmp.l workarea+0,d1
3942: beq @f
3943: pea.l msg_fail(pc)
3944: move.l d1,-(sp)
3945: move.l workarea+4,-(sp)
3946: bsr result
3947: lea.l 12(sp),sp
3948: @@:
3949: move.l #$0aaaaaa8,d1
3950: cmp.l workarea+4,d1
3951: beq @f
3952: pea.l msg_fail(pc)
3953: move.l d1,-(sp)
3954: move.l workarea+8,-(sp)
3955: bsr result
3956: lea.l 12(sp),sp
3957: @@:
3958: move.l #$33333333,d1
3959: cmp.l workarea+8,d1
3960: beq @f
3961: pea.l msg_fail(pc)
3962: move.l d1,-(sp)
3963: move.l workarea+12,-(sp)
3964: bsr result
3965: lea.l 12(sp),sp
3966: @@:
3967: tst.l d7
3968: bne @f
3969: PRINT msg_ok
3970: @@:
3971: rts
3972:
3973: test_fmovem_CSI_to_anpd:
3974: PRINT msg_fmovem_CSI_to_anpd
3975: fmove.l #$55555555,fpcr
3976: fmove.l #$aaaaaaaa,fpsr
3977: fmove.l #$33333333,fpiar
3978: lea.l workarea+12(pc),a0
3979: SET_FLINE_TRAP
3980: moveq.l #0,d7
3981: lea.l @f,a3
3982: fmovem.l fpcr/fpsr/fpiar,-(a0)
3983: @@:
3984: RESTORE_FLINE_TRAP
3985: tst.l d7
3986: beq @f
3987: PRINT msg_fail_trap
3988: rts
3989: @@:
3990: lea.l workarea(pc),a1
3991: cmpa.l a1,a0
3992: beq @f
3993: pea.l msg_fail_addr(pc)
3994: move.l a1,-(sp)
3995: move.l a0,-(sp)
3996: bsr result
3997: lea.l 12(sp),sp
3998: @@:
3999: move.l #$00005550,d1
4000: cmp.l workarea+0,d1
4001: beq @f
4002: pea.l msg_fail(pc)
4003: move.l d1,-(sp)
4004: move.l workarea+4,-(sp)
4005: bsr result
4006: lea.l 12(sp),sp
4007: @@:
4008: move.l #$0aaaaaa8,d1
4009: cmp.l workarea+4,d1
4010: beq @f
4011: pea.l msg_fail(pc)
4012: move.l d1,-(sp)
4013: move.l workarea+8,-(sp)
4014: bsr result
4015: lea.l 12(sp),sp
4016: @@:
4017: move.l #$33333333,d1
4018: cmp.l workarea+8,d1
4019: beq @f
4020: pea.l msg_fail(pc)
4021: move.l d1,-(sp)
4022: move.l workarea+12,-(sp)
4023: bsr result
4024: lea.l 12(sp),sp
4025: @@:
4026: tst.l d7
4027: bne @f
4028: PRINT msg_ok
4029: @@:
4030: rts
4031:
4032: test_fmovem_CSI_to_imm:
4033: PRINT msg_fmovem_CSI_to_imm
4034: SET_FLINE_TRAP
4035: moveq.l #0,d7
4036: lea.l @f,a3
4037: .dc.w $f23c, $bc00
4038: @@:
4039: RESTORE_FLINE_TRAP
4040: tst.l d7
4041: bne @f
4042: PRINT msg_fail_notrap
4043: rts
4044: @@:
4045: PRINT msg_oktrap
4046: rts
4047:
4048: start:
4049: clr.l -(sp)
4050: DOS _SUPER
4051: movem.l d7/a3-a5,-(sp)
4052: moveq.l #$2c,d0 ; alternate of "lea.l $2c,a5"
4053: move.l d0,a5 ;
4054: bsr test_fmovem_dn_to____
4055: bsr test_fmovem_an_to____
4056: bsr test_fmovem_anin_to____
4057: bsr test_fmovem_anpi_to____
4058: bsr test_fmovem_anpd_to____
4059: bsr test_fmovem_imm_to____
4060: bsr test_fmovem_dn_to___I
4061: bsr test_fmovem_an_to___I
4062: bsr test_fmovem_anin_to___I
4063: bsr test_fmovem_anpi_to___I
4064: bsr test_fmovem_anpd_to___I
4065: bsr test_fmovem_imm_to___I
4066: bsr test_fmovem_dn_to__S_
4067: bsr test_fmovem_an_to__S_
4068: bsr test_fmovem_anin_to__S_
4069: bsr test_fmovem_anpi_to__S_
4070: bsr test_fmovem_anpd_to__S_
4071: bsr test_fmovem_imm_to__S_
4072: bsr test_fmovem_dn_to__SI
4073: bsr test_fmovem_an_to__SI
4074: bsr test_fmovem_anin_to__SI
4075: bsr test_fmovem_anpi_to__SI
4076: bsr test_fmovem_anpd_to__SI
4077: bsr test_fmovem_imm_to__SI
4078: bsr test_fmovem_dn_to_C__
4079: bsr test_fmovem_an_to_C__
4080: bsr test_fmovem_anin_to_C__
4081: bsr test_fmovem_anpi_to_C__
4082: bsr test_fmovem_anpd_to_C__
4083: bsr test_fmovem_imm_to_C__
4084: bsr test_fmovem_dn_to_C_I
4085: bsr test_fmovem_an_to_C_I
4086: bsr test_fmovem_anin_to_C_I
4087: bsr test_fmovem_anpi_to_C_I
4088: bsr test_fmovem_anpd_to_C_I
4089: bsr test_fmovem_imm_to_C_I
4090: bsr test_fmovem_dn_to_CS_
4091: bsr test_fmovem_an_to_CS_
4092: bsr test_fmovem_anin_to_CS_
4093: bsr test_fmovem_anpi_to_CS_
4094: bsr test_fmovem_anpd_to_CS_
4095: bsr test_fmovem_imm_to_CS_
4096: bsr test_fmovem_dn_to_CSI
4097: bsr test_fmovem_an_to_CSI
4098: bsr test_fmovem_anin_to_CSI
4099: bsr test_fmovem_anpi_to_CSI
4100: bsr test_fmovem_anpd_to_CSI
4101: bsr test_fmovem_imm_to_CSI
4102: bsr test_fmovem_____to_dn
4103: bsr test_fmovem_____to_an
4104: bsr test_fmovem_____to_anin
4105: bsr test_fmovem_____to_anpi
4106: bsr test_fmovem_____to_anpd
4107: bsr test_fmovem_____to_imm
4108: bsr test_fmovem___I_to_dn
4109: bsr test_fmovem___I_to_an
4110: bsr test_fmovem___I_to_anin
4111: bsr test_fmovem___I_to_anpi
4112: bsr test_fmovem___I_to_anpd
4113: bsr test_fmovem___I_to_imm
4114: bsr test_fmovem__S__to_dn
4115: bsr test_fmovem__S__to_an
4116: bsr test_fmovem__S__to_anin
4117: bsr test_fmovem__S__to_anpi
4118: bsr test_fmovem__S__to_anpd
4119: bsr test_fmovem__S__to_imm
4120: bsr test_fmovem__SI_to_dn
4121: bsr test_fmovem__SI_to_an
4122: bsr test_fmovem__SI_to_anin
4123: bsr test_fmovem__SI_to_anpi
4124: bsr test_fmovem__SI_to_anpd
4125: bsr test_fmovem__SI_to_imm
4126: bsr test_fmovem_C___to_dn
4127: bsr test_fmovem_C___to_an
4128: bsr test_fmovem_C___to_anin
4129: bsr test_fmovem_C___to_anpi
4130: bsr test_fmovem_C___to_anpd
4131: bsr test_fmovem_C___to_imm
4132: bsr test_fmovem_C_I_to_dn
4133: bsr test_fmovem_C_I_to_an
4134: bsr test_fmovem_C_I_to_anin
4135: bsr test_fmovem_C_I_to_anpi
4136: bsr test_fmovem_C_I_to_anpd
4137: bsr test_fmovem_C_I_to_imm
4138: bsr test_fmovem_CS__to_dn
4139: bsr test_fmovem_CS__to_an
4140: bsr test_fmovem_CS__to_anin
4141: bsr test_fmovem_CS__to_anpi
4142: bsr test_fmovem_CS__to_anpd
4143: bsr test_fmovem_CS__to_imm
4144: bsr test_fmovem_CSI_to_dn
4145: bsr test_fmovem_CSI_to_an
4146: bsr test_fmovem_CSI_to_anin
4147: bsr test_fmovem_CSI_to_anpi
4148: bsr test_fmovem_CSI_to_anpd
4149: bsr test_fmovem_CSI_to_imm
4150: movem.l (sp)+,d7/a3-a5
4151: DOS _EXIT
4152:
4153: ; 結果表示
4154: ; スタックには、メッセージ、期待値、実際の値の順で積む。
4155: result:
4156: link a6,#0
4157: movem.l d0/a0,-(sp)
4158:
4159: move.l 8+8(a6),-(sp)
4160: DOS _PRINT
4161: addq.l #4,sp
4162:
4163: move.l 8+4(a6),d0
4164: lea.l buf(pc),a0
4165: bsr hexstr_long
4166: PRINT buf
4167: PRINT msg_but
4168:
4169: move.l 8+0(a6),a0
4170: lea.l buf(pc),a0
4171: bsr hexstr_long
4172: PRINT buf
4173: PRINT msg_crlf
4174:
4175: addq.l #1,d7 ; errcnt
4176: movem.l (sp)+,d0/a0
4177: unlk a6
4178: rts
4179:
4180: ; Fライン例外ハンドラ
4181: ; a3 に戻りアドレスをセットしてあること
4182: ; d7 を 1 にして帰る
4183: fline_handler:
4184: moveq.l #1,d7
4185: move.l a3,2(sp)
4186: rte
4187:
4188: msg_oktrap: .dc.b $9,"ok(trap)",$d,$a,0, 0,0
4189: msg_fail_notrap: .dc.b $9,"FAIL: trap expected but not occured",$d,$a,0
4190: msg_fail_trap: .dc.b $9,"FAIL: unexpected trap occured",$d,$a,0
4191:
4192: msg_ok: .dc.b $9,"ok",$d,$a,0
4193: msg_fail: .dc.b $9,"fail",$d,$a,0
4194: msg_fail_cr: .dc.b $9,"FAIL: fpcr expects ",0
4195: msg_fail_sr: .dc.b $9,"FAIL: fpsr expects ",0
4196: msg_fail_ir: .dc.b $9,"FAIL: fpiar expects ",0
4197: msg_fail_addr: .dc.b $9,"FAIL: an expects ",0
4198: msg_but: .dc.b " but ",0
4199: msg_crlf: .dc.b $d,$a,0
4200:
4201:
4202: msg_fmovem_dn_to____: .dc.b "fmovem_dn_to____",0
4203: msg_fmovem_an_to____: .dc.b "fmovem_an_to____",0
4204: msg_fmovem_anin_to____: .dc.b "fmovem_anin_to____",0
4205: msg_fmovem_anpi_to____: .dc.b "fmovem_anpi_to____",0
4206: msg_fmovem_anpd_to____: .dc.b "fmovem_anpd_to____",0
4207: msg_fmovem_imm_to____: .dc.b "fmovem_imm_to____",0
4208: msg_fmovem_dn_to___I: .dc.b "fmovem_dn_to___I",0
4209: msg_fmovem_an_to___I: .dc.b "fmovem_an_to___I",0
4210: msg_fmovem_anin_to___I: .dc.b "fmovem_anin_to___I",0
4211: msg_fmovem_anpi_to___I: .dc.b "fmovem_anpi_to___I",0
4212: msg_fmovem_anpd_to___I: .dc.b "fmovem_anpd_to___I",0
4213: msg_fmovem_imm_to___I: .dc.b "fmovem_imm_to___I",0
4214: msg_fmovem_dn_to__S_: .dc.b "fmovem_dn_to__S_",0
4215: msg_fmovem_an_to__S_: .dc.b "fmovem_an_to__S_",0
4216: msg_fmovem_anin_to__S_: .dc.b "fmovem_anin_to__S_",0
4217: msg_fmovem_anpi_to__S_: .dc.b "fmovem_anpi_to__S_",0
4218: msg_fmovem_anpd_to__S_: .dc.b "fmovem_anpd_to__S_",0
4219: msg_fmovem_imm_to__S_: .dc.b "fmovem_imm_to__S_",0
4220: msg_fmovem_dn_to__SI: .dc.b "fmovem_dn_to__SI",0
4221: msg_fmovem_an_to__SI: .dc.b "fmovem_an_to__SI",0
4222: msg_fmovem_anin_to__SI: .dc.b "fmovem_anin_to__SI",0
4223: msg_fmovem_anpi_to__SI: .dc.b "fmovem_anpi_to__SI",0
4224: msg_fmovem_anpd_to__SI: .dc.b "fmovem_anpd_to__SI",0
4225: msg_fmovem_imm_to__SI: .dc.b "fmovem_imm_to__SI",0
4226: msg_fmovem_dn_to_C__: .dc.b "fmovem_dn_to_C__",0
4227: msg_fmovem_an_to_C__: .dc.b "fmovem_an_to_C__",0
4228: msg_fmovem_anin_to_C__: .dc.b "fmovem_anin_to_C__",0
4229: msg_fmovem_anpi_to_C__: .dc.b "fmovem_anpi_to_C__",0
4230: msg_fmovem_anpd_to_C__: .dc.b "fmovem_anpd_to_C__",0
4231: msg_fmovem_imm_to_C__: .dc.b "fmovem_imm_to_C__",0
4232: msg_fmovem_dn_to_C_I: .dc.b "fmovem_dn_to_C_I",0
4233: msg_fmovem_an_to_C_I: .dc.b "fmovem_an_to_C_I",0
4234: msg_fmovem_anin_to_C_I: .dc.b "fmovem_anin_to_C_I",0
4235: msg_fmovem_anpi_to_C_I: .dc.b "fmovem_anpi_to_C_I",0
4236: msg_fmovem_anpd_to_C_I: .dc.b "fmovem_anpd_to_C_I",0
4237: msg_fmovem_imm_to_C_I: .dc.b "fmovem_imm_to_C_I",0
4238: msg_fmovem_dn_to_CS_: .dc.b "fmovem_dn_to_CS_",0
4239: msg_fmovem_an_to_CS_: .dc.b "fmovem_an_to_CS_",0
4240: msg_fmovem_anin_to_CS_: .dc.b "fmovem_anin_to_CS_",0
4241: msg_fmovem_anpi_to_CS_: .dc.b "fmovem_anpi_to_CS_",0
4242: msg_fmovem_anpd_to_CS_: .dc.b "fmovem_anpd_to_CS_",0
4243: msg_fmovem_imm_to_CS_: .dc.b "fmovem_imm_to_CS_",0
4244: msg_fmovem_dn_to_CSI: .dc.b "fmovem_dn_to_CSI",0
4245: msg_fmovem_an_to_CSI: .dc.b "fmovem_an_to_CSI",0
4246: msg_fmovem_anin_to_CSI: .dc.b "fmovem_anin_to_CSI",0
4247: msg_fmovem_anpi_to_CSI: .dc.b "fmovem_anpi_to_CSI",0
4248: msg_fmovem_anpd_to_CSI: .dc.b "fmovem_anpd_to_CSI",0
4249: msg_fmovem_imm_to_CSI: .dc.b "fmovem_imm_to_CSI",0
4250: msg_fmovem_____to_dn: .dc.b "fmovem_____to_dn",0
4251: msg_fmovem_____to_an: .dc.b "fmovem_____to_an",0
4252: msg_fmovem_____to_anin: .dc.b "fmovem_____to_anin",0
4253: msg_fmovem_____to_anpi: .dc.b "fmovem_____to_anpi",0
4254: msg_fmovem_____to_anpd: .dc.b "fmovem_____to_anpd",0
4255: msg_fmovem_____to_imm: .dc.b "fmovem_____to_imm",0
4256: msg_fmovem___I_to_dn: .dc.b "fmovem___I_to_dn",0
4257: msg_fmovem___I_to_an: .dc.b "fmovem___I_to_an",0
4258: msg_fmovem___I_to_anin: .dc.b "fmovem___I_to_anin",0
4259: msg_fmovem___I_to_anpi: .dc.b "fmovem___I_to_anpi",0
4260: msg_fmovem___I_to_anpd: .dc.b "fmovem___I_to_anpd",0
4261: msg_fmovem___I_to_imm: .dc.b "fmovem___I_to_imm",0
4262: msg_fmovem__S__to_dn: .dc.b "fmovem__S__to_dn",0
4263: msg_fmovem__S__to_an: .dc.b "fmovem__S__to_an",0
4264: msg_fmovem__S__to_anin: .dc.b "fmovem__S__to_anin",0
4265: msg_fmovem__S__to_anpi: .dc.b "fmovem__S__to_anpi",0
4266: msg_fmovem__S__to_anpd: .dc.b "fmovem__S__to_anpd",0
4267: msg_fmovem__S__to_imm: .dc.b "fmovem__S__to_imm",0
4268: msg_fmovem__SI_to_dn: .dc.b "fmovem__SI_to_dn",0
4269: msg_fmovem__SI_to_an: .dc.b "fmovem__SI_to_an",0
4270: msg_fmovem__SI_to_anin: .dc.b "fmovem__SI_to_anin",0
4271: msg_fmovem__SI_to_anpi: .dc.b "fmovem__SI_to_anpi",0
4272: msg_fmovem__SI_to_anpd: .dc.b "fmovem__SI_to_anpd",0
4273: msg_fmovem__SI_to_imm: .dc.b "fmovem__SI_to_imm",0
4274: msg_fmovem_C___to_dn: .dc.b "fmovem_C___to_dn",0
4275: msg_fmovem_C___to_an: .dc.b "fmovem_C___to_an",0
4276: msg_fmovem_C___to_anin: .dc.b "fmovem_C___to_anin",0
4277: msg_fmovem_C___to_anpi: .dc.b "fmovem_C___to_anpi",0
4278: msg_fmovem_C___to_anpd: .dc.b "fmovem_C___to_anpd",0
4279: msg_fmovem_C___to_imm: .dc.b "fmovem_C___to_imm",0
4280: msg_fmovem_C_I_to_dn: .dc.b "fmovem_C_I_to_dn",0
4281: msg_fmovem_C_I_to_an: .dc.b "fmovem_C_I_to_an",0
4282: msg_fmovem_C_I_to_anin: .dc.b "fmovem_C_I_to_anin",0
4283: msg_fmovem_C_I_to_anpi: .dc.b "fmovem_C_I_to_anpi",0
4284: msg_fmovem_C_I_to_anpd: .dc.b "fmovem_C_I_to_anpd",0
4285: msg_fmovem_C_I_to_imm: .dc.b "fmovem_C_I_to_imm",0
4286: msg_fmovem_CS__to_dn: .dc.b "fmovem_CS__to_dn",0
4287: msg_fmovem_CS__to_an: .dc.b "fmovem_CS__to_an",0
4288: msg_fmovem_CS__to_anin: .dc.b "fmovem_CS__to_anin",0
4289: msg_fmovem_CS__to_anpi: .dc.b "fmovem_CS__to_anpi",0
4290: msg_fmovem_CS__to_anpd: .dc.b "fmovem_CS__to_anpd",0
4291: msg_fmovem_CS__to_imm: .dc.b "fmovem_CS__to_imm",0
4292: msg_fmovem_CSI_to_dn: .dc.b "fmovem_CSI_to_dn",0
4293: msg_fmovem_CSI_to_an: .dc.b "fmovem_CSI_to_an",0
4294: msg_fmovem_CSI_to_anin: .dc.b "fmovem_CSI_to_anin",0
4295: msg_fmovem_CSI_to_anpi: .dc.b "fmovem_CSI_to_anpi",0
4296: msg_fmovem_CSI_to_anpd: .dc.b "fmovem_CSI_to_anpd",0
4297: msg_fmovem_CSI_to_imm: .dc.b "fmovem_CSI_to_imm",0
4298:
4299: .data
4300: .even
4301: workarea: .ds.b 24
4302: buf: .dc.b 20
4303:
4304: .end start
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.