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

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

unix.superglobalmegacorp.com

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