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

unix.superglobalmegacorp.com

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