Annotation of uae/CPU Sources/cpuB.c, revision 1.1.1.1

1.1       root        1: #include "config.h"
                      2: #include "amiga.h"
                      3: #include "options.h"
                      4: #include <stdlib.h>
                      5: #include "memory.h"
                      6: #include "custom.h"
                      7: #include "newcpu.h"
                      8: #include "cputbl.h"
                      9: void op_b000(UWORD opcode)
                     10: {
                     11:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                     12:        ULONG dstreg = (opcode & 3584) >> 9;
                     13: {{     BYTE src = regs.d[srcreg];
                     14: {      BYTE dst = regs.d[dstreg];
                     15: {      ULONG newv = dst - src;
                     16: {      bool flgs = ((BYTE)(src)) < 0;
                     17:        bool flgo = ((BYTE)(dst)) < 0;
                     18:        bool flgn = ((BYTE)(newv)) < 0;
                     19:        regs.z = ((BYTE)(newv)) == 0;
                     20:        regs.v = (flgs != flgo) && (flgn != flgo);
                     21:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                     22:        regs.n = flgn != 0;
                     23: }}}}}}
                     24: void op_b010(UWORD opcode)
                     25: {
                     26:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                     27:        ULONG dstreg = (opcode & 3584) >> 9;
                     28: {{     CPTR srca = regs.a[srcreg];
                     29:        BYTE src = get_byte(srca);
                     30: {      BYTE dst = regs.d[dstreg];
                     31: {      ULONG newv = dst - src;
                     32: {      bool flgs = ((BYTE)(src)) < 0;
                     33:        bool flgo = ((BYTE)(dst)) < 0;
                     34:        bool flgn = ((BYTE)(newv)) < 0;
                     35:        regs.z = ((BYTE)(newv)) == 0;
                     36:        regs.v = (flgs != flgo) && (flgn != flgo);
                     37:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                     38:        regs.n = flgn != 0;
                     39: }}}}}}
                     40: void op_b018(UWORD opcode)
                     41: {
                     42:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                     43:        ULONG dstreg = (opcode & 3584) >> 9;
                     44: {{     CPTR srca = regs.a[srcreg];
                     45:        BYTE src = get_byte(srca);
                     46: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
                     47: {      BYTE dst = regs.d[dstreg];
                     48: {      ULONG newv = dst - src;
                     49: {      bool flgs = ((BYTE)(src)) < 0;
                     50:        bool flgo = ((BYTE)(dst)) < 0;
                     51:        bool flgn = ((BYTE)(newv)) < 0;
                     52:        regs.z = ((BYTE)(newv)) == 0;
                     53:        regs.v = (flgs != flgo) && (flgn != flgo);
                     54:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                     55:        regs.n = flgn != 0;
                     56: }}}}}}}
                     57: void op_b020(UWORD opcode)
                     58: {
                     59:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                     60:        ULONG dstreg = (opcode & 3584) >> 9;
                     61: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
                     62: {      CPTR srca = regs.a[srcreg];
                     63:        BYTE src = get_byte(srca);
                     64: {      BYTE dst = regs.d[dstreg];
                     65: {      ULONG newv = dst - src;
                     66: {      bool flgs = ((BYTE)(src)) < 0;
                     67:        bool flgo = ((BYTE)(dst)) < 0;
                     68:        bool flgn = ((BYTE)(newv)) < 0;
                     69:        regs.z = ((BYTE)(newv)) == 0;
                     70:        regs.v = (flgs != flgo) && (flgn != flgo);
                     71:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                     72:        regs.n = flgn != 0;
                     73: }}}}}}}
                     74: void op_b028(UWORD opcode)
                     75: {
                     76:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                     77:        ULONG dstreg = (opcode & 3584) >> 9;
                     78: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
                     79:        BYTE src = get_byte(srca);
                     80: {      BYTE dst = regs.d[dstreg];
                     81: {      ULONG newv = dst - src;
                     82: {      bool flgs = ((BYTE)(src)) < 0;
                     83:        bool flgo = ((BYTE)(dst)) < 0;
                     84:        bool flgn = ((BYTE)(newv)) < 0;
                     85:        regs.z = ((BYTE)(newv)) == 0;
                     86:        regs.v = (flgs != flgo) && (flgn != flgo);
                     87:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                     88:        regs.n = flgn != 0;
                     89: }}}}}}
                     90: void op_b030(UWORD opcode)
                     91: {
                     92:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                     93:        ULONG dstreg = (opcode & 3584) >> 9;
                     94: {{     CPTR srca = regs.a[srcreg];
                     95:        UWORD srcdp = nextiword();
                     96:        srca += (LONG)(BYTE)(srcdp & 0xFF);
                     97: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
                     98:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
                     99:        srca += srcdpr;
                    100: {      BYTE src = get_byte(srca);
                    101: {      BYTE dst = regs.d[dstreg];
                    102: {      ULONG newv = dst - src;
                    103: {      bool flgs = ((BYTE)(src)) < 0;
                    104:        bool flgo = ((BYTE)(dst)) < 0;
                    105:        bool flgn = ((BYTE)(newv)) < 0;
                    106:        regs.z = ((BYTE)(newv)) == 0;
                    107:        regs.v = (flgs != flgo) && (flgn != flgo);
                    108:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                    109:        regs.n = flgn != 0;
                    110: }}}}}}}}
                    111: void op_b038(UWORD opcode)
                    112: {
                    113:        ULONG dstreg = (opcode & 3584) >> 9;
                    114: {{     CPTR srca = (LONG)(WORD)nextiword();
                    115:        BYTE src = get_byte(srca);
                    116: {      BYTE dst = regs.d[dstreg];
                    117: {      ULONG newv = dst - src;
                    118: {      bool flgs = ((BYTE)(src)) < 0;
                    119:        bool flgo = ((BYTE)(dst)) < 0;
                    120:        bool flgn = ((BYTE)(newv)) < 0;
                    121:        regs.z = ((BYTE)(newv)) == 0;
                    122:        regs.v = (flgs != flgo) && (flgn != flgo);
                    123:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                    124:        regs.n = flgn != 0;
                    125: }}}}}}
                    126: void op_b039(UWORD opcode)
                    127: {
                    128:        ULONG dstreg = (opcode & 3584) >> 9;
                    129: {{     CPTR srca = nextilong();
                    130:        BYTE src = get_byte(srca);
                    131: {      BYTE dst = regs.d[dstreg];
                    132: {      ULONG newv = dst - src;
                    133: {      bool flgs = ((BYTE)(src)) < 0;
                    134:        bool flgo = ((BYTE)(dst)) < 0;
                    135:        bool flgn = ((BYTE)(newv)) < 0;
                    136:        regs.z = ((BYTE)(newv)) == 0;
                    137:        regs.v = (flgs != flgo) && (flgn != flgo);
                    138:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                    139:        regs.n = flgn != 0;
                    140: }}}}}}
                    141: void op_b03a(UWORD opcode)
                    142: {
                    143:        ULONG dstreg = (opcode & 3584) >> 9;
                    144: {{     CPTR srca = m68k_getpc();
                    145:        srca += (LONG)(WORD)nextiword();
                    146: {      BYTE src = get_byte(srca);
                    147: {      BYTE dst = regs.d[dstreg];
                    148: {      ULONG newv = dst - src;
                    149: {      bool flgs = ((BYTE)(src)) < 0;
                    150:        bool flgo = ((BYTE)(dst)) < 0;
                    151:        bool flgn = ((BYTE)(newv)) < 0;
                    152:        regs.z = ((BYTE)(newv)) == 0;
                    153:        regs.v = (flgs != flgo) && (flgn != flgo);
                    154:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                    155:        regs.n = flgn != 0;
                    156: }}}}}}}
                    157: void op_b03b(UWORD opcode)
                    158: {
                    159:        ULONG dstreg = (opcode & 3584) >> 9;
                    160: {{     CPTR srca = m68k_getpc();
                    161:        UWORD srcdp = nextiword();
                    162:        srca += (LONG)(BYTE)(srcdp & 0xFF);
                    163: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
                    164:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
                    165:        srca += srcdpr;
                    166: {      BYTE src = get_byte(srca);
                    167: {      BYTE dst = regs.d[dstreg];
                    168: {      ULONG newv = dst - src;
                    169: {      bool flgs = ((BYTE)(src)) < 0;
                    170:        bool flgo = ((BYTE)(dst)) < 0;
                    171:        bool flgn = ((BYTE)(newv)) < 0;
                    172:        regs.z = ((BYTE)(newv)) == 0;
                    173:        regs.v = (flgs != flgo) && (flgn != flgo);
                    174:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                    175:        regs.n = flgn != 0;
                    176: }}}}}}}}
                    177: void op_b03c(UWORD opcode)
                    178: {
                    179:        ULONG dstreg = (opcode & 3584) >> 9;
                    180: {{     BYTE src = nextiword();
                    181: {      BYTE dst = regs.d[dstreg];
                    182: {      ULONG newv = dst - src;
                    183: {      bool flgs = ((BYTE)(src)) < 0;
                    184:        bool flgo = ((BYTE)(dst)) < 0;
                    185:        bool flgn = ((BYTE)(newv)) < 0;
                    186:        regs.z = ((BYTE)(newv)) == 0;
                    187:        regs.v = (flgs != flgo) && (flgn != flgo);
                    188:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                    189:        regs.n = flgn != 0;
                    190: }}}}}}
                    191: void op_b040(UWORD opcode)
                    192: {
                    193:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    194:        ULONG dstreg = (opcode & 3584) >> 9;
                    195: {{     WORD src = regs.d[srcreg];
                    196: {      WORD dst = regs.d[dstreg];
                    197: {      ULONG newv = dst - src;
                    198: {      bool flgs = ((WORD)(src)) < 0;
                    199:        bool flgo = ((WORD)(dst)) < 0;
                    200:        bool flgn = ((WORD)(newv)) < 0;
                    201:        regs.z = ((WORD)(newv)) == 0;
                    202:        regs.v = (flgs != flgo) && (flgn != flgo);
                    203:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                    204:        regs.n = flgn != 0;
                    205: }}}}}}
                    206: void op_b048(UWORD opcode)
                    207: {
                    208:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    209:        ULONG dstreg = (opcode & 3584) >> 9;
                    210: {{     WORD src = regs.a[srcreg];
                    211: {      WORD dst = regs.d[dstreg];
                    212: {      ULONG newv = dst - src;
                    213: {      bool flgs = ((WORD)(src)) < 0;
                    214:        bool flgo = ((WORD)(dst)) < 0;
                    215:        bool flgn = ((WORD)(newv)) < 0;
                    216:        regs.z = ((WORD)(newv)) == 0;
                    217:        regs.v = (flgs != flgo) && (flgn != flgo);
                    218:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                    219:        regs.n = flgn != 0;
                    220: }}}}}}
                    221: void op_b050(UWORD opcode)
                    222: {
                    223:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    224:        ULONG dstreg = (opcode & 3584) >> 9;
                    225: {{     CPTR srca = regs.a[srcreg];
                    226:        WORD src = get_word(srca);
                    227: {      WORD dst = regs.d[dstreg];
                    228: {      ULONG newv = dst - src;
                    229: {      bool flgs = ((WORD)(src)) < 0;
                    230:        bool flgo = ((WORD)(dst)) < 0;
                    231:        bool flgn = ((WORD)(newv)) < 0;
                    232:        regs.z = ((WORD)(newv)) == 0;
                    233:        regs.v = (flgs != flgo) && (flgn != flgo);
                    234:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                    235:        regs.n = flgn != 0;
                    236: }}}}}}
                    237: void op_b058(UWORD opcode)
                    238: {
                    239:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    240:        ULONG dstreg = (opcode & 3584) >> 9;
                    241: {{     CPTR srca = regs.a[srcreg];
                    242:        WORD src = get_word(srca);
                    243: {      regs.a[srcreg] += 2;
                    244: {      WORD dst = regs.d[dstreg];
                    245: {      ULONG newv = dst - src;
                    246: {      bool flgs = ((WORD)(src)) < 0;
                    247:        bool flgo = ((WORD)(dst)) < 0;
                    248:        bool flgn = ((WORD)(newv)) < 0;
                    249:        regs.z = ((WORD)(newv)) == 0;
                    250:        regs.v = (flgs != flgo) && (flgn != flgo);
                    251:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                    252:        regs.n = flgn != 0;
                    253: }}}}}}}
                    254: void op_b060(UWORD opcode)
                    255: {
                    256:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    257:        ULONG dstreg = (opcode & 3584) >> 9;
                    258: {{     regs.a[srcreg] -= 2;
                    259: {      CPTR srca = regs.a[srcreg];
                    260:        WORD src = get_word(srca);
                    261: {      WORD dst = regs.d[dstreg];
                    262: {      ULONG newv = dst - src;
                    263: {      bool flgs = ((WORD)(src)) < 0;
                    264:        bool flgo = ((WORD)(dst)) < 0;
                    265:        bool flgn = ((WORD)(newv)) < 0;
                    266:        regs.z = ((WORD)(newv)) == 0;
                    267:        regs.v = (flgs != flgo) && (flgn != flgo);
                    268:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                    269:        regs.n = flgn != 0;
                    270: }}}}}}}
                    271: void op_b068(UWORD opcode)
                    272: {
                    273:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    274:        ULONG dstreg = (opcode & 3584) >> 9;
                    275: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
                    276:        WORD src = get_word(srca);
                    277: {      WORD dst = regs.d[dstreg];
                    278: {      ULONG newv = dst - src;
                    279: {      bool flgs = ((WORD)(src)) < 0;
                    280:        bool flgo = ((WORD)(dst)) < 0;
                    281:        bool flgn = ((WORD)(newv)) < 0;
                    282:        regs.z = ((WORD)(newv)) == 0;
                    283:        regs.v = (flgs != flgo) && (flgn != flgo);
                    284:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                    285:        regs.n = flgn != 0;
                    286: }}}}}}
                    287: void op_b070(UWORD opcode)
                    288: {
                    289:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    290:        ULONG dstreg = (opcode & 3584) >> 9;
                    291: {{     CPTR srca = regs.a[srcreg];
                    292:        UWORD srcdp = nextiword();
                    293:        srca += (LONG)(BYTE)(srcdp & 0xFF);
                    294: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
                    295:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
                    296:        srca += srcdpr;
                    297: {      WORD src = get_word(srca);
                    298: {      WORD dst = regs.d[dstreg];
                    299: {      ULONG newv = dst - src;
                    300: {      bool flgs = ((WORD)(src)) < 0;
                    301:        bool flgo = ((WORD)(dst)) < 0;
                    302:        bool flgn = ((WORD)(newv)) < 0;
                    303:        regs.z = ((WORD)(newv)) == 0;
                    304:        regs.v = (flgs != flgo) && (flgn != flgo);
                    305:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                    306:        regs.n = flgn != 0;
                    307: }}}}}}}}
                    308: void op_b078(UWORD opcode)
                    309: {
                    310:        ULONG dstreg = (opcode & 3584) >> 9;
                    311: {{     CPTR srca = (LONG)(WORD)nextiword();
                    312:        WORD src = get_word(srca);
                    313: {      WORD dst = regs.d[dstreg];
                    314: {      ULONG newv = dst - src;
                    315: {      bool flgs = ((WORD)(src)) < 0;
                    316:        bool flgo = ((WORD)(dst)) < 0;
                    317:        bool flgn = ((WORD)(newv)) < 0;
                    318:        regs.z = ((WORD)(newv)) == 0;
                    319:        regs.v = (flgs != flgo) && (flgn != flgo);
                    320:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                    321:        regs.n = flgn != 0;
                    322: }}}}}}
                    323: void op_b079(UWORD opcode)
                    324: {
                    325:        ULONG dstreg = (opcode & 3584) >> 9;
                    326: {{     CPTR srca = nextilong();
                    327:        WORD src = get_word(srca);
                    328: {      WORD dst = regs.d[dstreg];
                    329: {      ULONG newv = dst - src;
                    330: {      bool flgs = ((WORD)(src)) < 0;
                    331:        bool flgo = ((WORD)(dst)) < 0;
                    332:        bool flgn = ((WORD)(newv)) < 0;
                    333:        regs.z = ((WORD)(newv)) == 0;
                    334:        regs.v = (flgs != flgo) && (flgn != flgo);
                    335:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                    336:        regs.n = flgn != 0;
                    337: }}}}}}
                    338: void op_b07a(UWORD opcode)
                    339: {
                    340:        ULONG dstreg = (opcode & 3584) >> 9;
                    341: {{     CPTR srca = m68k_getpc();
                    342:        srca += (LONG)(WORD)nextiword();
                    343: {      WORD src = get_word(srca);
                    344: {      WORD dst = regs.d[dstreg];
                    345: {      ULONG newv = dst - src;
                    346: {      bool flgs = ((WORD)(src)) < 0;
                    347:        bool flgo = ((WORD)(dst)) < 0;
                    348:        bool flgn = ((WORD)(newv)) < 0;
                    349:        regs.z = ((WORD)(newv)) == 0;
                    350:        regs.v = (flgs != flgo) && (flgn != flgo);
                    351:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                    352:        regs.n = flgn != 0;
                    353: }}}}}}}
                    354: void op_b07b(UWORD opcode)
                    355: {
                    356:        ULONG dstreg = (opcode & 3584) >> 9;
                    357: {{     CPTR srca = m68k_getpc();
                    358:        UWORD srcdp = nextiword();
                    359:        srca += (LONG)(BYTE)(srcdp & 0xFF);
                    360: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
                    361:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
                    362:        srca += srcdpr;
                    363: {      WORD src = get_word(srca);
                    364: {      WORD dst = regs.d[dstreg];
                    365: {      ULONG newv = dst - src;
                    366: {      bool flgs = ((WORD)(src)) < 0;
                    367:        bool flgo = ((WORD)(dst)) < 0;
                    368:        bool flgn = ((WORD)(newv)) < 0;
                    369:        regs.z = ((WORD)(newv)) == 0;
                    370:        regs.v = (flgs != flgo) && (flgn != flgo);
                    371:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                    372:        regs.n = flgn != 0;
                    373: }}}}}}}}
                    374: void op_b07c(UWORD opcode)
                    375: {
                    376:        ULONG dstreg = (opcode & 3584) >> 9;
                    377: {{     WORD src = nextiword();
                    378: {      WORD dst = regs.d[dstreg];
                    379: {      ULONG newv = dst - src;
                    380: {      bool flgs = ((WORD)(src)) < 0;
                    381:        bool flgo = ((WORD)(dst)) < 0;
                    382:        bool flgn = ((WORD)(newv)) < 0;
                    383:        regs.z = ((WORD)(newv)) == 0;
                    384:        regs.v = (flgs != flgo) && (flgn != flgo);
                    385:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                    386:        regs.n = flgn != 0;
                    387: }}}}}}
                    388: void op_b080(UWORD opcode)
                    389: {
                    390:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    391:        ULONG dstreg = (opcode & 3584) >> 9;
                    392: {{     LONG src = regs.d[srcreg];
                    393: {      LONG dst = regs.d[dstreg];
                    394: {      ULONG newv = dst - src;
                    395: {      bool flgs = ((LONG)(src)) < 0;
                    396:        bool flgo = ((LONG)(dst)) < 0;
                    397:        bool flgn = ((LONG)(newv)) < 0;
                    398:        regs.z = ((LONG)(newv)) == 0;
                    399:        regs.v = (flgs != flgo) && (flgn != flgo);
                    400:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    401:        regs.n = flgn != 0;
                    402: }}}}}}
                    403: void op_b088(UWORD opcode)
                    404: {
                    405:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    406:        ULONG dstreg = (opcode & 3584) >> 9;
                    407: {{     LONG src = regs.a[srcreg];
                    408: {      LONG dst = regs.d[dstreg];
                    409: {      ULONG newv = dst - src;
                    410: {      bool flgs = ((LONG)(src)) < 0;
                    411:        bool flgo = ((LONG)(dst)) < 0;
                    412:        bool flgn = ((LONG)(newv)) < 0;
                    413:        regs.z = ((LONG)(newv)) == 0;
                    414:        regs.v = (flgs != flgo) && (flgn != flgo);
                    415:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    416:        regs.n = flgn != 0;
                    417: }}}}}}
                    418: void op_b090(UWORD opcode)
                    419: {
                    420:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    421:        ULONG dstreg = (opcode & 3584) >> 9;
                    422: {{     CPTR srca = regs.a[srcreg];
                    423:        LONG src = get_long(srca);
                    424: {      LONG dst = regs.d[dstreg];
                    425: {      ULONG newv = dst - src;
                    426: {      bool flgs = ((LONG)(src)) < 0;
                    427:        bool flgo = ((LONG)(dst)) < 0;
                    428:        bool flgn = ((LONG)(newv)) < 0;
                    429:        regs.z = ((LONG)(newv)) == 0;
                    430:        regs.v = (flgs != flgo) && (flgn != flgo);
                    431:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    432:        regs.n = flgn != 0;
                    433: }}}}}}
                    434: void op_b098(UWORD opcode)
                    435: {
                    436:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    437:        ULONG dstreg = (opcode & 3584) >> 9;
                    438: {{     CPTR srca = regs.a[srcreg];
                    439:        LONG src = get_long(srca);
                    440: {      regs.a[srcreg] += 4;
                    441: {      LONG dst = regs.d[dstreg];
                    442: {      ULONG newv = dst - src;
                    443: {      bool flgs = ((LONG)(src)) < 0;
                    444:        bool flgo = ((LONG)(dst)) < 0;
                    445:        bool flgn = ((LONG)(newv)) < 0;
                    446:        regs.z = ((LONG)(newv)) == 0;
                    447:        regs.v = (flgs != flgo) && (flgn != flgo);
                    448:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    449:        regs.n = flgn != 0;
                    450: }}}}}}}
                    451: void op_b0a0(UWORD opcode)
                    452: {
                    453:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    454:        ULONG dstreg = (opcode & 3584) >> 9;
                    455: {{     regs.a[srcreg] -= 4;
                    456: {      CPTR srca = regs.a[srcreg];
                    457:        LONG src = get_long(srca);
                    458: {      LONG dst = regs.d[dstreg];
                    459: {      ULONG newv = dst - src;
                    460: {      bool flgs = ((LONG)(src)) < 0;
                    461:        bool flgo = ((LONG)(dst)) < 0;
                    462:        bool flgn = ((LONG)(newv)) < 0;
                    463:        regs.z = ((LONG)(newv)) == 0;
                    464:        regs.v = (flgs != flgo) && (flgn != flgo);
                    465:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    466:        regs.n = flgn != 0;
                    467: }}}}}}}
                    468: void op_b0a8(UWORD opcode)
                    469: {
                    470:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    471:        ULONG dstreg = (opcode & 3584) >> 9;
                    472: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
                    473:        LONG src = get_long(srca);
                    474: {      LONG dst = regs.d[dstreg];
                    475: {      ULONG newv = dst - src;
                    476: {      bool flgs = ((LONG)(src)) < 0;
                    477:        bool flgo = ((LONG)(dst)) < 0;
                    478:        bool flgn = ((LONG)(newv)) < 0;
                    479:        regs.z = ((LONG)(newv)) == 0;
                    480:        regs.v = (flgs != flgo) && (flgn != flgo);
                    481:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    482:        regs.n = flgn != 0;
                    483: }}}}}}
                    484: void op_b0b0(UWORD opcode)
                    485: {
                    486:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    487:        ULONG dstreg = (opcode & 3584) >> 9;
                    488: {{     CPTR srca = regs.a[srcreg];
                    489:        UWORD srcdp = nextiword();
                    490:        srca += (LONG)(BYTE)(srcdp & 0xFF);
                    491: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
                    492:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
                    493:        srca += srcdpr;
                    494: {      LONG src = get_long(srca);
                    495: {      LONG dst = regs.d[dstreg];
                    496: {      ULONG newv = dst - src;
                    497: {      bool flgs = ((LONG)(src)) < 0;
                    498:        bool flgo = ((LONG)(dst)) < 0;
                    499:        bool flgn = ((LONG)(newv)) < 0;
                    500:        regs.z = ((LONG)(newv)) == 0;
                    501:        regs.v = (flgs != flgo) && (flgn != flgo);
                    502:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    503:        regs.n = flgn != 0;
                    504: }}}}}}}}
                    505: void op_b0b8(UWORD opcode)
                    506: {
                    507:        ULONG dstreg = (opcode & 3584) >> 9;
                    508: {{     CPTR srca = (LONG)(WORD)nextiword();
                    509:        LONG src = get_long(srca);
                    510: {      LONG dst = regs.d[dstreg];
                    511: {      ULONG newv = dst - src;
                    512: {      bool flgs = ((LONG)(src)) < 0;
                    513:        bool flgo = ((LONG)(dst)) < 0;
                    514:        bool flgn = ((LONG)(newv)) < 0;
                    515:        regs.z = ((LONG)(newv)) == 0;
                    516:        regs.v = (flgs != flgo) && (flgn != flgo);
                    517:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    518:        regs.n = flgn != 0;
                    519: }}}}}}
                    520: void op_b0b9(UWORD opcode)
                    521: {
                    522:        ULONG dstreg = (opcode & 3584) >> 9;
                    523: {{     CPTR srca = nextilong();
                    524:        LONG src = get_long(srca);
                    525: {      LONG dst = regs.d[dstreg];
                    526: {      ULONG newv = dst - src;
                    527: {      bool flgs = ((LONG)(src)) < 0;
                    528:        bool flgo = ((LONG)(dst)) < 0;
                    529:        bool flgn = ((LONG)(newv)) < 0;
                    530:        regs.z = ((LONG)(newv)) == 0;
                    531:        regs.v = (flgs != flgo) && (flgn != flgo);
                    532:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    533:        regs.n = flgn != 0;
                    534: }}}}}}
                    535: void op_b0ba(UWORD opcode)
                    536: {
                    537:        ULONG dstreg = (opcode & 3584) >> 9;
                    538: {{     CPTR srca = m68k_getpc();
                    539:        srca += (LONG)(WORD)nextiword();
                    540: {      LONG src = get_long(srca);
                    541: {      LONG dst = regs.d[dstreg];
                    542: {      ULONG newv = dst - src;
                    543: {      bool flgs = ((LONG)(src)) < 0;
                    544:        bool flgo = ((LONG)(dst)) < 0;
                    545:        bool flgn = ((LONG)(newv)) < 0;
                    546:        regs.z = ((LONG)(newv)) == 0;
                    547:        regs.v = (flgs != flgo) && (flgn != flgo);
                    548:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    549:        regs.n = flgn != 0;
                    550: }}}}}}}
                    551: void op_b0bb(UWORD opcode)
                    552: {
                    553:        ULONG dstreg = (opcode & 3584) >> 9;
                    554: {{     CPTR srca = m68k_getpc();
                    555:        UWORD srcdp = nextiword();
                    556:        srca += (LONG)(BYTE)(srcdp & 0xFF);
                    557: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
                    558:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
                    559:        srca += srcdpr;
                    560: {      LONG src = get_long(srca);
                    561: {      LONG dst = regs.d[dstreg];
                    562: {      ULONG newv = dst - src;
                    563: {      bool flgs = ((LONG)(src)) < 0;
                    564:        bool flgo = ((LONG)(dst)) < 0;
                    565:        bool flgn = ((LONG)(newv)) < 0;
                    566:        regs.z = ((LONG)(newv)) == 0;
                    567:        regs.v = (flgs != flgo) && (flgn != flgo);
                    568:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    569:        regs.n = flgn != 0;
                    570: }}}}}}}}
                    571: void op_b0bc(UWORD opcode)
                    572: {
                    573:        ULONG dstreg = (opcode & 3584) >> 9;
                    574: {{     LONG src = nextilong();
                    575: {      LONG dst = regs.d[dstreg];
                    576: {      ULONG newv = dst - src;
                    577: {      bool flgs = ((LONG)(src)) < 0;
                    578:        bool flgo = ((LONG)(dst)) < 0;
                    579:        bool flgn = ((LONG)(newv)) < 0;
                    580:        regs.z = ((LONG)(newv)) == 0;
                    581:        regs.v = (flgs != flgo) && (flgn != flgo);
                    582:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    583:        regs.n = flgn != 0;
                    584: }}}}}}
                    585: void op_b0c0(UWORD opcode)
                    586: {
                    587:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    588:        ULONG dstreg = (opcode & 3584) >> 9;
                    589: {{     WORD src = regs.d[srcreg];
                    590: {      LONG dst = regs.a[dstreg];
                    591: {      ULONG newv = dst - src;
                    592: {      bool flgs = ((LONG)(src)) < 0;
                    593:        bool flgo = ((LONG)(dst)) < 0;
                    594:        bool flgn = ((LONG)(newv)) < 0;
                    595:        regs.z = ((LONG)(newv)) == 0;
                    596:        regs.v = (flgs != flgo) && (flgn != flgo);
                    597:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    598:        regs.n = flgn != 0;
                    599: }}}}}}
                    600: void op_b0c8(UWORD opcode)
                    601: {
                    602:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    603:        ULONG dstreg = (opcode & 3584) >> 9;
                    604: {{     WORD src = regs.a[srcreg];
                    605: {      LONG dst = regs.a[dstreg];
                    606: {      ULONG newv = dst - src;
                    607: {      bool flgs = ((LONG)(src)) < 0;
                    608:        bool flgo = ((LONG)(dst)) < 0;
                    609:        bool flgn = ((LONG)(newv)) < 0;
                    610:        regs.z = ((LONG)(newv)) == 0;
                    611:        regs.v = (flgs != flgo) && (flgn != flgo);
                    612:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    613:        regs.n = flgn != 0;
                    614: }}}}}}
                    615: void op_b0d0(UWORD opcode)
                    616: {
                    617:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    618:        ULONG dstreg = (opcode & 3584) >> 9;
                    619: {{     CPTR srca = regs.a[srcreg];
                    620:        WORD src = get_word(srca);
                    621: {      LONG dst = regs.a[dstreg];
                    622: {      ULONG newv = dst - src;
                    623: {      bool flgs = ((LONG)(src)) < 0;
                    624:        bool flgo = ((LONG)(dst)) < 0;
                    625:        bool flgn = ((LONG)(newv)) < 0;
                    626:        regs.z = ((LONG)(newv)) == 0;
                    627:        regs.v = (flgs != flgo) && (flgn != flgo);
                    628:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    629:        regs.n = flgn != 0;
                    630: }}}}}}
                    631: void op_b0d8(UWORD opcode)
                    632: {
                    633:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    634:        ULONG dstreg = (opcode & 3584) >> 9;
                    635: {{     CPTR srca = regs.a[srcreg];
                    636:        WORD src = get_word(srca);
                    637: {      regs.a[srcreg] += 2;
                    638: {      LONG dst = regs.a[dstreg];
                    639: {      ULONG newv = dst - src;
                    640: {      bool flgs = ((LONG)(src)) < 0;
                    641:        bool flgo = ((LONG)(dst)) < 0;
                    642:        bool flgn = ((LONG)(newv)) < 0;
                    643:        regs.z = ((LONG)(newv)) == 0;
                    644:        regs.v = (flgs != flgo) && (flgn != flgo);
                    645:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    646:        regs.n = flgn != 0;
                    647: }}}}}}}
                    648: void op_b0e0(UWORD opcode)
                    649: {
                    650:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    651:        ULONG dstreg = (opcode & 3584) >> 9;
                    652: {{     regs.a[srcreg] -= 2;
                    653: {      CPTR srca = regs.a[srcreg];
                    654:        WORD src = get_word(srca);
                    655: {      LONG dst = regs.a[dstreg];
                    656: {      ULONG newv = dst - src;
                    657: {      bool flgs = ((LONG)(src)) < 0;
                    658:        bool flgo = ((LONG)(dst)) < 0;
                    659:        bool flgn = ((LONG)(newv)) < 0;
                    660:        regs.z = ((LONG)(newv)) == 0;
                    661:        regs.v = (flgs != flgo) && (flgn != flgo);
                    662:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    663:        regs.n = flgn != 0;
                    664: }}}}}}}
                    665: void op_b0e8(UWORD opcode)
                    666: {
                    667:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    668:        ULONG dstreg = (opcode & 3584) >> 9;
                    669: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
                    670:        WORD src = get_word(srca);
                    671: {      LONG dst = regs.a[dstreg];
                    672: {      ULONG newv = dst - src;
                    673: {      bool flgs = ((LONG)(src)) < 0;
                    674:        bool flgo = ((LONG)(dst)) < 0;
                    675:        bool flgn = ((LONG)(newv)) < 0;
                    676:        regs.z = ((LONG)(newv)) == 0;
                    677:        regs.v = (flgs != flgo) && (flgn != flgo);
                    678:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    679:        regs.n = flgn != 0;
                    680: }}}}}}
                    681: void op_b0f0(UWORD opcode)
                    682: {
                    683:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    684:        ULONG dstreg = (opcode & 3584) >> 9;
                    685: {{     CPTR srca = regs.a[srcreg];
                    686:        UWORD srcdp = nextiword();
                    687:        srca += (LONG)(BYTE)(srcdp & 0xFF);
                    688: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
                    689:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
                    690:        srca += srcdpr;
                    691: {      WORD src = get_word(srca);
                    692: {      LONG dst = regs.a[dstreg];
                    693: {      ULONG newv = dst - src;
                    694: {      bool flgs = ((LONG)(src)) < 0;
                    695:        bool flgo = ((LONG)(dst)) < 0;
                    696:        bool flgn = ((LONG)(newv)) < 0;
                    697:        regs.z = ((LONG)(newv)) == 0;
                    698:        regs.v = (flgs != flgo) && (flgn != flgo);
                    699:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    700:        regs.n = flgn != 0;
                    701: }}}}}}}}
                    702: void op_b0f8(UWORD opcode)
                    703: {
                    704:        ULONG dstreg = (opcode & 3584) >> 9;
                    705: {{     CPTR srca = (LONG)(WORD)nextiword();
                    706:        WORD src = get_word(srca);
                    707: {      LONG dst = regs.a[dstreg];
                    708: {      ULONG newv = dst - src;
                    709: {      bool flgs = ((LONG)(src)) < 0;
                    710:        bool flgo = ((LONG)(dst)) < 0;
                    711:        bool flgn = ((LONG)(newv)) < 0;
                    712:        regs.z = ((LONG)(newv)) == 0;
                    713:        regs.v = (flgs != flgo) && (flgn != flgo);
                    714:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    715:        regs.n = flgn != 0;
                    716: }}}}}}
                    717: void op_b0f9(UWORD opcode)
                    718: {
                    719:        ULONG dstreg = (opcode & 3584) >> 9;
                    720: {{     CPTR srca = nextilong();
                    721:        WORD src = get_word(srca);
                    722: {      LONG dst = regs.a[dstreg];
                    723: {      ULONG newv = dst - src;
                    724: {      bool flgs = ((LONG)(src)) < 0;
                    725:        bool flgo = ((LONG)(dst)) < 0;
                    726:        bool flgn = ((LONG)(newv)) < 0;
                    727:        regs.z = ((LONG)(newv)) == 0;
                    728:        regs.v = (flgs != flgo) && (flgn != flgo);
                    729:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    730:        regs.n = flgn != 0;
                    731: }}}}}}
                    732: void op_b0fa(UWORD opcode)
                    733: {
                    734:        ULONG dstreg = (opcode & 3584) >> 9;
                    735: {{     CPTR srca = m68k_getpc();
                    736:        srca += (LONG)(WORD)nextiword();
                    737: {      WORD src = get_word(srca);
                    738: {      LONG dst = regs.a[dstreg];
                    739: {      ULONG newv = dst - src;
                    740: {      bool flgs = ((LONG)(src)) < 0;
                    741:        bool flgo = ((LONG)(dst)) < 0;
                    742:        bool flgn = ((LONG)(newv)) < 0;
                    743:        regs.z = ((LONG)(newv)) == 0;
                    744:        regs.v = (flgs != flgo) && (flgn != flgo);
                    745:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    746:        regs.n = flgn != 0;
                    747: }}}}}}}
                    748: void op_b0fb(UWORD opcode)
                    749: {
                    750:        ULONG dstreg = (opcode & 3584) >> 9;
                    751: {{     CPTR srca = m68k_getpc();
                    752:        UWORD srcdp = nextiword();
                    753:        srca += (LONG)(BYTE)(srcdp & 0xFF);
                    754: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
                    755:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
                    756:        srca += srcdpr;
                    757: {      WORD src = get_word(srca);
                    758: {      LONG dst = regs.a[dstreg];
                    759: {      ULONG newv = dst - src;
                    760: {      bool flgs = ((LONG)(src)) < 0;
                    761:        bool flgo = ((LONG)(dst)) < 0;
                    762:        bool flgn = ((LONG)(newv)) < 0;
                    763:        regs.z = ((LONG)(newv)) == 0;
                    764:        regs.v = (flgs != flgo) && (flgn != flgo);
                    765:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    766:        regs.n = flgn != 0;
                    767: }}}}}}}}
                    768: void op_b0fc(UWORD opcode)
                    769: {
                    770:        ULONG dstreg = (opcode & 3584) >> 9;
                    771: {{     WORD src = nextiword();
                    772: {      LONG dst = regs.a[dstreg];
                    773: {      ULONG newv = dst - src;
                    774: {      bool flgs = ((LONG)(src)) < 0;
                    775:        bool flgo = ((LONG)(dst)) < 0;
                    776:        bool flgn = ((LONG)(newv)) < 0;
                    777:        regs.z = ((LONG)(newv)) == 0;
                    778:        regs.v = (flgs != flgo) && (flgn != flgo);
                    779:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                    780:        regs.n = flgn != 0;
                    781: }}}}}}
                    782: void op_b100(UWORD opcode)
                    783: {
                    784:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    785:        ULONG dstreg = (opcode & 7) >> 0;
                    786: {{     BYTE src = regs.d[srcreg];
                    787: {      BYTE dst = regs.d[dstreg];
                    788:        src ^= dst;
                    789:        regs.v = regs.c = 0;
                    790:        regs.z = ((BYTE)(src)) == 0;
                    791:        regs.n = ((BYTE)(src)) < 0;
                    792:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
                    793: }}}}
                    794: void op_b108(UWORD opcode)
                    795: {
                    796:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    797:        ULONG dstreg = (opcode & 3584) >> 9;
                    798: {{     CPTR srca = regs.a[srcreg];
                    799:        BYTE src = get_byte(srca);
                    800: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
                    801: {      CPTR dsta = regs.a[dstreg];
                    802:        BYTE dst = get_byte(dsta);
                    803: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                    804: {      ULONG newv = dst - src;
                    805: {      bool flgs = ((BYTE)(src)) < 0;
                    806:        bool flgo = ((BYTE)(dst)) < 0;
                    807:        bool flgn = ((BYTE)(newv)) < 0;
                    808:        regs.z = ((BYTE)(newv)) == 0;
                    809:        regs.v = (flgs != flgo) && (flgn != flgo);
                    810:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                    811:        regs.n = flgn != 0;
                    812: }}}}}}}}
                    813: void op_b110(UWORD opcode)
                    814: {
                    815:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    816:        ULONG dstreg = (opcode & 7) >> 0;
                    817: {{     BYTE src = regs.d[srcreg];
                    818: {      CPTR dsta = regs.a[dstreg];
                    819:        BYTE dst = get_byte(dsta);
                    820:        src ^= dst;
                    821:        regs.v = regs.c = 0;
                    822:        regs.z = ((BYTE)(src)) == 0;
                    823:        regs.n = ((BYTE)(src)) < 0;
                    824:        put_byte(dsta,src);
                    825: }}}}
                    826: void op_b118(UWORD opcode)
                    827: {
                    828:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    829:        ULONG dstreg = (opcode & 7) >> 0;
                    830: {{     BYTE src = regs.d[srcreg];
                    831: {      CPTR dsta = regs.a[dstreg];
                    832:        BYTE dst = get_byte(dsta);
                    833: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                    834:        src ^= dst;
                    835:        regs.v = regs.c = 0;
                    836:        regs.z = ((BYTE)(src)) == 0;
                    837:        regs.n = ((BYTE)(src)) < 0;
                    838:        put_byte(dsta,src);
                    839: }}}}}
                    840: void op_b120(UWORD opcode)
                    841: {
                    842:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    843:        ULONG dstreg = (opcode & 7) >> 0;
                    844: {{     BYTE src = regs.d[srcreg];
                    845: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                    846: {      CPTR dsta = regs.a[dstreg];
                    847:        BYTE dst = get_byte(dsta);
                    848:        src ^= dst;
                    849:        regs.v = regs.c = 0;
                    850:        regs.z = ((BYTE)(src)) == 0;
                    851:        regs.n = ((BYTE)(src)) < 0;
                    852:        put_byte(dsta,src);
                    853: }}}}}
                    854: void op_b128(UWORD opcode)
                    855: {
                    856:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    857:        ULONG dstreg = (opcode & 7) >> 0;
                    858: {{     BYTE src = regs.d[srcreg];
                    859: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                    860:        BYTE dst = get_byte(dsta);
                    861:        src ^= dst;
                    862:        regs.v = regs.c = 0;
                    863:        regs.z = ((BYTE)(src)) == 0;
                    864:        regs.n = ((BYTE)(src)) < 0;
                    865:        put_byte(dsta,src);
                    866: }}}}
                    867: void op_b130(UWORD opcode)
                    868: {
                    869:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    870:        ULONG dstreg = (opcode & 7) >> 0;
                    871: {{     BYTE src = regs.d[srcreg];
                    872: {      CPTR dsta = regs.a[dstreg];
                    873:        UWORD dstdp = nextiword();
                    874:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                    875: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                    876:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                    877:        dsta += dstdpr;
                    878: {      BYTE dst = get_byte(dsta);
                    879:        src ^= dst;
                    880:        regs.v = regs.c = 0;
                    881:        regs.z = ((BYTE)(src)) == 0;
                    882:        regs.n = ((BYTE)(src)) < 0;
                    883:        put_byte(dsta,src);
                    884: }}}}}}
                    885: void op_b138(UWORD opcode)
                    886: {
                    887:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    888: {{     BYTE src = regs.d[srcreg];
                    889: {      CPTR dsta = (LONG)(WORD)nextiword();
                    890:        BYTE dst = get_byte(dsta);
                    891:        src ^= dst;
                    892:        regs.v = regs.c = 0;
                    893:        regs.z = ((BYTE)(src)) == 0;
                    894:        regs.n = ((BYTE)(src)) < 0;
                    895:        put_byte(dsta,src);
                    896: }}}}
                    897: void op_b139(UWORD opcode)
                    898: {
                    899:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    900: {{     BYTE src = regs.d[srcreg];
                    901: {      CPTR dsta = nextilong();
                    902:        BYTE dst = get_byte(dsta);
                    903:        src ^= dst;
                    904:        regs.v = regs.c = 0;
                    905:        regs.z = ((BYTE)(src)) == 0;
                    906:        regs.n = ((BYTE)(src)) < 0;
                    907:        put_byte(dsta,src);
                    908: }}}}
                    909: void op_b140(UWORD opcode)
                    910: {
                    911:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    912:        ULONG dstreg = (opcode & 7) >> 0;
                    913: {{     WORD src = regs.d[srcreg];
                    914: {      WORD dst = regs.d[dstreg];
                    915:        src ^= dst;
                    916:        regs.v = regs.c = 0;
                    917:        regs.z = ((WORD)(src)) == 0;
                    918:        regs.n = ((WORD)(src)) < 0;
                    919:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
                    920: }}}}
                    921: void op_b148(UWORD opcode)
                    922: {
                    923:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                    924:        ULONG dstreg = (opcode & 3584) >> 9;
                    925: {{     CPTR srca = regs.a[srcreg];
                    926:        WORD src = get_word(srca);
                    927: {      regs.a[srcreg] += 2;
                    928: {      CPTR dsta = regs.a[dstreg];
                    929:        WORD dst = get_word(dsta);
                    930: {      regs.a[dstreg] += 2;
                    931: {      ULONG newv = dst - src;
                    932: {      bool flgs = ((WORD)(src)) < 0;
                    933:        bool flgo = ((WORD)(dst)) < 0;
                    934:        bool flgn = ((WORD)(newv)) < 0;
                    935:        regs.z = ((WORD)(newv)) == 0;
                    936:        regs.v = (flgs != flgo) && (flgn != flgo);
                    937:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                    938:        regs.n = flgn != 0;
                    939: }}}}}}}}
                    940: void op_b150(UWORD opcode)
                    941: {
                    942:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    943:        ULONG dstreg = (opcode & 7) >> 0;
                    944: {{     WORD src = regs.d[srcreg];
                    945: {      CPTR dsta = regs.a[dstreg];
                    946:        WORD dst = get_word(dsta);
                    947:        src ^= dst;
                    948:        regs.v = regs.c = 0;
                    949:        regs.z = ((WORD)(src)) == 0;
                    950:        regs.n = ((WORD)(src)) < 0;
                    951:        put_word(dsta,src);
                    952: }}}}
                    953: void op_b158(UWORD opcode)
                    954: {
                    955:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    956:        ULONG dstreg = (opcode & 7) >> 0;
                    957: {{     WORD src = regs.d[srcreg];
                    958: {      CPTR dsta = regs.a[dstreg];
                    959:        WORD dst = get_word(dsta);
                    960: {      regs.a[dstreg] += 2;
                    961:        src ^= dst;
                    962:        regs.v = regs.c = 0;
                    963:        regs.z = ((WORD)(src)) == 0;
                    964:        regs.n = ((WORD)(src)) < 0;
                    965:        put_word(dsta,src);
                    966: }}}}}
                    967: void op_b160(UWORD opcode)
                    968: {
                    969:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    970:        ULONG dstreg = (opcode & 7) >> 0;
                    971: {{     WORD src = regs.d[srcreg];
                    972: {      regs.a[dstreg] -= 2;
                    973: {      CPTR dsta = regs.a[dstreg];
                    974:        WORD dst = get_word(dsta);
                    975:        src ^= dst;
                    976:        regs.v = regs.c = 0;
                    977:        regs.z = ((WORD)(src)) == 0;
                    978:        regs.n = ((WORD)(src)) < 0;
                    979:        put_word(dsta,src);
                    980: }}}}}
                    981: void op_b168(UWORD opcode)
                    982: {
                    983:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    984:        ULONG dstreg = (opcode & 7) >> 0;
                    985: {{     WORD src = regs.d[srcreg];
                    986: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                    987:        WORD dst = get_word(dsta);
                    988:        src ^= dst;
                    989:        regs.v = regs.c = 0;
                    990:        regs.z = ((WORD)(src)) == 0;
                    991:        regs.n = ((WORD)(src)) < 0;
                    992:        put_word(dsta,src);
                    993: }}}}
                    994: void op_b170(UWORD opcode)
                    995: {
                    996:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    997:        ULONG dstreg = (opcode & 7) >> 0;
                    998: {{     WORD src = regs.d[srcreg];
                    999: {      CPTR dsta = regs.a[dstreg];
                   1000:        UWORD dstdp = nextiword();
                   1001:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   1002: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   1003:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   1004:        dsta += dstdpr;
                   1005: {      WORD dst = get_word(dsta);
                   1006:        src ^= dst;
                   1007:        regs.v = regs.c = 0;
                   1008:        regs.z = ((WORD)(src)) == 0;
                   1009:        regs.n = ((WORD)(src)) < 0;
                   1010:        put_word(dsta,src);
                   1011: }}}}}}
                   1012: void op_b178(UWORD opcode)
                   1013: {
                   1014:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                   1015: {{     WORD src = regs.d[srcreg];
                   1016: {      CPTR dsta = (LONG)(WORD)nextiword();
                   1017:        WORD dst = get_word(dsta);
                   1018:        src ^= dst;
                   1019:        regs.v = regs.c = 0;
                   1020:        regs.z = ((WORD)(src)) == 0;
                   1021:        regs.n = ((WORD)(src)) < 0;
                   1022:        put_word(dsta,src);
                   1023: }}}}
                   1024: void op_b179(UWORD opcode)
                   1025: {
                   1026:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                   1027: {{     WORD src = regs.d[srcreg];
                   1028: {      CPTR dsta = nextilong();
                   1029:        WORD dst = get_word(dsta);
                   1030:        src ^= dst;
                   1031:        regs.v = regs.c = 0;
                   1032:        regs.z = ((WORD)(src)) == 0;
                   1033:        regs.n = ((WORD)(src)) < 0;
                   1034:        put_word(dsta,src);
                   1035: }}}}
                   1036: void op_b180(UWORD opcode)
                   1037: {
                   1038:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                   1039:        ULONG dstreg = (opcode & 7) >> 0;
                   1040: {{     LONG src = regs.d[srcreg];
                   1041: {      LONG dst = regs.d[dstreg];
                   1042:        src ^= dst;
                   1043:        regs.v = regs.c = 0;
                   1044:        regs.z = ((LONG)(src)) == 0;
                   1045:        regs.n = ((LONG)(src)) < 0;
                   1046:        regs.d[dstreg] = (src);
                   1047: }}}}
                   1048: void op_b188(UWORD opcode)
                   1049: {
                   1050:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                   1051:        ULONG dstreg = (opcode & 3584) >> 9;
                   1052: {{     CPTR srca = regs.a[srcreg];
                   1053:        LONG src = get_long(srca);
                   1054: {      regs.a[srcreg] += 4;
                   1055: {      CPTR dsta = regs.a[dstreg];
                   1056:        LONG dst = get_long(dsta);
                   1057: {      regs.a[dstreg] += 4;
                   1058: {      ULONG newv = dst - src;
                   1059: {      bool flgs = ((LONG)(src)) < 0;
                   1060:        bool flgo = ((LONG)(dst)) < 0;
                   1061:        bool flgn = ((LONG)(newv)) < 0;
                   1062:        regs.z = ((LONG)(newv)) == 0;
                   1063:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1064:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   1065:        regs.n = flgn != 0;
                   1066: }}}}}}}}
                   1067: void op_b190(UWORD opcode)
                   1068: {
                   1069:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                   1070:        ULONG dstreg = (opcode & 7) >> 0;
                   1071: {{     LONG src = regs.d[srcreg];
                   1072: {      CPTR dsta = regs.a[dstreg];
                   1073:        LONG dst = get_long(dsta);
                   1074:        src ^= dst;
                   1075:        regs.v = regs.c = 0;
                   1076:        regs.z = ((LONG)(src)) == 0;
                   1077:        regs.n = ((LONG)(src)) < 0;
                   1078:        put_long(dsta,src);
                   1079: }}}}
                   1080: void op_b198(UWORD opcode)
                   1081: {
                   1082:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                   1083:        ULONG dstreg = (opcode & 7) >> 0;
                   1084: {{     LONG src = regs.d[srcreg];
                   1085: {      CPTR dsta = regs.a[dstreg];
                   1086:        LONG dst = get_long(dsta);
                   1087: {      regs.a[dstreg] += 4;
                   1088:        src ^= dst;
                   1089:        regs.v = regs.c = 0;
                   1090:        regs.z = ((LONG)(src)) == 0;
                   1091:        regs.n = ((LONG)(src)) < 0;
                   1092:        put_long(dsta,src);
                   1093: }}}}}
                   1094: void op_b1a0(UWORD opcode)
                   1095: {
                   1096:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                   1097:        ULONG dstreg = (opcode & 7) >> 0;
                   1098: {{     LONG src = regs.d[srcreg];
                   1099: {      regs.a[dstreg] -= 4;
                   1100: {      CPTR dsta = regs.a[dstreg];
                   1101:        LONG dst = get_long(dsta);
                   1102:        src ^= dst;
                   1103:        regs.v = regs.c = 0;
                   1104:        regs.z = ((LONG)(src)) == 0;
                   1105:        regs.n = ((LONG)(src)) < 0;
                   1106:        put_long(dsta,src);
                   1107: }}}}}
                   1108: void op_b1a8(UWORD opcode)
                   1109: {
                   1110:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                   1111:        ULONG dstreg = (opcode & 7) >> 0;
                   1112: {{     LONG src = regs.d[srcreg];
                   1113: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   1114:        LONG dst = get_long(dsta);
                   1115:        src ^= dst;
                   1116:        regs.v = regs.c = 0;
                   1117:        regs.z = ((LONG)(src)) == 0;
                   1118:        regs.n = ((LONG)(src)) < 0;
                   1119:        put_long(dsta,src);
                   1120: }}}}
                   1121: void op_b1b0(UWORD opcode)
                   1122: {
                   1123:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                   1124:        ULONG dstreg = (opcode & 7) >> 0;
                   1125: {{     LONG src = regs.d[srcreg];
                   1126: {      CPTR dsta = regs.a[dstreg];
                   1127:        UWORD dstdp = nextiword();
                   1128:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   1129: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   1130:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   1131:        dsta += dstdpr;
                   1132: {      LONG dst = get_long(dsta);
                   1133:        src ^= dst;
                   1134:        regs.v = regs.c = 0;
                   1135:        regs.z = ((LONG)(src)) == 0;
                   1136:        regs.n = ((LONG)(src)) < 0;
                   1137:        put_long(dsta,src);
                   1138: }}}}}}
                   1139: void op_b1b8(UWORD opcode)
                   1140: {
                   1141:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                   1142: {{     LONG src = regs.d[srcreg];
                   1143: {      CPTR dsta = (LONG)(WORD)nextiword();
                   1144:        LONG dst = get_long(dsta);
                   1145:        src ^= dst;
                   1146:        regs.v = regs.c = 0;
                   1147:        regs.z = ((LONG)(src)) == 0;
                   1148:        regs.n = ((LONG)(src)) < 0;
                   1149:        put_long(dsta,src);
                   1150: }}}}
                   1151: void op_b1b9(UWORD opcode)
                   1152: {
                   1153:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                   1154: {{     LONG src = regs.d[srcreg];
                   1155: {      CPTR dsta = nextilong();
                   1156:        LONG dst = get_long(dsta);
                   1157:        src ^= dst;
                   1158:        regs.v = regs.c = 0;
                   1159:        regs.z = ((LONG)(src)) == 0;
                   1160:        regs.n = ((LONG)(src)) < 0;
                   1161:        put_long(dsta,src);
                   1162: }}}}
                   1163: void op_b1c0(UWORD opcode)
                   1164: {
                   1165:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                   1166:        ULONG dstreg = (opcode & 3584) >> 9;
                   1167: {{     LONG src = regs.d[srcreg];
                   1168: {      LONG dst = regs.a[dstreg];
                   1169: {      ULONG newv = dst - src;
                   1170: {      bool flgs = ((LONG)(src)) < 0;
                   1171:        bool flgo = ((LONG)(dst)) < 0;
                   1172:        bool flgn = ((LONG)(newv)) < 0;
                   1173:        regs.z = ((LONG)(newv)) == 0;
                   1174:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1175:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   1176:        regs.n = flgn != 0;
                   1177: }}}}}}
                   1178: void op_b1c8(UWORD opcode)
                   1179: {
                   1180:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                   1181:        ULONG dstreg = (opcode & 3584) >> 9;
                   1182: {{     LONG src = regs.a[srcreg];
                   1183: {      LONG dst = regs.a[dstreg];
                   1184: {      ULONG newv = dst - src;
                   1185: {      bool flgs = ((LONG)(src)) < 0;
                   1186:        bool flgo = ((LONG)(dst)) < 0;
                   1187:        bool flgn = ((LONG)(newv)) < 0;
                   1188:        regs.z = ((LONG)(newv)) == 0;
                   1189:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1190:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   1191:        regs.n = flgn != 0;
                   1192: }}}}}}
                   1193: void op_b1d0(UWORD opcode)
                   1194: {
                   1195:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                   1196:        ULONG dstreg = (opcode & 3584) >> 9;
                   1197: {{     CPTR srca = regs.a[srcreg];
                   1198:        LONG src = get_long(srca);
                   1199: {      LONG dst = regs.a[dstreg];
                   1200: {      ULONG newv = dst - src;
                   1201: {      bool flgs = ((LONG)(src)) < 0;
                   1202:        bool flgo = ((LONG)(dst)) < 0;
                   1203:        bool flgn = ((LONG)(newv)) < 0;
                   1204:        regs.z = ((LONG)(newv)) == 0;
                   1205:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1206:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   1207:        regs.n = flgn != 0;
                   1208: }}}}}}
                   1209: void op_b1d8(UWORD opcode)
                   1210: {
                   1211:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                   1212:        ULONG dstreg = (opcode & 3584) >> 9;
                   1213: {{     CPTR srca = regs.a[srcreg];
                   1214:        LONG src = get_long(srca);
                   1215: {      regs.a[srcreg] += 4;
                   1216: {      LONG dst = regs.a[dstreg];
                   1217: {      ULONG newv = dst - src;
                   1218: {      bool flgs = ((LONG)(src)) < 0;
                   1219:        bool flgo = ((LONG)(dst)) < 0;
                   1220:        bool flgn = ((LONG)(newv)) < 0;
                   1221:        regs.z = ((LONG)(newv)) == 0;
                   1222:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1223:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   1224:        regs.n = flgn != 0;
                   1225: }}}}}}}
                   1226: void op_b1e0(UWORD opcode)
                   1227: {
                   1228:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                   1229:        ULONG dstreg = (opcode & 3584) >> 9;
                   1230: {{     regs.a[srcreg] -= 4;
                   1231: {      CPTR srca = regs.a[srcreg];
                   1232:        LONG src = get_long(srca);
                   1233: {      LONG dst = regs.a[dstreg];
                   1234: {      ULONG newv = dst - src;
                   1235: {      bool flgs = ((LONG)(src)) < 0;
                   1236:        bool flgo = ((LONG)(dst)) < 0;
                   1237:        bool flgn = ((LONG)(newv)) < 0;
                   1238:        regs.z = ((LONG)(newv)) == 0;
                   1239:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1240:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   1241:        regs.n = flgn != 0;
                   1242: }}}}}}}
                   1243: void op_b1e8(UWORD opcode)
                   1244: {
                   1245:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                   1246:        ULONG dstreg = (opcode & 3584) >> 9;
                   1247: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
                   1248:        LONG src = get_long(srca);
                   1249: {      LONG dst = regs.a[dstreg];
                   1250: {      ULONG newv = dst - src;
                   1251: {      bool flgs = ((LONG)(src)) < 0;
                   1252:        bool flgo = ((LONG)(dst)) < 0;
                   1253:        bool flgn = ((LONG)(newv)) < 0;
                   1254:        regs.z = ((LONG)(newv)) == 0;
                   1255:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1256:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   1257:        regs.n = flgn != 0;
                   1258: }}}}}}
                   1259: void op_b1f0(UWORD opcode)
                   1260: {
                   1261:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
                   1262:        ULONG dstreg = (opcode & 3584) >> 9;
                   1263: {{     CPTR srca = regs.a[srcreg];
                   1264:        UWORD srcdp = nextiword();
                   1265:        srca += (LONG)(BYTE)(srcdp & 0xFF);
                   1266: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
                   1267:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
                   1268:        srca += srcdpr;
                   1269: {      LONG src = get_long(srca);
                   1270: {      LONG dst = regs.a[dstreg];
                   1271: {      ULONG newv = dst - src;
                   1272: {      bool flgs = ((LONG)(src)) < 0;
                   1273:        bool flgo = ((LONG)(dst)) < 0;
                   1274:        bool flgn = ((LONG)(newv)) < 0;
                   1275:        regs.z = ((LONG)(newv)) == 0;
                   1276:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1277:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   1278:        regs.n = flgn != 0;
                   1279: }}}}}}}}
                   1280: void op_b1f8(UWORD opcode)
                   1281: {
                   1282:        ULONG dstreg = (opcode & 3584) >> 9;
                   1283: {{     CPTR srca = (LONG)(WORD)nextiword();
                   1284:        LONG src = get_long(srca);
                   1285: {      LONG dst = regs.a[dstreg];
                   1286: {      ULONG newv = dst - src;
                   1287: {      bool flgs = ((LONG)(src)) < 0;
                   1288:        bool flgo = ((LONG)(dst)) < 0;
                   1289:        bool flgn = ((LONG)(newv)) < 0;
                   1290:        regs.z = ((LONG)(newv)) == 0;
                   1291:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1292:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   1293:        regs.n = flgn != 0;
                   1294: }}}}}}
                   1295: void op_b1f9(UWORD opcode)
                   1296: {
                   1297:        ULONG dstreg = (opcode & 3584) >> 9;
                   1298: {{     CPTR srca = nextilong();
                   1299:        LONG src = get_long(srca);
                   1300: {      LONG dst = regs.a[dstreg];
                   1301: {      ULONG newv = dst - src;
                   1302: {      bool flgs = ((LONG)(src)) < 0;
                   1303:        bool flgo = ((LONG)(dst)) < 0;
                   1304:        bool flgn = ((LONG)(newv)) < 0;
                   1305:        regs.z = ((LONG)(newv)) == 0;
                   1306:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1307:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   1308:        regs.n = flgn != 0;
                   1309: }}}}}}
                   1310: void op_b1fa(UWORD opcode)
                   1311: {
                   1312:        ULONG dstreg = (opcode & 3584) >> 9;
                   1313: {{     CPTR srca = m68k_getpc();
                   1314:        srca += (LONG)(WORD)nextiword();
                   1315: {      LONG src = get_long(srca);
                   1316: {      LONG dst = regs.a[dstreg];
                   1317: {      ULONG newv = dst - src;
                   1318: {      bool flgs = ((LONG)(src)) < 0;
                   1319:        bool flgo = ((LONG)(dst)) < 0;
                   1320:        bool flgn = ((LONG)(newv)) < 0;
                   1321:        regs.z = ((LONG)(newv)) == 0;
                   1322:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1323:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   1324:        regs.n = flgn != 0;
                   1325: }}}}}}}
                   1326: void op_b1fb(UWORD opcode)
                   1327: {
                   1328:        ULONG dstreg = (opcode & 3584) >> 9;
                   1329: {{     CPTR srca = m68k_getpc();
                   1330:        UWORD srcdp = nextiword();
                   1331:        srca += (LONG)(BYTE)(srcdp & 0xFF);
                   1332: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
                   1333:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
                   1334:        srca += srcdpr;
                   1335: {      LONG src = get_long(srca);
                   1336: {      LONG dst = regs.a[dstreg];
                   1337: {      ULONG newv = dst - src;
                   1338: {      bool flgs = ((LONG)(src)) < 0;
                   1339:        bool flgo = ((LONG)(dst)) < 0;
                   1340:        bool flgn = ((LONG)(newv)) < 0;
                   1341:        regs.z = ((LONG)(newv)) == 0;
                   1342:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1343:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   1344:        regs.n = flgn != 0;
                   1345: }}}}}}}}
                   1346: void op_b1fc(UWORD opcode)
                   1347: {
                   1348:        ULONG dstreg = (opcode & 3584) >> 9;
                   1349: {{     LONG src = nextilong();
                   1350: {      LONG dst = regs.a[dstreg];
                   1351: {      ULONG newv = dst - src;
                   1352: {      bool flgs = ((LONG)(src)) < 0;
                   1353:        bool flgo = ((LONG)(dst)) < 0;
                   1354:        bool flgn = ((LONG)(newv)) < 0;
                   1355:        regs.z = ((LONG)(newv)) == 0;
                   1356:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1357:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   1358:        regs.n = flgn != 0;
                   1359: }}}}}}

unix.superglobalmegacorp.com

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