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