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