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

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

unix.superglobalmegacorp.com

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