Annotation of nono/exp/fmovemn.has, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.