|
|
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:
1.1.1.3 ! root 27: ; > has fmovemn.has
! 28: ; > hlk fmovemn.o si_util.o
1.1 root 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
1.1.1.3 ! root 53: start:
! 54: bra start2
! 55:
1.1 root 56: test_fmovem_dn_to_fpn_pred_sta:
57: PRINT msg_fmovem_dn_to_fpn_pred_sta
58: SET_FLINE_TRAP
59: moveq.l #0,d7
60: lea.l @f,a3
61: .dc.w $f200, $c060
62: @@:
63: RESTORE_FLINE_TRAP
64: tst.l d7
65: bne @f
66: PRINT msg_fail_notrap
67: rts
68: @@:
69: PRINT msg_oktrap
70: rts
71:
72: test_fmovem_an_to_fpn_pred_sta:
73: PRINT msg_fmovem_an_to_fpn_pred_sta
74: SET_FLINE_TRAP
75: moveq.l #0,d7
76: lea.l @f,a3
77: .dc.w $f208, $c060
78: @@:
79: RESTORE_FLINE_TRAP
80: tst.l d7
81: bne @f
82: PRINT msg_fail_notrap
83: rts
84: @@:
85: PRINT msg_oktrap
86: rts
87:
88: test_fmovem_anin_to_fpn_pred_sta:
89: PRINT msg_fmovem_anin_to_fpn_pred_sta
90: lea.l initdata(pc),a0
91: fmove.x (a0)+,fp0
92: fmove.x (a0)+,fp1
93: fmove.x (a0)+,fp2
94: fmove.x (a0)+,fp3
95: fmove.x (a0)+,fp4
96: fmove.x (a0)+,fp5
97: fmove.x (a0)+,fp6
98: fmove.x (a0)+,fp7
99: lea.l srcdata(pc),a0
100: SET_FLINE_TRAP
101: moveq.l #0,d7
102: lea.l @f,a3
103: .dc.w $f210, $c060
104: @@:
105: RESTORE_FLINE_TRAP
106: tst.l d7
107: beq @f
108: PRINT msg_fail_trap
109: rts
110: @@:
111: lea.l srcdata+0(pc),a1
112: cmp.l a1,a0
113: beq @f
114: pea.l msg_fail_addr(pc)
115: move.l a1,-(sp)
116: move.l a0,-(sp)
117: bsr result
118: lea.l 12(sp),sp
119: @@:
120: lea.l workarea(pc),a2
121: ; compare FP0
122: pea.l msg_fail_fp0(pc)
123: pea.l (initdata+0*12)(pc)
124: fmove.x fp0,(a2)
125: pea.l (a2)
126: bsr check_ext
127: lea.l 12(sp),sp
128: ; compare FP1
129: pea.l msg_fail_fp1(pc)
130: pea.l (initdata+1*12)(pc)
131: fmove.x fp1,(a2)
132: pea.l (a2)
133: bsr check_ext
134: lea.l 12(sp),sp
135: ; compare FP2
136: pea.l msg_fail_fp2(pc)
137: pea.l (initdata+2*12)(pc)
138: fmove.x fp2,(a2)
139: pea.l (a2)
140: bsr check_ext
141: lea.l 12(sp),sp
142: ; compare FP3
143: pea.l msg_fail_fp3(pc)
144: pea.l (initdata+3*12)(pc)
145: fmove.x fp3,(a2)
146: pea.l (a2)
147: bsr check_ext
148: lea.l 12(sp),sp
149: ; compare FP4
150: pea.l msg_fail_fp4(pc)
151: pea.l (initdata+4*12)(pc)
152: fmove.x fp4,(a2)
153: pea.l (a2)
154: bsr check_ext
155: lea.l 12(sp),sp
156: ; compare FP5
157: pea.l msg_fail_fp5(pc)
158: pea.l srcdata+12(pc)
159: fmove.x fp5,(a2)
160: pea.l (a2)
161: bsr check_ext
162: lea.l 12(sp),sp
163: ; compare FP6
164: pea.l msg_fail_fp6(pc)
165: pea.l srcdata+0(pc)
166: fmove.x fp6,(a2)
167: pea.l (a2)
168: bsr check_ext
169: lea.l 12(sp),sp
170: ; compare FP7
171: pea.l msg_fail_fp7(pc)
172: pea.l (initdata+7*12)(pc)
173: fmove.x fp7,(a2)
174: pea.l (a2)
175: bsr check_ext
176: lea.l 12(sp),sp
177: tst.l d7
178: bne @f
179: PRINT msg_ok
180: @@:
181: rts
182:
183: test_fmovem_anpi_to_fpn_pred_sta:
184: PRINT msg_fmovem_anpi_to_fpn_pred_sta
185: lea.l initdata(pc),a0
186: fmove.x (a0)+,fp0
187: fmove.x (a0)+,fp1
188: fmove.x (a0)+,fp2
189: fmove.x (a0)+,fp3
190: fmove.x (a0)+,fp4
191: fmove.x (a0)+,fp5
192: fmove.x (a0)+,fp6
193: fmove.x (a0)+,fp7
194: lea.l srcdata(pc),a0
195: SET_FLINE_TRAP
196: moveq.l #0,d7
197: lea.l @f,a3
198: .dc.w $f218, $c060
199: @@:
200: RESTORE_FLINE_TRAP
201: tst.l d7
202: beq @f
203: PRINT msg_fail_trap
204: rts
205: @@:
206: lea.l srcdata+24(pc),a1
207: cmp.l a1,a0
208: beq @f
209: pea.l msg_fail_addr(pc)
210: move.l a1,-(sp)
211: move.l a0,-(sp)
212: bsr result
213: lea.l 12(sp),sp
214: @@:
215: lea.l workarea(pc),a2
216: ; compare FP0
217: pea.l msg_fail_fp0(pc)
218: pea.l (initdata+0*12)(pc)
219: fmove.x fp0,(a2)
220: pea.l (a2)
221: bsr check_ext
222: lea.l 12(sp),sp
223: ; compare FP1
224: pea.l msg_fail_fp1(pc)
225: pea.l (initdata+1*12)(pc)
226: fmove.x fp1,(a2)
227: pea.l (a2)
228: bsr check_ext
229: lea.l 12(sp),sp
230: ; compare FP2
231: pea.l msg_fail_fp2(pc)
232: pea.l (initdata+2*12)(pc)
233: fmove.x fp2,(a2)
234: pea.l (a2)
235: bsr check_ext
236: lea.l 12(sp),sp
237: ; compare FP3
238: pea.l msg_fail_fp3(pc)
239: pea.l (initdata+3*12)(pc)
240: fmove.x fp3,(a2)
241: pea.l (a2)
242: bsr check_ext
243: lea.l 12(sp),sp
244: ; compare FP4
245: pea.l msg_fail_fp4(pc)
246: pea.l (initdata+4*12)(pc)
247: fmove.x fp4,(a2)
248: pea.l (a2)
249: bsr check_ext
250: lea.l 12(sp),sp
251: ; compare FP5
252: pea.l msg_fail_fp5(pc)
253: pea.l srcdata+12(pc)
254: fmove.x fp5,(a2)
255: pea.l (a2)
256: bsr check_ext
257: lea.l 12(sp),sp
258: ; compare FP6
259: pea.l msg_fail_fp6(pc)
260: pea.l srcdata+0(pc)
261: fmove.x fp6,(a2)
262: pea.l (a2)
263: bsr check_ext
264: lea.l 12(sp),sp
265: ; compare FP7
266: pea.l msg_fail_fp7(pc)
267: pea.l (initdata+7*12)(pc)
268: fmove.x fp7,(a2)
269: pea.l (a2)
270: bsr check_ext
271: lea.l 12(sp),sp
272: tst.l d7
273: bne @f
274: PRINT msg_ok
275: @@:
276: rts
277:
278: test_fmovem_anpd_to_fpn_pred_sta:
279: PRINT msg_fmovem_anpd_to_fpn_pred_sta
280: SET_FLINE_TRAP
281: moveq.l #0,d7
282: lea.l @f,a3
283: .dc.w $f220, $c060
284: @@:
285: RESTORE_FLINE_TRAP
286: tst.l d7
287: bne @f
288: PRINT msg_fail_notrap
289: rts
290: @@:
291: PRINT msg_oktrap
292: rts
293:
294: test_fmovem_dn_to_fpn_pred_dyn:
295: PRINT msg_fmovem_dn_to_fpn_pred_dyn
296: SET_FLINE_TRAP
297: moveq.l #0,d7
298: lea.l @f,a3
299: .dc.w $f200, $c860
300: @@:
301: RESTORE_FLINE_TRAP
302: tst.l d7
303: bne @f
304: PRINT msg_fail_notrap
305: rts
306: @@:
307: PRINT msg_oktrap
308: rts
309:
310: test_fmovem_an_to_fpn_pred_dyn:
311: PRINT msg_fmovem_an_to_fpn_pred_dyn
312: SET_FLINE_TRAP
313: moveq.l #0,d7
314: lea.l @f,a3
315: .dc.w $f208, $c860
316: @@:
317: RESTORE_FLINE_TRAP
318: tst.l d7
319: bne @f
320: PRINT msg_fail_notrap
321: rts
322: @@:
323: PRINT msg_oktrap
324: rts
325:
326: test_fmovem_anin_to_fpn_pred_dyn:
327: PRINT msg_fmovem_anin_to_fpn_pred_dyn
328: lea.l initdata(pc),a0
329: fmove.x (a0)+,fp0
330: fmove.x (a0)+,fp1
331: fmove.x (a0)+,fp2
332: fmove.x (a0)+,fp3
333: fmove.x (a0)+,fp4
334: fmove.x (a0)+,fp5
335: fmove.x (a0)+,fp6
336: fmove.x (a0)+,fp7
337: lea.l srcdata(pc),a0
338: moveq.l #$30,d6
339: SET_FLINE_TRAP
340: moveq.l #0,d7
341: lea.l @f,a3
342: .dc.w $f210, $c860
343: @@:
344: RESTORE_FLINE_TRAP
345: tst.l d7
346: beq @f
347: PRINT msg_fail_trap
348: rts
349: @@:
350: lea.l srcdata+0(pc),a1
351: cmp.l a1,a0
352: beq @f
353: pea.l msg_fail_addr(pc)
354: move.l a1,-(sp)
355: move.l a0,-(sp)
356: bsr result
357: lea.l 12(sp),sp
358: @@:
359: lea.l workarea(pc),a2
360: ; compare FP0
361: pea.l msg_fail_fp0(pc)
362: pea.l (initdata+0*12)(pc)
363: fmove.x fp0,(a2)
364: pea.l (a2)
365: bsr check_ext
366: lea.l 12(sp),sp
367: ; compare FP1
368: pea.l msg_fail_fp1(pc)
369: pea.l (initdata+1*12)(pc)
370: fmove.x fp1,(a2)
371: pea.l (a2)
372: bsr check_ext
373: lea.l 12(sp),sp
374: ; compare FP2
375: pea.l msg_fail_fp2(pc)
376: pea.l (initdata+2*12)(pc)
377: fmove.x fp2,(a2)
378: pea.l (a2)
379: bsr check_ext
380: lea.l 12(sp),sp
381: ; compare FP3
382: pea.l msg_fail_fp3(pc)
383: pea.l (initdata+3*12)(pc)
384: fmove.x fp3,(a2)
385: pea.l (a2)
386: bsr check_ext
387: lea.l 12(sp),sp
388: ; compare FP4
389: pea.l msg_fail_fp4(pc)
390: pea.l srcdata+12(pc)
391: fmove.x fp4,(a2)
392: pea.l (a2)
393: bsr check_ext
394: lea.l 12(sp),sp
395: ; compare FP5
396: pea.l msg_fail_fp5(pc)
397: pea.l srcdata+0(pc)
398: fmove.x fp5,(a2)
399: pea.l (a2)
400: bsr check_ext
401: lea.l 12(sp),sp
402: ; compare FP6
403: pea.l msg_fail_fp6(pc)
404: pea.l (initdata+6*12)(pc)
405: fmove.x fp6,(a2)
406: pea.l (a2)
407: bsr check_ext
408: lea.l 12(sp),sp
409: ; compare FP7
410: pea.l msg_fail_fp7(pc)
411: pea.l (initdata+7*12)(pc)
412: fmove.x fp7,(a2)
413: pea.l (a2)
414: bsr check_ext
415: lea.l 12(sp),sp
416: tst.l d7
417: bne @f
418: PRINT msg_ok
419: @@:
420: rts
421:
422: test_fmovem_anpi_to_fpn_pred_dyn:
423: PRINT msg_fmovem_anpi_to_fpn_pred_dyn
424: lea.l initdata(pc),a0
425: fmove.x (a0)+,fp0
426: fmove.x (a0)+,fp1
427: fmove.x (a0)+,fp2
428: fmove.x (a0)+,fp3
429: fmove.x (a0)+,fp4
430: fmove.x (a0)+,fp5
431: fmove.x (a0)+,fp6
432: fmove.x (a0)+,fp7
433: lea.l srcdata(pc),a0
434: moveq.l #$30,d6
435: SET_FLINE_TRAP
436: moveq.l #0,d7
437: lea.l @f,a3
438: .dc.w $f218, $c860
439: @@:
440: RESTORE_FLINE_TRAP
441: tst.l d7
442: beq @f
443: PRINT msg_fail_trap
444: rts
445: @@:
446: lea.l srcdata+24(pc),a1
447: cmp.l a1,a0
448: beq @f
449: pea.l msg_fail_addr(pc)
450: move.l a1,-(sp)
451: move.l a0,-(sp)
452: bsr result
453: lea.l 12(sp),sp
454: @@:
455: lea.l workarea(pc),a2
456: ; compare FP0
457: pea.l msg_fail_fp0(pc)
458: pea.l (initdata+0*12)(pc)
459: fmove.x fp0,(a2)
460: pea.l (a2)
461: bsr check_ext
462: lea.l 12(sp),sp
463: ; compare FP1
464: pea.l msg_fail_fp1(pc)
465: pea.l (initdata+1*12)(pc)
466: fmove.x fp1,(a2)
467: pea.l (a2)
468: bsr check_ext
469: lea.l 12(sp),sp
470: ; compare FP2
471: pea.l msg_fail_fp2(pc)
472: pea.l (initdata+2*12)(pc)
473: fmove.x fp2,(a2)
474: pea.l (a2)
475: bsr check_ext
476: lea.l 12(sp),sp
477: ; compare FP3
478: pea.l msg_fail_fp3(pc)
479: pea.l (initdata+3*12)(pc)
480: fmove.x fp3,(a2)
481: pea.l (a2)
482: bsr check_ext
483: lea.l 12(sp),sp
484: ; compare FP4
485: pea.l msg_fail_fp4(pc)
486: pea.l srcdata+12(pc)
487: fmove.x fp4,(a2)
488: pea.l (a2)
489: bsr check_ext
490: lea.l 12(sp),sp
491: ; compare FP5
492: pea.l msg_fail_fp5(pc)
493: pea.l srcdata+0(pc)
494: fmove.x fp5,(a2)
495: pea.l (a2)
496: bsr check_ext
497: lea.l 12(sp),sp
498: ; compare FP6
499: pea.l msg_fail_fp6(pc)
500: pea.l (initdata+6*12)(pc)
501: fmove.x fp6,(a2)
502: pea.l (a2)
503: bsr check_ext
504: lea.l 12(sp),sp
505: ; compare FP7
506: pea.l msg_fail_fp7(pc)
507: pea.l (initdata+7*12)(pc)
508: fmove.x fp7,(a2)
509: pea.l (a2)
510: bsr check_ext
511: lea.l 12(sp),sp
512: tst.l d7
513: bne @f
514: PRINT msg_ok
515: @@:
516: rts
517:
518: test_fmovem_anpd_to_fpn_pred_dyn:
519: PRINT msg_fmovem_anpd_to_fpn_pred_dyn
520: SET_FLINE_TRAP
521: moveq.l #0,d7
522: lea.l @f,a3
523: .dc.w $f220, $c860
524: @@:
525: RESTORE_FLINE_TRAP
526: tst.l d7
527: bne @f
528: PRINT msg_fail_notrap
529: rts
530: @@:
531: PRINT msg_oktrap
532: rts
533:
534: test_fmovem_dn_to_fpn_ctrl_sta:
535: PRINT msg_fmovem_dn_to_fpn_ctrl_sta
536: SET_FLINE_TRAP
537: moveq.l #0,d7
538: lea.l @f,a3
539: .dc.w $f200, $d060
540: @@:
541: RESTORE_FLINE_TRAP
542: tst.l d7
543: bne @f
544: PRINT msg_fail_notrap
545: rts
546: @@:
547: PRINT msg_oktrap
548: rts
549:
550: test_fmovem_an_to_fpn_ctrl_sta:
551: PRINT msg_fmovem_an_to_fpn_ctrl_sta
552: SET_FLINE_TRAP
553: moveq.l #0,d7
554: lea.l @f,a3
555: .dc.w $f208, $d060
556: @@:
557: RESTORE_FLINE_TRAP
558: tst.l d7
559: bne @f
560: PRINT msg_fail_notrap
561: rts
562: @@:
563: PRINT msg_oktrap
564: rts
565:
566: test_fmovem_anin_to_fpn_ctrl_sta:
567: PRINT msg_fmovem_anin_to_fpn_ctrl_sta
568: lea.l initdata(pc),a0
569: fmove.x (a0)+,fp0
570: fmove.x (a0)+,fp1
571: fmove.x (a0)+,fp2
572: fmove.x (a0)+,fp3
573: fmove.x (a0)+,fp4
574: fmove.x (a0)+,fp5
575: fmove.x (a0)+,fp6
576: fmove.x (a0)+,fp7
577: lea.l srcdata(pc),a0
578: SET_FLINE_TRAP
579: moveq.l #0,d7
580: lea.l @f,a3
581: .dc.w $f210, $d060
582: @@:
583: RESTORE_FLINE_TRAP
584: tst.l d7
585: beq @f
586: PRINT msg_fail_trap
587: rts
588: @@:
589: lea.l srcdata+0(pc),a1
590: cmp.l a1,a0
591: beq @f
592: pea.l msg_fail_addr(pc)
593: move.l a1,-(sp)
594: move.l a0,-(sp)
595: bsr result
596: lea.l 12(sp),sp
597: @@:
598: lea.l workarea(pc),a2
599: ; compare FP0
600: pea.l msg_fail_fp0(pc)
601: pea.l (initdata+0*12)(pc)
602: fmove.x fp0,(a2)
603: pea.l (a2)
604: bsr check_ext
605: lea.l 12(sp),sp
606: ; compare FP1
607: pea.l msg_fail_fp1(pc)
608: pea.l srcdata+0(pc)
609: fmove.x fp1,(a2)
610: pea.l (a2)
611: bsr check_ext
612: lea.l 12(sp),sp
613: ; compare FP2
614: pea.l msg_fail_fp2(pc)
615: pea.l srcdata+12(pc)
616: fmove.x fp2,(a2)
617: pea.l (a2)
618: bsr check_ext
619: lea.l 12(sp),sp
620: ; compare FP3
621: pea.l msg_fail_fp3(pc)
622: pea.l (initdata+3*12)(pc)
623: fmove.x fp3,(a2)
624: pea.l (a2)
625: bsr check_ext
626: lea.l 12(sp),sp
627: ; compare FP4
628: pea.l msg_fail_fp4(pc)
629: pea.l (initdata+4*12)(pc)
630: fmove.x fp4,(a2)
631: pea.l (a2)
632: bsr check_ext
633: lea.l 12(sp),sp
634: ; compare FP5
635: pea.l msg_fail_fp5(pc)
636: pea.l (initdata+5*12)(pc)
637: fmove.x fp5,(a2)
638: pea.l (a2)
639: bsr check_ext
640: lea.l 12(sp),sp
641: ; compare FP6
642: pea.l msg_fail_fp6(pc)
643: pea.l (initdata+6*12)(pc)
644: fmove.x fp6,(a2)
645: pea.l (a2)
646: bsr check_ext
647: lea.l 12(sp),sp
648: ; compare FP7
649: pea.l msg_fail_fp7(pc)
650: pea.l (initdata+7*12)(pc)
651: fmove.x fp7,(a2)
652: pea.l (a2)
653: bsr check_ext
654: lea.l 12(sp),sp
655: tst.l d7
656: bne @f
657: PRINT msg_ok
658: @@:
659: rts
660:
661: test_fmovem_anpi_to_fpn_ctrl_sta:
662: PRINT msg_fmovem_anpi_to_fpn_ctrl_sta
663: lea.l initdata(pc),a0
664: fmove.x (a0)+,fp0
665: fmove.x (a0)+,fp1
666: fmove.x (a0)+,fp2
667: fmove.x (a0)+,fp3
668: fmove.x (a0)+,fp4
669: fmove.x (a0)+,fp5
670: fmove.x (a0)+,fp6
671: fmove.x (a0)+,fp7
672: lea.l srcdata(pc),a0
673: SET_FLINE_TRAP
674: moveq.l #0,d7
675: lea.l @f,a3
676: .dc.w $f218, $d060
677: @@:
678: RESTORE_FLINE_TRAP
679: tst.l d7
680: beq @f
681: PRINT msg_fail_trap
682: rts
683: @@:
684: lea.l srcdata+24(pc),a1
685: cmp.l a1,a0
686: beq @f
687: pea.l msg_fail_addr(pc)
688: move.l a1,-(sp)
689: move.l a0,-(sp)
690: bsr result
691: lea.l 12(sp),sp
692: @@:
693: lea.l workarea(pc),a2
694: ; compare FP0
695: pea.l msg_fail_fp0(pc)
696: pea.l (initdata+0*12)(pc)
697: fmove.x fp0,(a2)
698: pea.l (a2)
699: bsr check_ext
700: lea.l 12(sp),sp
701: ; compare FP1
702: pea.l msg_fail_fp1(pc)
703: pea.l srcdata+0(pc)
704: fmove.x fp1,(a2)
705: pea.l (a2)
706: bsr check_ext
707: lea.l 12(sp),sp
708: ; compare FP2
709: pea.l msg_fail_fp2(pc)
710: pea.l srcdata+12(pc)
711: fmove.x fp2,(a2)
712: pea.l (a2)
713: bsr check_ext
714: lea.l 12(sp),sp
715: ; compare FP3
716: pea.l msg_fail_fp3(pc)
717: pea.l (initdata+3*12)(pc)
718: fmove.x fp3,(a2)
719: pea.l (a2)
720: bsr check_ext
721: lea.l 12(sp),sp
722: ; compare FP4
723: pea.l msg_fail_fp4(pc)
724: pea.l (initdata+4*12)(pc)
725: fmove.x fp4,(a2)
726: pea.l (a2)
727: bsr check_ext
728: lea.l 12(sp),sp
729: ; compare FP5
730: pea.l msg_fail_fp5(pc)
731: pea.l (initdata+5*12)(pc)
732: fmove.x fp5,(a2)
733: pea.l (a2)
734: bsr check_ext
735: lea.l 12(sp),sp
736: ; compare FP6
737: pea.l msg_fail_fp6(pc)
738: pea.l (initdata+6*12)(pc)
739: fmove.x fp6,(a2)
740: pea.l (a2)
741: bsr check_ext
742: lea.l 12(sp),sp
743: ; compare FP7
744: pea.l msg_fail_fp7(pc)
745: pea.l (initdata+7*12)(pc)
746: fmove.x fp7,(a2)
747: pea.l (a2)
748: bsr check_ext
749: lea.l 12(sp),sp
750: tst.l d7
751: bne @f
752: PRINT msg_ok
753: @@:
754: rts
755:
756: test_fmovem_anpd_to_fpn_ctrl_sta:
757: PRINT msg_fmovem_anpd_to_fpn_ctrl_sta
758: SET_FLINE_TRAP
759: moveq.l #0,d7
760: lea.l @f,a3
761: .dc.w $f220, $d060
762: @@:
763: RESTORE_FLINE_TRAP
764: tst.l d7
765: bne @f
766: PRINT msg_fail_notrap
767: rts
768: @@:
769: PRINT msg_oktrap
770: rts
771:
772: test_fmovem_dn_to_fpn_ctrl_dyn:
773: PRINT msg_fmovem_dn_to_fpn_ctrl_dyn
774: SET_FLINE_TRAP
775: moveq.l #0,d7
776: lea.l @f,a3
777: .dc.w $f200, $d860
778: @@:
779: RESTORE_FLINE_TRAP
780: tst.l d7
781: bne @f
782: PRINT msg_fail_notrap
783: rts
784: @@:
785: PRINT msg_oktrap
786: rts
787:
788: test_fmovem_an_to_fpn_ctrl_dyn:
789: PRINT msg_fmovem_an_to_fpn_ctrl_dyn
790: SET_FLINE_TRAP
791: moveq.l #0,d7
792: lea.l @f,a3
793: .dc.w $f208, $d860
794: @@:
795: RESTORE_FLINE_TRAP
796: tst.l d7
797: bne @f
798: PRINT msg_fail_notrap
799: rts
800: @@:
801: PRINT msg_oktrap
802: rts
803:
804: test_fmovem_anin_to_fpn_ctrl_dyn:
805: PRINT msg_fmovem_anin_to_fpn_ctrl_dyn
806: lea.l initdata(pc),a0
807: fmove.x (a0)+,fp0
808: fmove.x (a0)+,fp1
809: fmove.x (a0)+,fp2
810: fmove.x (a0)+,fp3
811: fmove.x (a0)+,fp4
812: fmove.x (a0)+,fp5
813: fmove.x (a0)+,fp6
814: fmove.x (a0)+,fp7
815: lea.l srcdata(pc),a0
816: moveq.l #$30,d6
817: SET_FLINE_TRAP
818: moveq.l #0,d7
819: lea.l @f,a3
820: .dc.w $f210, $d860
821: @@:
822: RESTORE_FLINE_TRAP
823: tst.l d7
824: beq @f
825: PRINT msg_fail_trap
826: rts
827: @@:
828: lea.l srcdata+0(pc),a1
829: cmp.l a1,a0
830: beq @f
831: pea.l msg_fail_addr(pc)
832: move.l a1,-(sp)
833: move.l a0,-(sp)
834: bsr result
835: lea.l 12(sp),sp
836: @@:
837: lea.l workarea(pc),a2
838: ; compare FP0
839: pea.l msg_fail_fp0(pc)
840: pea.l (initdata+0*12)(pc)
841: fmove.x fp0,(a2)
842: pea.l (a2)
843: bsr check_ext
844: lea.l 12(sp),sp
845: ; compare FP1
846: pea.l msg_fail_fp1(pc)
847: pea.l (initdata+1*12)(pc)
848: fmove.x fp1,(a2)
849: pea.l (a2)
850: bsr check_ext
851: lea.l 12(sp),sp
852: ; compare FP2
853: pea.l msg_fail_fp2(pc)
854: pea.l srcdata+0(pc)
855: fmove.x fp2,(a2)
856: pea.l (a2)
857: bsr check_ext
858: lea.l 12(sp),sp
859: ; compare FP3
860: pea.l msg_fail_fp3(pc)
861: pea.l srcdata+12(pc)
862: fmove.x fp3,(a2)
863: pea.l (a2)
864: bsr check_ext
865: lea.l 12(sp),sp
866: ; compare FP4
867: pea.l msg_fail_fp4(pc)
868: pea.l (initdata+4*12)(pc)
869: fmove.x fp4,(a2)
870: pea.l (a2)
871: bsr check_ext
872: lea.l 12(sp),sp
873: ; compare FP5
874: pea.l msg_fail_fp5(pc)
875: pea.l (initdata+5*12)(pc)
876: fmove.x fp5,(a2)
877: pea.l (a2)
878: bsr check_ext
879: lea.l 12(sp),sp
880: ; compare FP6
881: pea.l msg_fail_fp6(pc)
882: pea.l (initdata+6*12)(pc)
883: fmove.x fp6,(a2)
884: pea.l (a2)
885: bsr check_ext
886: lea.l 12(sp),sp
887: ; compare FP7
888: pea.l msg_fail_fp7(pc)
889: pea.l (initdata+7*12)(pc)
890: fmove.x fp7,(a2)
891: pea.l (a2)
892: bsr check_ext
893: lea.l 12(sp),sp
894: tst.l d7
895: bne @f
896: PRINT msg_ok
897: @@:
898: rts
899:
900: test_fmovem_anpi_to_fpn_ctrl_dyn:
901: PRINT msg_fmovem_anpi_to_fpn_ctrl_dyn
902: lea.l initdata(pc),a0
903: fmove.x (a0)+,fp0
904: fmove.x (a0)+,fp1
905: fmove.x (a0)+,fp2
906: fmove.x (a0)+,fp3
907: fmove.x (a0)+,fp4
908: fmove.x (a0)+,fp5
909: fmove.x (a0)+,fp6
910: fmove.x (a0)+,fp7
911: lea.l srcdata(pc),a0
912: moveq.l #$30,d6
913: SET_FLINE_TRAP
914: moveq.l #0,d7
915: lea.l @f,a3
916: .dc.w $f218, $d860
917: @@:
918: RESTORE_FLINE_TRAP
919: tst.l d7
920: beq @f
921: PRINT msg_fail_trap
922: rts
923: @@:
924: lea.l srcdata+24(pc),a1
925: cmp.l a1,a0
926: beq @f
927: pea.l msg_fail_addr(pc)
928: move.l a1,-(sp)
929: move.l a0,-(sp)
930: bsr result
931: lea.l 12(sp),sp
932: @@:
933: lea.l workarea(pc),a2
934: ; compare FP0
935: pea.l msg_fail_fp0(pc)
936: pea.l (initdata+0*12)(pc)
937: fmove.x fp0,(a2)
938: pea.l (a2)
939: bsr check_ext
940: lea.l 12(sp),sp
941: ; compare FP1
942: pea.l msg_fail_fp1(pc)
943: pea.l (initdata+1*12)(pc)
944: fmove.x fp1,(a2)
945: pea.l (a2)
946: bsr check_ext
947: lea.l 12(sp),sp
948: ; compare FP2
949: pea.l msg_fail_fp2(pc)
950: pea.l srcdata+0(pc)
951: fmove.x fp2,(a2)
952: pea.l (a2)
953: bsr check_ext
954: lea.l 12(sp),sp
955: ; compare FP3
956: pea.l msg_fail_fp3(pc)
957: pea.l srcdata+12(pc)
958: fmove.x fp3,(a2)
959: pea.l (a2)
960: bsr check_ext
961: lea.l 12(sp),sp
962: ; compare FP4
963: pea.l msg_fail_fp4(pc)
964: pea.l (initdata+4*12)(pc)
965: fmove.x fp4,(a2)
966: pea.l (a2)
967: bsr check_ext
968: lea.l 12(sp),sp
969: ; compare FP5
970: pea.l msg_fail_fp5(pc)
971: pea.l (initdata+5*12)(pc)
972: fmove.x fp5,(a2)
973: pea.l (a2)
974: bsr check_ext
975: lea.l 12(sp),sp
976: ; compare FP6
977: pea.l msg_fail_fp6(pc)
978: pea.l (initdata+6*12)(pc)
979: fmove.x fp6,(a2)
980: pea.l (a2)
981: bsr check_ext
982: lea.l 12(sp),sp
983: ; compare FP7
984: pea.l msg_fail_fp7(pc)
985: pea.l (initdata+7*12)(pc)
986: fmove.x fp7,(a2)
987: pea.l (a2)
988: bsr check_ext
989: lea.l 12(sp),sp
990: tst.l d7
991: bne @f
992: PRINT msg_ok
993: @@:
994: rts
995:
996: test_fmovem_anpd_to_fpn_ctrl_dyn:
997: PRINT msg_fmovem_anpd_to_fpn_ctrl_dyn
998: SET_FLINE_TRAP
999: moveq.l #0,d7
1000: lea.l @f,a3
1001: .dc.w $f220, $d860
1002: @@:
1003: RESTORE_FLINE_TRAP
1004: tst.l d7
1005: bne @f
1006: PRINT msg_fail_notrap
1007: rts
1008: @@:
1009: PRINT msg_oktrap
1010: rts
1011:
1012: test_fmovem_fpn_to_dn_pred_sta:
1013: PRINT msg_fmovem_fpn_to_dn_pred_sta
1014: SET_FLINE_TRAP
1015: moveq.l #0,d7
1016: lea.l @f,a3
1017: .dc.w $f200, $e060
1018: @@:
1019: RESTORE_FLINE_TRAP
1020: tst.l d7
1021: bne @f
1022: PRINT msg_fail_notrap
1023: rts
1024: @@:
1025: PRINT msg_oktrap
1026: rts
1027:
1028: test_fmovem_fpn_to_an_pred_sta:
1029: PRINT msg_fmovem_fpn_to_an_pred_sta
1030: SET_FLINE_TRAP
1031: moveq.l #0,d7
1032: lea.l @f,a3
1033: .dc.w $f208, $e060
1034: @@:
1035: RESTORE_FLINE_TRAP
1036: tst.l d7
1037: bne @f
1038: PRINT msg_fail_notrap
1039: rts
1040: @@:
1041: PRINT msg_oktrap
1042: rts
1043:
1044: test_fmovem_fpn_to_anin_pred_sta:
1045: PRINT msg_fmovem_fpn_to_anin_pred_sta
1046: lea.l initdata(pc),a0
1047: fmove.x (a0)+,fp0
1048: fmove.x (a0)+,fp1
1049: fmove.x (a0)+,fp2
1050: fmove.x (a0)+,fp3
1051: fmove.x (a0)+,fp4
1052: fmove.x (a0)+,fp5
1053: fmove.x (a0)+,fp6
1054: fmove.x (a0)+,fp7
1055: moveq.l #0,d0
1056: moveq.l #0,d1
1057: moveq.l #0,d7
1058: lea.l workarea(pc),a0
1059: movem.l d0-d1/d7,(a0)
1060: movem.l d0-d1/d7,12(a0)
1061: SET_FLINE_TRAP
1062: lea.l @f,a3
1063: .dc.w $f210, $e060
1064: @@:
1065: RESTORE_FLINE_TRAP
1066: tst.l d7
1067: beq @f
1068: PRINT msg_fail_trap
1069: rts
1070: @@:
1071: lea.l workarea(pc),a1
1072: cmp.l a1,a0
1073: beq @f
1074: pea.l msg_fail_addr(pc)
1075: move.l a1,-(sp)
1076: move.l a0,-(sp)
1077: bsr result
1078: lea.l 12(sp),sp
1079: @@:
1080: ; compare first one
1081: pea.l msg_fail_1st(pc)
1082: pea.l (initdata+6*12)(pc)
1083: pea.l 0(a1)
1084: bsr check_ext
1085: lea.l 12(sp),sp
1086: ; compare second one
1087: pea.l msg_fail_2nd(pc)
1088: pea.l (initdata+5*12)(pc)
1089: pea.l 12(a1)
1090: bsr check_ext
1091: lea.l 12(sp),sp
1092:
1093: tst.l d7
1094: bne @f
1095: PRINT msg_ok
1096: @@:
1097: rts
1098:
1099: test_fmovem_fpn_to_anpi_pred_sta:
1100: PRINT msg_fmovem_fpn_to_anpi_pred_sta
1101: SET_FLINE_TRAP
1102: moveq.l #0,d7
1103: lea.l @f,a3
1104: .dc.w $f218, $e060
1105: @@:
1106: RESTORE_FLINE_TRAP
1107: tst.l d7
1108: bne @f
1109: PRINT msg_fail_notrap
1110: rts
1111: @@:
1112: PRINT msg_oktrap
1113: rts
1114:
1115: test_fmovem_fpn_to_anpd_pred_sta:
1116: PRINT msg_fmovem_fpn_to_anpd_pred_sta
1117: lea.l initdata(pc),a0
1118: fmove.x (a0)+,fp0
1119: fmove.x (a0)+,fp1
1120: fmove.x (a0)+,fp2
1121: fmove.x (a0)+,fp3
1122: fmove.x (a0)+,fp4
1123: fmove.x (a0)+,fp5
1124: fmove.x (a0)+,fp6
1125: fmove.x (a0)+,fp7
1126: moveq.l #0,d0
1127: moveq.l #0,d1
1128: moveq.l #0,d7
1129: lea.l workarea(pc),a0
1130: movem.l d0-d1/d7,(a0)
1131: movem.l d0-d1/d7,12(a0)
1132: lea.l workarea+24(pc),a0
1133: SET_FLINE_TRAP
1134: lea.l @f,a3
1135: .dc.w $f220, $e060
1136: @@:
1137: RESTORE_FLINE_TRAP
1138: tst.l d7
1139: beq @f
1140: PRINT msg_fail_trap
1141: rts
1142: @@:
1143: lea.l workarea(pc),a1
1144: cmp.l a1,a0
1145: beq @f
1146: pea.l msg_fail_addr(pc)
1147: move.l a1,-(sp)
1148: move.l a0,-(sp)
1149: bsr result
1150: lea.l 12(sp),sp
1151: @@:
1152: ; compare first one
1153: pea.l msg_fail_1st(pc)
1154: pea.l (initdata+6*12)(pc)
1155: pea.l 12(a1)
1156: bsr check_ext
1157: lea.l 12(sp),sp
1158: ; compare second one
1159: pea.l msg_fail_2nd(pc)
1160: pea.l (initdata+5*12)(pc)
1161: pea.l 0(a1)
1162: bsr check_ext
1163: lea.l 12(sp),sp
1164:
1165: tst.l d7
1166: bne @f
1167: PRINT msg_ok
1168: @@:
1169: rts
1170:
1171: test_fmovem_fpn_to_dn_pred_dyn:
1172: PRINT msg_fmovem_fpn_to_dn_pred_dyn
1173: SET_FLINE_TRAP
1174: moveq.l #0,d7
1175: lea.l @f,a3
1176: .dc.w $f200, $e860
1177: @@:
1178: RESTORE_FLINE_TRAP
1179: tst.l d7
1180: bne @f
1181: PRINT msg_fail_notrap
1182: rts
1183: @@:
1184: PRINT msg_oktrap
1185: rts
1186:
1187: test_fmovem_fpn_to_an_pred_dyn:
1188: PRINT msg_fmovem_fpn_to_an_pred_dyn
1189: SET_FLINE_TRAP
1190: moveq.l #0,d7
1191: lea.l @f,a3
1192: .dc.w $f208, $e860
1193: @@:
1194: RESTORE_FLINE_TRAP
1195: tst.l d7
1196: bne @f
1197: PRINT msg_fail_notrap
1198: rts
1199: @@:
1200: PRINT msg_oktrap
1201: rts
1202:
1203: test_fmovem_fpn_to_anin_pred_dyn:
1204: PRINT msg_fmovem_fpn_to_anin_pred_dyn
1205: lea.l initdata(pc),a0
1206: fmove.x (a0)+,fp0
1207: fmove.x (a0)+,fp1
1208: fmove.x (a0)+,fp2
1209: fmove.x (a0)+,fp3
1210: fmove.x (a0)+,fp4
1211: fmove.x (a0)+,fp5
1212: fmove.x (a0)+,fp6
1213: fmove.x (a0)+,fp7
1214: moveq.l #0,d0
1215: moveq.l #0,d1
1216: moveq.l #0,d7
1217: lea.l workarea(pc),a0
1218: movem.l d0-d1/d7,(a0)
1219: movem.l d0-d1/d7,12(a0)
1220: moveq.l #$30,d6
1221: SET_FLINE_TRAP
1222: lea.l @f,a3
1223: .dc.w $f210, $e860
1224: @@:
1225: RESTORE_FLINE_TRAP
1226: tst.l d7
1227: beq @f
1228: PRINT msg_fail_trap
1229: rts
1230: @@:
1231: lea.l workarea(pc),a1
1232: cmp.l a1,a0
1233: beq @f
1234: pea.l msg_fail_addr(pc)
1235: move.l a1,-(sp)
1236: move.l a0,-(sp)
1237: bsr result
1238: lea.l 12(sp),sp
1239: @@:
1240: ; compare first one
1241: pea.l msg_fail_1st(pc)
1242: pea.l (initdata+5*12)(pc)
1243: pea.l 0(a1)
1244: bsr check_ext
1245: lea.l 12(sp),sp
1246: ; compare second one
1247: pea.l msg_fail_2nd(pc)
1248: pea.l (initdata+4*12)(pc)
1249: pea.l 12(a1)
1250: bsr check_ext
1251: lea.l 12(sp),sp
1252:
1253: tst.l d7
1254: bne @f
1255: PRINT msg_ok
1256: @@:
1257: rts
1258:
1259: test_fmovem_fpn_to_anpi_pred_dyn:
1260: PRINT msg_fmovem_fpn_to_anpi_pred_dyn
1261: SET_FLINE_TRAP
1262: moveq.l #0,d7
1263: lea.l @f,a3
1264: .dc.w $f218, $e860
1265: @@:
1266: RESTORE_FLINE_TRAP
1267: tst.l d7
1268: bne @f
1269: PRINT msg_fail_notrap
1270: rts
1271: @@:
1272: PRINT msg_oktrap
1273: rts
1274:
1275: test_fmovem_fpn_to_anpd_pred_dyn:
1276: PRINT msg_fmovem_fpn_to_anpd_pred_dyn
1277: lea.l initdata(pc),a0
1278: fmove.x (a0)+,fp0
1279: fmove.x (a0)+,fp1
1280: fmove.x (a0)+,fp2
1281: fmove.x (a0)+,fp3
1282: fmove.x (a0)+,fp4
1283: fmove.x (a0)+,fp5
1284: fmove.x (a0)+,fp6
1285: fmove.x (a0)+,fp7
1286: moveq.l #0,d0
1287: moveq.l #0,d1
1288: moveq.l #0,d7
1289: lea.l workarea(pc),a0
1290: movem.l d0-d1/d7,(a0)
1291: movem.l d0-d1/d7,12(a0)
1292: lea.l workarea+24(pc),a0
1293: moveq.l #$30,d6
1294: SET_FLINE_TRAP
1295: lea.l @f,a3
1296: .dc.w $f220, $e860
1297: @@:
1298: RESTORE_FLINE_TRAP
1299: tst.l d7
1300: beq @f
1301: PRINT msg_fail_trap
1302: rts
1303: @@:
1304: lea.l workarea(pc),a1
1305: cmp.l a1,a0
1306: beq @f
1307: pea.l msg_fail_addr(pc)
1308: move.l a1,-(sp)
1309: move.l a0,-(sp)
1310: bsr result
1311: lea.l 12(sp),sp
1312: @@:
1313: ; compare first one
1314: pea.l msg_fail_1st(pc)
1315: pea.l (initdata+5*12)(pc)
1316: pea.l 12(a1)
1317: bsr check_ext
1318: lea.l 12(sp),sp
1319: ; compare second one
1320: pea.l msg_fail_2nd(pc)
1321: pea.l (initdata+4*12)(pc)
1322: pea.l 0(a1)
1323: bsr check_ext
1324: lea.l 12(sp),sp
1325:
1326: tst.l d7
1327: bne @f
1328: PRINT msg_ok
1329: @@:
1330: rts
1331:
1332: test_fmovem_fpn_to_dn_ctrl_sta:
1333: PRINT msg_fmovem_fpn_to_dn_ctrl_sta
1334: SET_FLINE_TRAP
1335: moveq.l #0,d7
1336: lea.l @f,a3
1337: .dc.w $f200, $f060
1338: @@:
1339: RESTORE_FLINE_TRAP
1340: tst.l d7
1341: bne @f
1342: PRINT msg_fail_notrap
1343: rts
1344: @@:
1345: PRINT msg_oktrap
1346: rts
1347:
1348: test_fmovem_fpn_to_an_ctrl_sta:
1349: PRINT msg_fmovem_fpn_to_an_ctrl_sta
1350: SET_FLINE_TRAP
1351: moveq.l #0,d7
1352: lea.l @f,a3
1353: .dc.w $f208, $f060
1354: @@:
1355: RESTORE_FLINE_TRAP
1356: tst.l d7
1357: bne @f
1358: PRINT msg_fail_notrap
1359: rts
1360: @@:
1361: PRINT msg_oktrap
1362: rts
1363:
1364: test_fmovem_fpn_to_anin_ctrl_sta:
1365: PRINT msg_fmovem_fpn_to_anin_ctrl_sta
1366: lea.l initdata(pc),a0
1367: fmove.x (a0)+,fp0
1368: fmove.x (a0)+,fp1
1369: fmove.x (a0)+,fp2
1370: fmove.x (a0)+,fp3
1371: fmove.x (a0)+,fp4
1372: fmove.x (a0)+,fp5
1373: fmove.x (a0)+,fp6
1374: fmove.x (a0)+,fp7
1375: moveq.l #0,d0
1376: moveq.l #0,d1
1377: moveq.l #0,d7
1378: lea.l workarea(pc),a0
1379: movem.l d0-d1/d7,(a0)
1380: movem.l d0-d1/d7,12(a0)
1381: SET_FLINE_TRAP
1382: lea.l @f,a3
1383: .dc.w $f210, $f060
1384: @@:
1385: RESTORE_FLINE_TRAP
1386: tst.l d7
1387: beq @f
1388: PRINT msg_fail_trap
1389: rts
1390: @@:
1391: lea.l workarea(pc),a1
1392: cmp.l a1,a0
1393: beq @f
1394: pea.l msg_fail_addr(pc)
1395: move.l a1,-(sp)
1396: move.l a0,-(sp)
1397: bsr result
1398: lea.l 12(sp),sp
1399: @@:
1400: ; compare first one
1401: pea.l msg_fail_1st(pc)
1402: pea.l (initdata+1*12)(pc)
1403: pea.l 0(a1)
1404: bsr check_ext
1405: lea.l 12(sp),sp
1406: ; compare second one
1407: pea.l msg_fail_2nd(pc)
1408: pea.l (initdata+2*12)(pc)
1409: pea.l 12(a1)
1410: bsr check_ext
1411: lea.l 12(sp),sp
1412:
1413: tst.l d7
1414: bne @f
1415: PRINT msg_ok
1416: @@:
1417: rts
1418:
1419: test_fmovem_fpn_to_anpi_ctrl_sta:
1420: PRINT msg_fmovem_fpn_to_anpi_ctrl_sta
1421: SET_FLINE_TRAP
1422: moveq.l #0,d7
1423: lea.l @f,a3
1424: .dc.w $f218, $f060
1425: @@:
1426: RESTORE_FLINE_TRAP
1427: tst.l d7
1428: bne @f
1429: PRINT msg_fail_notrap
1430: rts
1431: @@:
1432: PRINT msg_oktrap
1433: rts
1434:
1435: test_fmovem_fpn_to_anpd_ctrl_sta:
1436: PRINT msg_fmovem_fpn_to_anpd_ctrl_sta
1437: lea.l initdata(pc),a0
1438: fmove.x (a0)+,fp0
1439: fmove.x (a0)+,fp1
1440: fmove.x (a0)+,fp2
1441: fmove.x (a0)+,fp3
1442: fmove.x (a0)+,fp4
1443: fmove.x (a0)+,fp5
1444: fmove.x (a0)+,fp6
1445: fmove.x (a0)+,fp7
1446: moveq.l #0,d0
1447: moveq.l #0,d1
1448: moveq.l #0,d7
1449: lea.l workarea(pc),a0
1450: movem.l d0-d1/d7,(a0)
1451: movem.l d0-d1/d7,12(a0)
1452: lea.l workarea+24(pc),a0
1453: SET_FLINE_TRAP
1454: lea.l @f,a3
1455: .dc.w $f220, $f060
1456: @@:
1457: RESTORE_FLINE_TRAP
1458: tst.l d7
1459: beq @f
1460: PRINT msg_fail_trap
1461: rts
1462: @@:
1463: lea.l workarea(pc),a1
1464: cmp.l a1,a0
1465: beq @f
1466: pea.l msg_fail_addr(pc)
1467: move.l a1,-(sp)
1468: move.l a0,-(sp)
1469: bsr result
1470: lea.l 12(sp),sp
1471: @@:
1472: ; compare first one
1473: pea.l msg_fail_1st(pc)
1474: pea.l (initdata+1*12)(pc)
1475: pea.l 12(a1)
1476: bsr check_ext
1477: lea.l 12(sp),sp
1478: ; compare second one
1479: pea.l msg_fail_2nd(pc)
1480: pea.l (initdata+2*12)(pc)
1481: pea.l 0(a1)
1482: bsr check_ext
1483: lea.l 12(sp),sp
1484:
1485: tst.l d7
1486: bne @f
1487: PRINT msg_ok
1488: @@:
1489: rts
1490:
1491: test_fmovem_fpn_to_dn_ctrl_dyn:
1492: PRINT msg_fmovem_fpn_to_dn_ctrl_dyn
1493: SET_FLINE_TRAP
1494: moveq.l #0,d7
1495: lea.l @f,a3
1496: .dc.w $f200, $f860
1497: @@:
1498: RESTORE_FLINE_TRAP
1499: tst.l d7
1500: bne @f
1501: PRINT msg_fail_notrap
1502: rts
1503: @@:
1504: PRINT msg_oktrap
1505: rts
1506:
1507: test_fmovem_fpn_to_an_ctrl_dyn:
1508: PRINT msg_fmovem_fpn_to_an_ctrl_dyn
1509: SET_FLINE_TRAP
1510: moveq.l #0,d7
1511: lea.l @f,a3
1512: .dc.w $f208, $f860
1513: @@:
1514: RESTORE_FLINE_TRAP
1515: tst.l d7
1516: bne @f
1517: PRINT msg_fail_notrap
1518: rts
1519: @@:
1520: PRINT msg_oktrap
1521: rts
1522:
1523: test_fmovem_fpn_to_anin_ctrl_dyn:
1524: PRINT msg_fmovem_fpn_to_anin_ctrl_dyn
1525: lea.l initdata(pc),a0
1526: fmove.x (a0)+,fp0
1527: fmove.x (a0)+,fp1
1528: fmove.x (a0)+,fp2
1529: fmove.x (a0)+,fp3
1530: fmove.x (a0)+,fp4
1531: fmove.x (a0)+,fp5
1532: fmove.x (a0)+,fp6
1533: fmove.x (a0)+,fp7
1534: moveq.l #0,d0
1535: moveq.l #0,d1
1536: moveq.l #0,d7
1537: lea.l workarea(pc),a0
1538: movem.l d0-d1/d7,(a0)
1539: movem.l d0-d1/d7,12(a0)
1540: moveq.l #$30,d6
1541: SET_FLINE_TRAP
1542: lea.l @f,a3
1543: .dc.w $f210, $f860
1544: @@:
1545: RESTORE_FLINE_TRAP
1546: tst.l d7
1547: beq @f
1548: PRINT msg_fail_trap
1549: rts
1550: @@:
1551: lea.l workarea(pc),a1
1552: cmp.l a1,a0
1553: beq @f
1554: pea.l msg_fail_addr(pc)
1555: move.l a1,-(sp)
1556: move.l a0,-(sp)
1557: bsr result
1558: lea.l 12(sp),sp
1559: @@:
1560: ; compare first one
1561: pea.l msg_fail_1st(pc)
1562: pea.l (initdata+2*12)(pc)
1563: pea.l 0(a1)
1564: bsr check_ext
1565: lea.l 12(sp),sp
1566: ; compare second one
1567: pea.l msg_fail_2nd(pc)
1568: pea.l (initdata+3*12)(pc)
1569: pea.l 12(a1)
1570: bsr check_ext
1571: lea.l 12(sp),sp
1572:
1573: tst.l d7
1574: bne @f
1575: PRINT msg_ok
1576: @@:
1577: rts
1578:
1579: test_fmovem_fpn_to_anpi_ctrl_dyn:
1580: PRINT msg_fmovem_fpn_to_anpi_ctrl_dyn
1581: SET_FLINE_TRAP
1582: moveq.l #0,d7
1583: lea.l @f,a3
1584: .dc.w $f218, $f860
1585: @@:
1586: RESTORE_FLINE_TRAP
1587: tst.l d7
1588: bne @f
1589: PRINT msg_fail_notrap
1590: rts
1591: @@:
1592: PRINT msg_oktrap
1593: rts
1594:
1595: test_fmovem_fpn_to_anpd_ctrl_dyn:
1596: PRINT msg_fmovem_fpn_to_anpd_ctrl_dyn
1597: lea.l initdata(pc),a0
1598: fmove.x (a0)+,fp0
1599: fmove.x (a0)+,fp1
1600: fmove.x (a0)+,fp2
1601: fmove.x (a0)+,fp3
1602: fmove.x (a0)+,fp4
1603: fmove.x (a0)+,fp5
1604: fmove.x (a0)+,fp6
1605: fmove.x (a0)+,fp7
1606: moveq.l #0,d0
1607: moveq.l #0,d1
1608: moveq.l #0,d7
1609: lea.l workarea(pc),a0
1610: movem.l d0-d1/d7,(a0)
1611: movem.l d0-d1/d7,12(a0)
1612: lea.l workarea+24(pc),a0
1613: moveq.l #$30,d6
1614: SET_FLINE_TRAP
1615: lea.l @f,a3
1616: .dc.w $f220, $f860
1617: @@:
1618: RESTORE_FLINE_TRAP
1619: tst.l d7
1620: beq @f
1621: PRINT msg_fail_trap
1622: rts
1623: @@:
1624: lea.l workarea(pc),a1
1625: cmp.l a1,a0
1626: beq @f
1627: pea.l msg_fail_addr(pc)
1628: move.l a1,-(sp)
1629: move.l a0,-(sp)
1630: bsr result
1631: lea.l 12(sp),sp
1632: @@:
1633: ; compare first one
1634: pea.l msg_fail_1st(pc)
1635: pea.l (initdata+2*12)(pc)
1636: pea.l 12(a1)
1637: bsr check_ext
1638: lea.l 12(sp),sp
1639: ; compare second one
1640: pea.l msg_fail_2nd(pc)
1641: pea.l (initdata+3*12)(pc)
1642: pea.l 0(a1)
1643: bsr check_ext
1644: lea.l 12(sp),sp
1645:
1646: tst.l d7
1647: bne @f
1648: PRINT msg_ok
1649: @@:
1650: rts
1651:
1652: test_fmovem_nofpn:
1653: PRINT msg_fmovem_nofpn
1654: lea.l initdata(pc),a0
1655: fmove.x (a0)+,fp0
1656: fmove.x (a0)+,fp1
1657: fmove.x (a0)+,fp2
1658: fmove.x (a0)+,fp3
1659: fmove.x (a0)+,fp4
1660: fmove.x (a0)+,fp5
1661: fmove.x (a0)+,fp6
1662: fmove.x (a0)+,fp7
1663: SET_FLINE_TRAP
1664: moveq.l #0,d7
1665: lea.l workarea(pc),a0
1666: move.l d7,(a0)
1667: move.l d7,4(a0)
1668: move.l d7,8(a0)
1669: lea.l @f,a3
1670: .dc.w $f210, $f000 ; fmovem nofpn,(a0)
1671: @@:
1672: RESTORE_FLINE_TRAP
1673: tst.l d7
1674: beq @f
1675: PRINT msg_fail_trap
1676: rts
1677: @@:
1678: pea.l msg_fail_1st(pc)
1679: pea.l zerodata(pc)
1680: pea.l (a0)
1681: bsr check_ext
1682: lea.l 12(sp),sp
1683:
1684: tst.l d7
1685: bne @f
1686: PRINT msg_ok
1687: @@:
1688: rts
1689:
1690: test_fmovem_illegal_dyn:
1691: PRINT msg_fmovem_illegal_dyn
1692: lea.l initdata(pc),a0
1693: fmove.x (a0)+,fp0
1694: fmove.x (a0)+,fp1
1695: fmove.x (a0)+,fp2
1696: fmove.x (a0)+,fp3
1697: fmove.x (a0)+,fp4
1698: fmove.x (a0)+,fp5
1699: fmove.x (a0)+,fp6
1700: fmove.x (a0)+,fp7
1701: SET_FLINE_TRAP
1702: lea.l srcdata(pc),a0
1703: moveq.l #$80,d6
1704: moveq.l #0,d7
1705: lea.l @f,a3
1706: .dc.w $f210, $d86f ; fmovem (a0),d6
1707: @@:
1708: RESTORE_FLINE_TRAP
1709:
1710: tst.l d7
1711: beq @f
1712: PRINT msg_fail_trap
1713: rts
1714: @@:
1715: lea.l workarea(pc),a0
1716: fmovem.x fp0,(a0)
1717: pea.l msg_fail_fp0(pc)
1718: pea.l srcdata(pc)
1719: pea.l (a0)
1720: bsr check_ext
1721: lea.l 12(sp),sp
1722:
1723: tst.l d7
1724: bne @f
1725: PRINT msg_ok
1726: @@:
1727: rts
1728:
1.1.1.3 ! root 1729: start2:
1.1 root 1730: clr.l -(sp)
1731: DOS _SUPER
1732: movem.l d6-d7/a2-a5,-(sp)
1733: moveq.l #$2c,d0 ; alternate of "lea.l $2c,a5"
1734: move.l d0,a5 ;
1.1.1.3 ! root 1735: moveq.l #0,d0
! 1736: fmove.l d0,fpcr ; Init FPCR, especially round mode and round prec.
! 1737:
! 1738: ; rough argument check
! 1739: ;moveq.l #0,d0 ; d0 is already cleared.
! 1740: cmpi.b #4,(a2)+ ; strlen(arg)<4 ?
! 1741: bcs @f
! 1742: cmpi.l #$68617264,(a2) ; "hard"
! 1743: seq.b d0
! 1744: @@:
! 1745: tst.b d0
! 1746: bne hardmode
! 1747: easymode:
! 1748: PRINT msg_easy
! 1749: bsr test_fmovem_anin_to_fpn_ctrl_sta
! 1750: bsr test_fmovem_anpi_to_fpn_ctrl_sta
! 1751: bsr test_fmovem_anin_to_fpn_ctrl_dyn
! 1752: bsr test_fmovem_anpi_to_fpn_ctrl_dyn
! 1753: bsr test_fmovem_fpn_to_anpd_pred_sta
! 1754: bsr test_fmovem_fpn_to_anpd_pred_dyn
! 1755: bsr test_fmovem_fpn_to_anin_ctrl_sta
! 1756: bsr test_fmovem_fpn_to_anin_ctrl_dyn
! 1757: bra done
! 1758:
! 1759: hardmode:
! 1760: PRINT msg_hard
1.1 root 1761: bsr test_fmovem_dn_to_fpn_pred_sta
1762: bsr test_fmovem_an_to_fpn_pred_sta
1763: bsr test_fmovem_anin_to_fpn_pred_sta
1764: bsr test_fmovem_anpi_to_fpn_pred_sta
1765: bsr test_fmovem_anpd_to_fpn_pred_sta
1766: bsr test_fmovem_dn_to_fpn_pred_dyn
1767: bsr test_fmovem_an_to_fpn_pred_dyn
1768: bsr test_fmovem_anin_to_fpn_pred_dyn
1769: bsr test_fmovem_anpi_to_fpn_pred_dyn
1770: bsr test_fmovem_anpd_to_fpn_pred_dyn
1771: bsr test_fmovem_dn_to_fpn_ctrl_sta
1772: bsr test_fmovem_an_to_fpn_ctrl_sta
1773: bsr test_fmovem_anin_to_fpn_ctrl_sta
1774: bsr test_fmovem_anpi_to_fpn_ctrl_sta
1775: bsr test_fmovem_anpd_to_fpn_ctrl_sta
1776: bsr test_fmovem_dn_to_fpn_ctrl_dyn
1777: bsr test_fmovem_an_to_fpn_ctrl_dyn
1778: bsr test_fmovem_anin_to_fpn_ctrl_dyn
1779: bsr test_fmovem_anpi_to_fpn_ctrl_dyn
1780: bsr test_fmovem_anpd_to_fpn_ctrl_dyn
1781: bsr test_fmovem_fpn_to_dn_pred_sta
1782: bsr test_fmovem_fpn_to_an_pred_sta
1783: bsr test_fmovem_fpn_to_anin_pred_sta
1784: bsr test_fmovem_fpn_to_anpi_pred_sta
1785: bsr test_fmovem_fpn_to_anpd_pred_sta
1786: bsr test_fmovem_fpn_to_dn_pred_dyn
1787: bsr test_fmovem_fpn_to_an_pred_dyn
1788: bsr test_fmovem_fpn_to_anin_pred_dyn
1789: bsr test_fmovem_fpn_to_anpi_pred_dyn
1790: bsr test_fmovem_fpn_to_anpd_pred_dyn
1791: bsr test_fmovem_fpn_to_dn_ctrl_sta
1792: bsr test_fmovem_fpn_to_an_ctrl_sta
1793: bsr test_fmovem_fpn_to_anin_ctrl_sta
1794: bsr test_fmovem_fpn_to_anpi_ctrl_sta
1795: bsr test_fmovem_fpn_to_anpd_ctrl_sta
1796: bsr test_fmovem_fpn_to_dn_ctrl_dyn
1797: bsr test_fmovem_fpn_to_an_ctrl_dyn
1798: bsr test_fmovem_fpn_to_anin_ctrl_dyn
1799: bsr test_fmovem_fpn_to_anpi_ctrl_dyn
1800: bsr test_fmovem_fpn_to_anpd_ctrl_dyn
1801: bsr test_fmovem_nofpn
1802: bsr test_fmovem_illegal_dyn
1.1.1.3 ! root 1803:
! 1804: done:
1.1 root 1805: movem.l (sp)+,d6-d7/a2-a5
1806: DOS _EXIT
1807:
1808: ; 結果表示
1809: ; スタックには、メッセージ、期待値、実際の値の順で積む。
1810: result:
1811: link a6,#0
1812: movem.l d0/a0,-(sp)
1813:
1814: move.l 8+8(a6),-(sp)
1815: DOS _PRINT
1816: addq.l #4,sp
1817:
1818: move.l 8+4(a6),d0
1819: lea.l buf(pc),a0
1820: bsr hexstr_long
1821: PRINT buf
1822: PRINT msg_but
1823:
1824: move.l 8+0(a6),d0
1825: lea.l buf(pc),a0
1826: bsr hexstr_long
1827: PRINT buf
1828: PRINT msg_crlf
1829:
1830: addq.l #1,d7 ; errcnt
1831: movem.l (sp)+,d0/a0
1832: unlk a6
1833: rts
1834:
1835: ; 拡張精度の比較と結果表示。
1836: ; 一致したら何もせず帰る。一致しなければエラーメッセージを表示。
1837: ; スタックには、(エラー時の)メッセージ、期待値、実際の値の順で積む
1838: check_ext:
1839: link a6,#0
1840: movem.l d0/a0-a2,-(sp)
1841:
1842: move.l 8+4(a6),a1
1843: move.l 8+0(a6),a2
1844: cmpm.l (a1)+,(a2)+
1845: bne @f
1846: cmpm.l (a1)+,(a2)+
1847: bne @f
1848: cmpm.l (a1)+,(a2)+
1849: bne @f
1850: ; equal
1851: bra check_ext_done
1852:
1853: @@: ; not equal
1854: move.l 8+8(a6),-(sp)
1855: DOS _PRINT
1856: addq.l #4,sp
1857:
1858: lea.l buf(pc),a0
1859: move.l 8+4(a6),a1
1860: move.l (a1)+,d0
1861: bsr hexstr_long
1862: move.b #'_',(a0)+
1863: move.l (a1)+,d0
1864: bsr hexstr_long
1865: move.b #'_',(a0)+
1866: move.l (a1),d0
1867: bsr hexstr_long
1868: PRINT buf
1869: PRINT msg_but
1870:
1871: lea.l buf(pc),a0
1872: move.l 8+0(a6),a2
1873: move.l (a2)+,d0
1874: bsr hexstr_long
1875: move.b #'_',(a0)+
1876: move.l (a2)+,d0
1877: bsr hexstr_long
1878: move.b #'_',(a0)+
1879: move.l (a2),d0
1880: bsr hexstr_long
1881: PRINT buf
1882: PRINT msg_crlf
1883:
1884: addq.l #1,d7 ; errcnt
1885: check_ext_done:
1886: movem.l (sp)+,d0/a0-a2
1887: unlk a6
1888: rts
1889:
1890: ; Fライン例外ハンドラ
1891: ; a3 に戻りアドレスをセットしてあること
1892: ; d7 を 1 にして帰る
1893: fline_handler:
1894: moveq.l #1,d7
1895: move.l a3,2(sp)
1896: rte
1897:
1898: ; FPn を埋める初期値
1899: initdata:
1900: .dc.l $0, $0, $8
1901: .dc.l $0, $0, $1
1902: .dc.l $0, $0, $2
1903: .dc.l $0, $0, $3
1904: .dc.l $0, $0, $4
1905: .dc.l $0, $0, $5
1906: .dc.l $0, $0, $6
1907: .dc.l $0, $0, $7
1908:
1909: ; ターゲットの FPn に転送するデータ
1910: srcdata:
1911: .dc.l $3fff0000, $88112233, $44556677
1912: .dc.l $dfff0000, $8899aabb, $ccddeeff
1913:
1914: zerodata:
1915: .dc.l $0, $0, $0
1916:
1.1.1.3 ! root 1917: msg_hard: .dc.b "hard mode",$d,$a,0
! 1918: msg_easy: .dc.b "easy mode",$d,$a,0
1.1 root 1919: msg_oktrap: .dc.b $9,"ok(trap)",$d,$a,0, 0,0
1920: msg_fail_notrap: .dc.b $9,"FAIL: trap expected but not occured",$d,$a,0
1921: msg_fail_trap: .dc.b $9,"FAIL: unexpected trap occured",$d,$a,0
1922:
1923: msg_ok: .dc.b $9,"ok",$d,$a,0
1924: msg_fail_fp0: .dc.b $9,"FAIL: fp0 expects ",0
1925: msg_fail_fp1: .dc.b $9,"FAIL: fp1 expects ",0
1926: msg_fail_fp2: .dc.b $9,"FAIL: fp2 expects ",0
1927: msg_fail_fp3: .dc.b $9,"FAIL: fp3 expects ",0
1928: msg_fail_fp4: .dc.b $9,"FAIL: fp4 expects ",0
1929: msg_fail_fp5: .dc.b $9,"FAIL: fp5 expects ",0
1930: msg_fail_fp6: .dc.b $9,"FAIL: fp6 expects ",0
1931: msg_fail_fp7: .dc.b $9,"FAIL: fp7 expects ",0
1932: msg_fail_1st: .dc.b $9,"FAIL: 1st expects ",0
1933: msg_fail_2nd: .dc.b $9,"FAIL: 2nd expects ",0
1934: msg_fail_addr: .dc.b $9,"FAIL: an expects ",0
1935: msg_but: .dc.b " but ",0
1936: msg_crlf: .dc.b $d,$a,0
1937:
1.1.1.3 ! root 1938: msg_fmovem_dn_to_fpn_pred_sta: .dc.b "fmovem.l d0,fplist",0
! 1939: msg_fmovem_an_to_fpn_pred_sta: .dc.b "fmovem.l a0,fplist",0
! 1940: msg_fmovem_anin_to_fpn_pred_sta: .dc.b "fmovem.l (a0),fplist",0
! 1941: msg_fmovem_anpi_to_fpn_pred_sta: .dc.b "fmovem.l (a0)+,fplist",0
! 1942: msg_fmovem_anpd_to_fpn_pred_sta: .dc.b "fmovem.l -(a0),fplist",0
! 1943: msg_fmovem_dn_to_fpn_pred_dyn: .dc.b "fmovem.l d0,d6",0
! 1944: msg_fmovem_an_to_fpn_pred_dyn: .dc.b "fmovem.l a0,d6",0
! 1945: msg_fmovem_anin_to_fpn_pred_dyn: .dc.b "fmovem.l (a0),d6",0
! 1946: msg_fmovem_anpi_to_fpn_pred_dyn: .dc.b "fmovem.l (a0)+,d6",0
! 1947: msg_fmovem_anpd_to_fpn_pred_dyn: .dc.b "fmovem.l -(a0),d6",0
! 1948: msg_fmovem_dn_to_fpn_ctrl_sta: .dc.b "fmovem.l d0,fplist",0
! 1949: msg_fmovem_an_to_fpn_ctrl_sta: .dc.b "fmovem.l a0,fplist",0
! 1950: msg_fmovem_anin_to_fpn_ctrl_sta: .dc.b "fmovem.l (a0),fplist",0
! 1951: msg_fmovem_anpi_to_fpn_ctrl_sta: .dc.b "fmovem.l (a0)+,fplist",0
! 1952: msg_fmovem_anpd_to_fpn_ctrl_sta: .dc.b "fmovem.l -(a0),fplist",0
! 1953: msg_fmovem_dn_to_fpn_ctrl_dyn: .dc.b "fmovem.l d0,d6",0
! 1954: msg_fmovem_an_to_fpn_ctrl_dyn: .dc.b "fmovem.l a0,d6",0
! 1955: msg_fmovem_anin_to_fpn_ctrl_dyn: .dc.b "fmovem.l (a0),d6",0
! 1956: msg_fmovem_anpi_to_fpn_ctrl_dyn: .dc.b "fmovem.l (a0)+,d6",0
! 1957: msg_fmovem_anpd_to_fpn_ctrl_dyn: .dc.b "fmovem.l -(a0),d6",0
! 1958: msg_fmovem_fpn_to_dn_pred_sta: .dc.b "fmovem.l fplist,d0",0
! 1959: msg_fmovem_fpn_to_an_pred_sta: .dc.b "fmovem.l fplist,a0",0
! 1960: msg_fmovem_fpn_to_anin_pred_sta: .dc.b "fmovem.l fplist,(a0)",0
! 1961: msg_fmovem_fpn_to_anpi_pred_sta: .dc.b "fmovem.l fplist,(a0)+",0
! 1962: msg_fmovem_fpn_to_anpd_pred_sta: .dc.b "fmovem.l fplist,-(a0)",0
! 1963: msg_fmovem_fpn_to_dn_pred_dyn: .dc.b "fmovem.l d6,d0",0
! 1964: msg_fmovem_fpn_to_an_pred_dyn: .dc.b "fmovem.l d6,a0",0
! 1965: msg_fmovem_fpn_to_anin_pred_dyn: .dc.b "fmovem.l d6,(a0)",0
! 1966: msg_fmovem_fpn_to_anpi_pred_dyn: .dc.b "fmovem.l d6,(a0)+",0
! 1967: msg_fmovem_fpn_to_anpd_pred_dyn: .dc.b "fmovem.l d6,-(a0)",0
! 1968: msg_fmovem_fpn_to_dn_ctrl_sta: .dc.b "fmovem.l fplist,d0",0
! 1969: msg_fmovem_fpn_to_an_ctrl_sta: .dc.b "fmovem.l fplist,a0",0
! 1970: msg_fmovem_fpn_to_anin_ctrl_sta: .dc.b "fmovem.l fplist,(a0)",0
! 1971: msg_fmovem_fpn_to_anpi_ctrl_sta: .dc.b "fmovem.l fplist,(a0)+",0
! 1972: msg_fmovem_fpn_to_anpd_ctrl_sta: .dc.b "fmovem.l fplist,-(a0)",0
! 1973: msg_fmovem_fpn_to_dn_ctrl_dyn: .dc.b "fmovem.l d6,d0",0
! 1974: msg_fmovem_fpn_to_an_ctrl_dyn: .dc.b "fmovem.l d6,a0",0
! 1975: msg_fmovem_fpn_to_anin_ctrl_dyn: .dc.b "fmovem.l d6,(a0)",0
! 1976: msg_fmovem_fpn_to_anpi_ctrl_dyn: .dc.b "fmovem.l d6,(a0)+",0
! 1977: msg_fmovem_fpn_to_anpd_ctrl_dyn: .dc.b "fmovem.l d6,-(a0)",0
! 1978: msg_fmovem_nofpn: .dc.b "fmovem.l nofpn,(a0)",0
! 1979: msg_fmovem_illegal_dyn: .dc.b "fmovem.l (a0),d6_illegal",0
1.1 root 1980:
1981: .data
1982: .even
1983: workarea: .ds.b 24
1.1.1.3 ! root 1984: buf: .ds.b 64
1.1 root 1985:
1986: .end start
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.