Annotation of uae/CPU Sources/cpu0.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: 
                     10: void op_0(UWORD opcode)
                     11: {
                     12:        ULONG dstreg = (opcode & 7) >> 0;
                     13: {{     BYTE src = nextiword();
                     14: {      BYTE dst = regs.d[dstreg];
                     15:        src |= dst;
                     16:        regs.v = regs.c = 0;
                     17:        regs.z = ((BYTE)(src)) == 0;
                     18:        regs.n = ((BYTE)(src)) < 0;
                     19:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
                     20: }}}}
                     21: void op_10(UWORD opcode)
                     22: {
                     23:        ULONG dstreg = (opcode & 7) >> 0;
                     24: {{     BYTE src = nextiword();
                     25: {      CPTR dsta = regs.a[dstreg];
                     26:        BYTE dst = get_byte(dsta);
                     27:        src |= dst;
                     28:        regs.v = regs.c = 0;
                     29:        regs.z = ((BYTE)(src)) == 0;
                     30:        regs.n = ((BYTE)(src)) < 0;
                     31:        put_byte(dsta,src);
                     32: }}}}
                     33: void op_18(UWORD opcode)
                     34: {
                     35:        ULONG dstreg = (opcode & 7) >> 0;
                     36: {{     BYTE src = nextiword();
                     37: {      CPTR dsta = regs.a[dstreg];
                     38:        BYTE dst = get_byte(dsta);
                     39: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                     40:        src |= dst;
                     41:        regs.v = regs.c = 0;
                     42:        regs.z = ((BYTE)(src)) == 0;
                     43:        regs.n = ((BYTE)(src)) < 0;
                     44:        put_byte(dsta,src);
                     45: }}}}}
                     46: void op_20(UWORD opcode)
                     47: {
                     48:        ULONG dstreg = (opcode & 7) >> 0;
                     49: {{     BYTE src = nextiword();
                     50: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                     51: {      CPTR dsta = regs.a[dstreg];
                     52:        BYTE dst = get_byte(dsta);
                     53:        src |= dst;
                     54:        regs.v = regs.c = 0;
                     55:        regs.z = ((BYTE)(src)) == 0;
                     56:        regs.n = ((BYTE)(src)) < 0;
                     57:        put_byte(dsta,src);
                     58: }}}}}
                     59: void op_28(UWORD opcode)
                     60: {
                     61:        ULONG dstreg = (opcode & 7) >> 0;
                     62: {{     BYTE src = nextiword();
                     63: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                     64:        BYTE dst = get_byte(dsta);
                     65:        src |= dst;
                     66:        regs.v = regs.c = 0;
                     67:        regs.z = ((BYTE)(src)) == 0;
                     68:        regs.n = ((BYTE)(src)) < 0;
                     69:        put_byte(dsta,src);
                     70: }}}}
                     71: void op_30(UWORD opcode)
                     72: {
                     73:        ULONG dstreg = (opcode & 7) >> 0;
                     74: {{     BYTE src = nextiword();
                     75: {      CPTR dsta = regs.a[dstreg];
                     76:        UWORD dstdp = nextiword();
                     77:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                     78: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                     79:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                     80:        dsta += dstdpr;
                     81: {      BYTE dst = get_byte(dsta);
                     82:        src |= dst;
                     83:        regs.v = regs.c = 0;
                     84:        regs.z = ((BYTE)(src)) == 0;
                     85:        regs.n = ((BYTE)(src)) < 0;
                     86:        put_byte(dsta,src);
                     87: }}}}}}
                     88: void op_38(UWORD opcode)
                     89: {
                     90: {{     BYTE src = nextiword();
                     91: {      CPTR dsta = (LONG)(WORD)nextiword();
                     92:        BYTE dst = get_byte(dsta);
                     93:        src |= dst;
                     94:        regs.v = regs.c = 0;
                     95:        regs.z = ((BYTE)(src)) == 0;
                     96:        regs.n = ((BYTE)(src)) < 0;
                     97:        put_byte(dsta,src);
                     98: }}}}
                     99: void op_39(UWORD opcode)
                    100: {
                    101: {{     BYTE src = nextiword();
                    102: {      CPTR dsta = nextilong();
                    103:        BYTE dst = get_byte(dsta);
                    104:        src |= dst;
                    105:        regs.v = regs.c = 0;
                    106:        regs.z = ((BYTE)(src)) == 0;
                    107:        regs.n = ((BYTE)(src)) < 0;
                    108:        put_byte(dsta,src);
                    109: }}}}
                    110: void op_3c(UWORD opcode)
                    111: {
                    112: {{     MakeSR();
                    113: {      WORD src = nextiword();
                    114:        src &= 0xFF;
                    115:        regs.sr |= src;
                    116:        MakeFromSR();
                    117: }}}}
                    118: void op_40(UWORD opcode)
                    119: {
                    120:        ULONG dstreg = (opcode & 7) >> 0;
                    121: {{     WORD src = nextiword();
                    122: {      WORD dst = regs.d[dstreg];
                    123:        src |= dst;
                    124:        regs.v = regs.c = 0;
                    125:        regs.z = ((WORD)(src)) == 0;
                    126:        regs.n = ((WORD)(src)) < 0;
                    127:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
                    128: }}}}
                    129: void op_50(UWORD opcode)
                    130: {
                    131:        ULONG dstreg = (opcode & 7) >> 0;
                    132: {{     WORD src = nextiword();
                    133: {      CPTR dsta = regs.a[dstreg];
                    134:        WORD dst = get_word(dsta);
                    135:        src |= dst;
                    136:        regs.v = regs.c = 0;
                    137:        regs.z = ((WORD)(src)) == 0;
                    138:        regs.n = ((WORD)(src)) < 0;
                    139:        put_word(dsta,src);
                    140: }}}}
                    141: void op_58(UWORD opcode)
                    142: {
                    143:        ULONG dstreg = (opcode & 7) >> 0;
                    144: {{     WORD src = nextiword();
                    145: {      CPTR dsta = regs.a[dstreg];
                    146:        WORD dst = get_word(dsta);
                    147: {      regs.a[dstreg] += 2;
                    148:        src |= dst;
                    149:        regs.v = regs.c = 0;
                    150:        regs.z = ((WORD)(src)) == 0;
                    151:        regs.n = ((WORD)(src)) < 0;
                    152:        put_word(dsta,src);
                    153: }}}}}
                    154: void op_60(UWORD opcode)
                    155: {
                    156:        ULONG dstreg = (opcode & 7) >> 0;
                    157: {{     WORD src = nextiword();
                    158: {      regs.a[dstreg] -= 2;
                    159: {      CPTR dsta = regs.a[dstreg];
                    160:        WORD dst = get_word(dsta);
                    161:        src |= dst;
                    162:        regs.v = regs.c = 0;
                    163:        regs.z = ((WORD)(src)) == 0;
                    164:        regs.n = ((WORD)(src)) < 0;
                    165:        put_word(dsta,src);
                    166: }}}}}
                    167: void op_68(UWORD opcode)
                    168: {
                    169:        ULONG dstreg = (opcode & 7) >> 0;
                    170: {{     WORD src = nextiword();
                    171: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                    172:        WORD dst = get_word(dsta);
                    173:        src |= dst;
                    174:        regs.v = regs.c = 0;
                    175:        regs.z = ((WORD)(src)) == 0;
                    176:        regs.n = ((WORD)(src)) < 0;
                    177:        put_word(dsta,src);
                    178: }}}}
                    179: void op_70(UWORD opcode)
                    180: {
                    181:        ULONG dstreg = (opcode & 7) >> 0;
                    182: {{     WORD src = nextiword();
                    183: {      CPTR dsta = regs.a[dstreg];
                    184:        UWORD dstdp = nextiword();
                    185:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                    186: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                    187:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                    188:        dsta += dstdpr;
                    189: {      WORD dst = get_word(dsta);
                    190:        src |= dst;
                    191:        regs.v = regs.c = 0;
                    192:        regs.z = ((WORD)(src)) == 0;
                    193:        regs.n = ((WORD)(src)) < 0;
                    194:        put_word(dsta,src);
                    195: }}}}}}
                    196: void op_78(UWORD opcode)
                    197: {
                    198: {{     WORD src = nextiword();
                    199: {      CPTR dsta = (LONG)(WORD)nextiword();
                    200:        WORD dst = get_word(dsta);
                    201:        src |= dst;
                    202:        regs.v = regs.c = 0;
                    203:        regs.z = ((WORD)(src)) == 0;
                    204:        regs.n = ((WORD)(src)) < 0;
                    205:        put_word(dsta,src);
                    206: }}}}
                    207: void op_79(UWORD opcode)
                    208: {
                    209: {{     WORD src = nextiword();
                    210: {      CPTR dsta = nextilong();
                    211:        WORD dst = get_word(dsta);
                    212:        src |= dst;
                    213:        regs.v = regs.c = 0;
                    214:        regs.z = ((WORD)(src)) == 0;
                    215:        regs.n = ((WORD)(src)) < 0;
                    216:        put_word(dsta,src);
                    217: }}}}
                    218: void op_7c(UWORD opcode)
                    219: {
                    220: {      if (!regs.s) { regs.pc_p--; Exception(8); } else
                    221: {      MakeSR();
                    222: {      WORD src = nextiword();
                    223:        regs.sr |= src;
                    224:        MakeFromSR();
                    225: }}}}
                    226: void op_80(UWORD opcode)
                    227: {
                    228:        ULONG dstreg = (opcode & 7) >> 0;
                    229: {{     LONG src = nextilong();
                    230: {      LONG dst = regs.d[dstreg];
                    231:        src |= dst;
                    232:        regs.v = regs.c = 0;
                    233:        regs.z = ((LONG)(src)) == 0;
                    234:        regs.n = ((LONG)(src)) < 0;
                    235:        regs.d[dstreg] = (src);
                    236: }}}}
                    237: void op_90(UWORD opcode)
                    238: {
                    239:        ULONG dstreg = (opcode & 7) >> 0;
                    240: {{     LONG src = nextilong();
                    241: {      CPTR dsta = regs.a[dstreg];
                    242:        LONG dst = get_long(dsta);
                    243:        src |= dst;
                    244:        regs.v = regs.c = 0;
                    245:        regs.z = ((LONG)(src)) == 0;
                    246:        regs.n = ((LONG)(src)) < 0;
                    247:        put_long(dsta,src);
                    248: }}}}
                    249: void op_98(UWORD opcode)
                    250: {
                    251:        ULONG dstreg = (opcode & 7) >> 0;
                    252: {{     LONG src = nextilong();
                    253: {      CPTR dsta = regs.a[dstreg];
                    254:        LONG dst = get_long(dsta);
                    255: {      regs.a[dstreg] += 4;
                    256:        src |= dst;
                    257:        regs.v = regs.c = 0;
                    258:        regs.z = ((LONG)(src)) == 0;
                    259:        regs.n = ((LONG)(src)) < 0;
                    260:        put_long(dsta,src);
                    261: }}}}}
                    262: void op_a0(UWORD opcode)
                    263: {
                    264:        ULONG dstreg = (opcode & 7) >> 0;
                    265: {{     LONG src = nextilong();
                    266: {      regs.a[dstreg] -= 4;
                    267: {      CPTR dsta = regs.a[dstreg];
                    268:        LONG dst = get_long(dsta);
                    269:        src |= dst;
                    270:        regs.v = regs.c = 0;
                    271:        regs.z = ((LONG)(src)) == 0;
                    272:        regs.n = ((LONG)(src)) < 0;
                    273:        put_long(dsta,src);
                    274: }}}}}
                    275: void op_a8(UWORD opcode)
                    276: {
                    277:        ULONG dstreg = (opcode & 7) >> 0;
                    278: {{     LONG src = nextilong();
                    279: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                    280:        LONG dst = get_long(dsta);
                    281:        src |= dst;
                    282:        regs.v = regs.c = 0;
                    283:        regs.z = ((LONG)(src)) == 0;
                    284:        regs.n = ((LONG)(src)) < 0;
                    285:        put_long(dsta,src);
                    286: }}}}
                    287: void op_b0(UWORD opcode)
                    288: {
                    289:        ULONG dstreg = (opcode & 7) >> 0;
                    290: {{     LONG src = nextilong();
                    291: {      CPTR dsta = regs.a[dstreg];
                    292:        UWORD dstdp = nextiword();
                    293:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                    294: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                    295:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                    296:        dsta += dstdpr;
                    297: {      LONG dst = get_long(dsta);
                    298:        src |= dst;
                    299:        regs.v = regs.c = 0;
                    300:        regs.z = ((LONG)(src)) == 0;
                    301:        regs.n = ((LONG)(src)) < 0;
                    302:        put_long(dsta,src);
                    303: }}}}}}
                    304: void op_b8(UWORD opcode)
                    305: {
                    306: {{     LONG src = nextilong();
                    307: {      CPTR dsta = (LONG)(WORD)nextiword();
                    308:        LONG dst = get_long(dsta);
                    309:        src |= dst;
                    310:        regs.v = regs.c = 0;
                    311:        regs.z = ((LONG)(src)) == 0;
                    312:        regs.n = ((LONG)(src)) < 0;
                    313:        put_long(dsta,src);
                    314: }}}}
                    315: void op_b9(UWORD opcode)
                    316: {
                    317: {{     LONG src = nextilong();
                    318: {      CPTR dsta = nextilong();
                    319:        LONG dst = get_long(dsta);
                    320:        src |= dst;
                    321:        regs.v = regs.c = 0;
                    322:        regs.z = ((LONG)(src)) == 0;
                    323:        regs.n = ((LONG)(src)) < 0;
                    324:        put_long(dsta,src);
                    325: }}}}
                    326: void op_100(UWORD opcode)
                    327: {
                    328:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    329:        ULONG dstreg = (opcode & 7) >> 0;
                    330: {{     LONG src = regs.d[srcreg];
                    331: {      LONG dst = regs.d[dstreg];
                    332:        src &= 31;
                    333:        regs.z = !(dst & (1 << src));
                    334: }}}}
                    335: void op_110(UWORD opcode)
                    336: {
                    337:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    338:        ULONG dstreg = (opcode & 7) >> 0;
                    339: {{     BYTE src = regs.d[srcreg];
                    340: {      CPTR dsta = regs.a[dstreg];
                    341:        BYTE dst = get_byte(dsta);
                    342:        src &= 7;
                    343:        regs.z = !(dst & (1 << src));
                    344: }}}}
                    345: void op_118(UWORD opcode)
                    346: {
                    347:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    348:        ULONG dstreg = (opcode & 7) >> 0;
                    349: {{     BYTE src = regs.d[srcreg];
                    350: {      CPTR dsta = regs.a[dstreg];
                    351:        BYTE dst = get_byte(dsta);
                    352: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                    353:        src &= 7;
                    354:        regs.z = !(dst & (1 << src));
                    355: }}}}}
                    356: void op_120(UWORD opcode)
                    357: {
                    358:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    359:        ULONG dstreg = (opcode & 7) >> 0;
                    360: {{     BYTE src = regs.d[srcreg];
                    361: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                    362: {      CPTR dsta = regs.a[dstreg];
                    363:        BYTE dst = get_byte(dsta);
                    364:        src &= 7;
                    365:        regs.z = !(dst & (1 << src));
                    366: }}}}}
                    367: void op_128(UWORD opcode)
                    368: {
                    369:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    370:        ULONG dstreg = (opcode & 7) >> 0;
                    371: {{     BYTE src = regs.d[srcreg];
                    372: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                    373:        BYTE dst = get_byte(dsta);
                    374:        src &= 7;
                    375:        regs.z = !(dst & (1 << src));
                    376: }}}}
                    377: void op_130(UWORD opcode)
                    378: {
                    379:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    380:        ULONG dstreg = (opcode & 7) >> 0;
                    381: {{     BYTE src = regs.d[srcreg];
                    382: {      CPTR dsta = regs.a[dstreg];
                    383:        UWORD dstdp = nextiword();
                    384:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                    385: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                    386:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                    387:        dsta += dstdpr;
                    388: {      BYTE dst = get_byte(dsta);
                    389:        src &= 7;
                    390:        regs.z = !(dst & (1 << src));
                    391: }}}}}}
                    392: void op_138(UWORD opcode)
                    393: {
                    394:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    395: {{     BYTE src = regs.d[srcreg];
                    396: {      CPTR dsta = (LONG)(WORD)nextiword();
                    397:        BYTE dst = get_byte(dsta);
                    398:        src &= 7;
                    399:        regs.z = !(dst & (1 << src));
                    400: }}}}
                    401: void op_139(UWORD opcode)
                    402: {
                    403:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    404: {{     BYTE src = regs.d[srcreg];
                    405: {      CPTR dsta = nextilong();
                    406:        BYTE dst = get_byte(dsta);
                    407:        src &= 7;
                    408:        regs.z = !(dst & (1 << src));
                    409: }}}}
                    410: void op_140(UWORD opcode)
                    411: {
                    412:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    413:        ULONG dstreg = (opcode & 7) >> 0;
                    414: {{     LONG src = regs.d[srcreg];
                    415: {      LONG dst = regs.d[dstreg];
                    416:        src &= 31;
                    417:        regs.z = !(dst & (1 << src));
                    418:        dst ^= (1 << src);
                    419:        regs.d[dstreg] = (dst);
                    420: }}}}
                    421: void op_150(UWORD opcode)
                    422: {
                    423:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    424:        ULONG dstreg = (opcode & 7) >> 0;
                    425: {{     BYTE src = regs.d[srcreg];
                    426: {      CPTR dsta = regs.a[dstreg];
                    427:        BYTE dst = get_byte(dsta);
                    428:        src &= 7;
                    429:        regs.z = !(dst & (1 << src));
                    430:        dst ^= (1 << src);
                    431:        put_byte(dsta,dst);
                    432: }}}}
                    433: void op_158(UWORD opcode)
                    434: {
                    435:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    436:        ULONG dstreg = (opcode & 7) >> 0;
                    437: {{     BYTE src = regs.d[srcreg];
                    438: {      CPTR dsta = regs.a[dstreg];
                    439:        BYTE dst = get_byte(dsta);
                    440: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                    441:        src &= 7;
                    442:        regs.z = !(dst & (1 << src));
                    443:        dst ^= (1 << src);
                    444:        put_byte(dsta,dst);
                    445: }}}}}
                    446: void op_160(UWORD opcode)
                    447: {
                    448:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    449:        ULONG dstreg = (opcode & 7) >> 0;
                    450: {{     BYTE src = regs.d[srcreg];
                    451: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                    452: {      CPTR dsta = regs.a[dstreg];
                    453:        BYTE dst = get_byte(dsta);
                    454:        src &= 7;
                    455:        regs.z = !(dst & (1 << src));
                    456:        dst ^= (1 << src);
                    457:        put_byte(dsta,dst);
                    458: }}}}}
                    459: void op_168(UWORD opcode)
                    460: {
                    461:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    462:        ULONG dstreg = (opcode & 7) >> 0;
                    463: {{     BYTE src = regs.d[srcreg];
                    464: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                    465:        BYTE dst = get_byte(dsta);
                    466:        src &= 7;
                    467:        regs.z = !(dst & (1 << src));
                    468:        dst ^= (1 << src);
                    469:        put_byte(dsta,dst);
                    470: }}}}
                    471: void op_170(UWORD opcode)
                    472: {
                    473:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    474:        ULONG dstreg = (opcode & 7) >> 0;
                    475: {{     BYTE src = regs.d[srcreg];
                    476: {      CPTR dsta = regs.a[dstreg];
                    477:        UWORD dstdp = nextiword();
                    478:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                    479: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                    480:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                    481:        dsta += dstdpr;
                    482: {      BYTE dst = get_byte(dsta);
                    483:        src &= 7;
                    484:        regs.z = !(dst & (1 << src));
                    485:        dst ^= (1 << src);
                    486:        put_byte(dsta,dst);
                    487: }}}}}}
                    488: void op_178(UWORD opcode)
                    489: {
                    490:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    491: {{     BYTE src = regs.d[srcreg];
                    492: {      CPTR dsta = (LONG)(WORD)nextiword();
                    493:        BYTE dst = get_byte(dsta);
                    494:        src &= 7;
                    495:        regs.z = !(dst & (1 << src));
                    496:        dst ^= (1 << src);
                    497:        put_byte(dsta,dst);
                    498: }}}}
                    499: void op_179(UWORD opcode)
                    500: {
                    501:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    502: {{     BYTE src = regs.d[srcreg];
                    503: {      CPTR dsta = nextilong();
                    504:        BYTE dst = get_byte(dsta);
                    505:        src &= 7;
                    506:        regs.z = !(dst & (1 << src));
                    507:        dst ^= (1 << src);
                    508:        put_byte(dsta,dst);
                    509: }}}}
                    510: void op_180(UWORD opcode)
                    511: {
                    512:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    513:        ULONG dstreg = (opcode & 7) >> 0;
                    514: {{     LONG src = regs.d[srcreg];
                    515: {      LONG dst = regs.d[dstreg];
                    516:        src &= 31;
                    517:        regs.z = !(dst & (1 << src));
                    518:        dst &= ~(1 << src);
                    519:        regs.d[dstreg] = (dst);
                    520: }}}}
                    521: void op_190(UWORD opcode)
                    522: {
                    523:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    524:        ULONG dstreg = (opcode & 7) >> 0;
                    525: {{     BYTE src = regs.d[srcreg];
                    526: {      CPTR dsta = regs.a[dstreg];
                    527:        BYTE dst = get_byte(dsta);
                    528:        src &= 7;
                    529:        regs.z = !(dst & (1 << src));
                    530:        dst &= ~(1 << src);
                    531:        put_byte(dsta,dst);
                    532: }}}}
                    533: void op_198(UWORD opcode)
                    534: {
                    535:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    536:        ULONG dstreg = (opcode & 7) >> 0;
                    537: {{     BYTE src = regs.d[srcreg];
                    538: {      CPTR dsta = regs.a[dstreg];
                    539:        BYTE dst = get_byte(dsta);
                    540: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                    541:        src &= 7;
                    542:        regs.z = !(dst & (1 << src));
                    543:        dst &= ~(1 << src);
                    544:        put_byte(dsta,dst);
                    545: }}}}}
                    546: void op_1a0(UWORD opcode)
                    547: {
                    548:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    549:        ULONG dstreg = (opcode & 7) >> 0;
                    550: {{     BYTE src = regs.d[srcreg];
                    551: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                    552: {      CPTR dsta = regs.a[dstreg];
                    553:        BYTE dst = get_byte(dsta);
                    554:        src &= 7;
                    555:        regs.z = !(dst & (1 << src));
                    556:        dst &= ~(1 << src);
                    557:        put_byte(dsta,dst);
                    558: }}}}}
                    559: void op_1a8(UWORD opcode)
                    560: {
                    561:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    562:        ULONG dstreg = (opcode & 7) >> 0;
                    563: {{     BYTE src = regs.d[srcreg];
                    564: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                    565:        BYTE dst = get_byte(dsta);
                    566:        src &= 7;
                    567:        regs.z = !(dst & (1 << src));
                    568:        dst &= ~(1 << src);
                    569:        put_byte(dsta,dst);
                    570: }}}}
                    571: void op_1b0(UWORD opcode)
                    572: {
                    573:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    574:        ULONG dstreg = (opcode & 7) >> 0;
                    575: {{     BYTE src = regs.d[srcreg];
                    576: {      CPTR dsta = regs.a[dstreg];
                    577:        UWORD dstdp = nextiword();
                    578:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                    579: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                    580:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                    581:        dsta += dstdpr;
                    582: {      BYTE dst = get_byte(dsta);
                    583:        src &= 7;
                    584:        regs.z = !(dst & (1 << src));
                    585:        dst &= ~(1 << src);
                    586:        put_byte(dsta,dst);
                    587: }}}}}}
                    588: void op_1b8(UWORD opcode)
                    589: {
                    590:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    591: {{     BYTE src = regs.d[srcreg];
                    592: {      CPTR dsta = (LONG)(WORD)nextiword();
                    593:        BYTE dst = get_byte(dsta);
                    594:        src &= 7;
                    595:        regs.z = !(dst & (1 << src));
                    596:        dst &= ~(1 << src);
                    597:        put_byte(dsta,dst);
                    598: }}}}
                    599: void op_1b9(UWORD opcode)
                    600: {
                    601:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    602: {{     BYTE src = regs.d[srcreg];
                    603: {      CPTR dsta = nextilong();
                    604:        BYTE dst = get_byte(dsta);
                    605:        src &= 7;
                    606:        regs.z = !(dst & (1 << src));
                    607:        dst &= ~(1 << src);
                    608:        put_byte(dsta,dst);
                    609: }}}}
                    610: void op_1c0(UWORD opcode)
                    611: {
                    612:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    613:        ULONG dstreg = (opcode & 7) >> 0;
                    614: {{     LONG src = regs.d[srcreg];
                    615: {      LONG dst = regs.d[dstreg];
                    616:        src &= 31;
                    617:        regs.z = !(dst & (1 << src));
                    618:        dst |= (1 << src);
                    619:        regs.d[dstreg] = (dst);
                    620: }}}}
                    621: void op_1d0(UWORD opcode)
                    622: {
                    623:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    624:        ULONG dstreg = (opcode & 7) >> 0;
                    625: {{     BYTE src = regs.d[srcreg];
                    626: {      CPTR dsta = regs.a[dstreg];
                    627:        BYTE dst = get_byte(dsta);
                    628:        src &= 7;
                    629:        regs.z = !(dst & (1 << src));
                    630:        dst |= (1 << src);
                    631:        put_byte(dsta,dst);
                    632: }}}}
                    633: void op_1d8(UWORD opcode)
                    634: {
                    635:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    636:        ULONG dstreg = (opcode & 7) >> 0;
                    637: {{     BYTE src = regs.d[srcreg];
                    638: {      CPTR dsta = regs.a[dstreg];
                    639:        BYTE dst = get_byte(dsta);
                    640: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                    641:        src &= 7;
                    642:        regs.z = !(dst & (1 << src));
                    643:        dst |= (1 << src);
                    644:        put_byte(dsta,dst);
                    645: }}}}}
                    646: void op_1e0(UWORD opcode)
                    647: {
                    648:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    649:        ULONG dstreg = (opcode & 7) >> 0;
                    650: {{     BYTE src = regs.d[srcreg];
                    651: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                    652: {      CPTR dsta = regs.a[dstreg];
                    653:        BYTE dst = get_byte(dsta);
                    654:        src &= 7;
                    655:        regs.z = !(dst & (1 << src));
                    656:        dst |= (1 << src);
                    657:        put_byte(dsta,dst);
                    658: }}}}}
                    659: void op_1e8(UWORD opcode)
                    660: {
                    661:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    662:        ULONG dstreg = (opcode & 7) >> 0;
                    663: {{     BYTE src = regs.d[srcreg];
                    664: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                    665:        BYTE dst = get_byte(dsta);
                    666:        src &= 7;
                    667:        regs.z = !(dst & (1 << src));
                    668:        dst |= (1 << src);
                    669:        put_byte(dsta,dst);
                    670: }}}}
                    671: void op_1f0(UWORD opcode)
                    672: {
                    673:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    674:        ULONG dstreg = (opcode & 7) >> 0;
                    675: {{     BYTE src = regs.d[srcreg];
                    676: {      CPTR dsta = regs.a[dstreg];
                    677:        UWORD dstdp = nextiword();
                    678:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                    679: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                    680:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                    681:        dsta += dstdpr;
                    682: {      BYTE dst = get_byte(dsta);
                    683:        src &= 7;
                    684:        regs.z = !(dst & (1 << src));
                    685:        dst |= (1 << src);
                    686:        put_byte(dsta,dst);
                    687: }}}}}}
                    688: void op_1f8(UWORD opcode)
                    689: {
                    690:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    691: {{     BYTE src = regs.d[srcreg];
                    692: {      CPTR dsta = (LONG)(WORD)nextiword();
                    693:        BYTE dst = get_byte(dsta);
                    694:        src &= 7;
                    695:        regs.z = !(dst & (1 << src));
                    696:        dst |= (1 << src);
                    697:        put_byte(dsta,dst);
                    698: }}}}
                    699: void op_1f9(UWORD opcode)
                    700: {
                    701:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
                    702: {{     BYTE src = regs.d[srcreg];
                    703: {      CPTR dsta = nextilong();
                    704:        BYTE dst = get_byte(dsta);
                    705:        src &= 7;
                    706:        regs.z = !(dst & (1 << src));
                    707:        dst |= (1 << src);
                    708:        put_byte(dsta,dst);
                    709: }}}}
                    710: void op_200(UWORD opcode)
                    711: {
                    712:        ULONG dstreg = (opcode & 7) >> 0;
                    713: {{     BYTE src = nextiword();
                    714: {      BYTE dst = regs.d[dstreg];
                    715:        src &= dst;
                    716:        regs.v = regs.c = 0;
                    717:        regs.z = ((BYTE)(src)) == 0;
                    718:        regs.n = ((BYTE)(src)) < 0;
                    719:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
                    720: }}}}
                    721: void op_210(UWORD opcode)
                    722: {
                    723:        ULONG dstreg = (opcode & 7) >> 0;
                    724: {{     BYTE src = nextiword();
                    725: {      CPTR dsta = regs.a[dstreg];
                    726:        BYTE dst = get_byte(dsta);
                    727:        src &= dst;
                    728:        regs.v = regs.c = 0;
                    729:        regs.z = ((BYTE)(src)) == 0;
                    730:        regs.n = ((BYTE)(src)) < 0;
                    731:        put_byte(dsta,src);
                    732: }}}}
                    733: void op_218(UWORD opcode)
                    734: {
                    735:        ULONG dstreg = (opcode & 7) >> 0;
                    736: {{     BYTE src = nextiword();
                    737: {      CPTR dsta = regs.a[dstreg];
                    738:        BYTE dst = get_byte(dsta);
                    739: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                    740:        src &= dst;
                    741:        regs.v = regs.c = 0;
                    742:        regs.z = ((BYTE)(src)) == 0;
                    743:        regs.n = ((BYTE)(src)) < 0;
                    744:        put_byte(dsta,src);
                    745: }}}}}
                    746: void op_220(UWORD opcode)
                    747: {
                    748:        ULONG dstreg = (opcode & 7) >> 0;
                    749: {{     BYTE src = nextiword();
                    750: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                    751: {      CPTR dsta = regs.a[dstreg];
                    752:        BYTE dst = get_byte(dsta);
                    753:        src &= dst;
                    754:        regs.v = regs.c = 0;
                    755:        regs.z = ((BYTE)(src)) == 0;
                    756:        regs.n = ((BYTE)(src)) < 0;
                    757:        put_byte(dsta,src);
                    758: }}}}}
                    759: void op_228(UWORD opcode)
                    760: {
                    761:        ULONG dstreg = (opcode & 7) >> 0;
                    762: {{     BYTE src = nextiword();
                    763: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                    764:        BYTE dst = get_byte(dsta);
                    765:        src &= dst;
                    766:        regs.v = regs.c = 0;
                    767:        regs.z = ((BYTE)(src)) == 0;
                    768:        regs.n = ((BYTE)(src)) < 0;
                    769:        put_byte(dsta,src);
                    770: }}}}
                    771: void op_230(UWORD opcode)
                    772: {
                    773:        ULONG dstreg = (opcode & 7) >> 0;
                    774: {{     BYTE src = nextiword();
                    775: {      CPTR dsta = regs.a[dstreg];
                    776:        UWORD dstdp = nextiword();
                    777:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                    778: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                    779:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                    780:        dsta += dstdpr;
                    781: {      BYTE dst = get_byte(dsta);
                    782:        src &= dst;
                    783:        regs.v = regs.c = 0;
                    784:        regs.z = ((BYTE)(src)) == 0;
                    785:        regs.n = ((BYTE)(src)) < 0;
                    786:        put_byte(dsta,src);
                    787: }}}}}}
                    788: void op_238(UWORD opcode)
                    789: {
                    790: {{     BYTE src = nextiword();
                    791: {      CPTR dsta = (LONG)(WORD)nextiword();
                    792:        BYTE dst = get_byte(dsta);
                    793:        src &= dst;
                    794:        regs.v = regs.c = 0;
                    795:        regs.z = ((BYTE)(src)) == 0;
                    796:        regs.n = ((BYTE)(src)) < 0;
                    797:        put_byte(dsta,src);
                    798: }}}}
                    799: void op_239(UWORD opcode)
                    800: {
                    801: {{     BYTE src = nextiword();
                    802: {      CPTR dsta = nextilong();
                    803:        BYTE dst = get_byte(dsta);
                    804:        src &= dst;
                    805:        regs.v = regs.c = 0;
                    806:        regs.z = ((BYTE)(src)) == 0;
                    807:        regs.n = ((BYTE)(src)) < 0;
                    808:        put_byte(dsta,src);
                    809: }}}}
                    810: void op_23c(UWORD opcode)
                    811: {
                    812: {{     MakeSR();
                    813: {      WORD src = nextiword();
                    814:        src |= 0xFF00;
                    815:        regs.sr &= src;
                    816:        MakeFromSR();
                    817: }}}}
                    818: void op_240(UWORD opcode)
                    819: {
                    820:        ULONG dstreg = (opcode & 7) >> 0;
                    821: {{     WORD src = nextiword();
                    822: {      WORD dst = regs.d[dstreg];
                    823:        src &= dst;
                    824:        regs.v = regs.c = 0;
                    825:        regs.z = ((WORD)(src)) == 0;
                    826:        regs.n = ((WORD)(src)) < 0;
                    827:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
                    828: }}}}
                    829: void op_250(UWORD opcode)
                    830: {
                    831:        ULONG dstreg = (opcode & 7) >> 0;
                    832: {{     WORD src = nextiword();
                    833: {      CPTR dsta = regs.a[dstreg];
                    834:        WORD dst = get_word(dsta);
                    835:        src &= dst;
                    836:        regs.v = regs.c = 0;
                    837:        regs.z = ((WORD)(src)) == 0;
                    838:        regs.n = ((WORD)(src)) < 0;
                    839:        put_word(dsta,src);
                    840: }}}}
                    841: void op_258(UWORD opcode)
                    842: {
                    843:        ULONG dstreg = (opcode & 7) >> 0;
                    844: {{     WORD src = nextiword();
                    845: {      CPTR dsta = regs.a[dstreg];
                    846:        WORD dst = get_word(dsta);
                    847: {      regs.a[dstreg] += 2;
                    848:        src &= dst;
                    849:        regs.v = regs.c = 0;
                    850:        regs.z = ((WORD)(src)) == 0;
                    851:        regs.n = ((WORD)(src)) < 0;
                    852:        put_word(dsta,src);
                    853: }}}}}
                    854: void op_260(UWORD opcode)
                    855: {
                    856:        ULONG dstreg = (opcode & 7) >> 0;
                    857: {{     WORD src = nextiword();
                    858: {      regs.a[dstreg] -= 2;
                    859: {      CPTR dsta = regs.a[dstreg];
                    860:        WORD dst = get_word(dsta);
                    861:        src &= dst;
                    862:        regs.v = regs.c = 0;
                    863:        regs.z = ((WORD)(src)) == 0;
                    864:        regs.n = ((WORD)(src)) < 0;
                    865:        put_word(dsta,src);
                    866: }}}}}
                    867: void op_268(UWORD opcode)
                    868: {
                    869:        ULONG dstreg = (opcode & 7) >> 0;
                    870: {{     WORD src = nextiword();
                    871: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                    872:        WORD dst = get_word(dsta);
                    873:        src &= dst;
                    874:        regs.v = regs.c = 0;
                    875:        regs.z = ((WORD)(src)) == 0;
                    876:        regs.n = ((WORD)(src)) < 0;
                    877:        put_word(dsta,src);
                    878: }}}}
                    879: void op_270(UWORD opcode)
                    880: {
                    881:        ULONG dstreg = (opcode & 7) >> 0;
                    882: {{     WORD src = nextiword();
                    883: {      CPTR dsta = regs.a[dstreg];
                    884:        UWORD dstdp = nextiword();
                    885:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                    886: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                    887:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                    888:        dsta += dstdpr;
                    889: {      WORD dst = get_word(dsta);
                    890:        src &= dst;
                    891:        regs.v = regs.c = 0;
                    892:        regs.z = ((WORD)(src)) == 0;
                    893:        regs.n = ((WORD)(src)) < 0;
                    894:        put_word(dsta,src);
                    895: }}}}}}
                    896: void op_278(UWORD opcode)
                    897: {
                    898: {{     WORD src = nextiword();
                    899: {      CPTR dsta = (LONG)(WORD)nextiword();
                    900:        WORD dst = get_word(dsta);
                    901:        src &= dst;
                    902:        regs.v = regs.c = 0;
                    903:        regs.z = ((WORD)(src)) == 0;
                    904:        regs.n = ((WORD)(src)) < 0;
                    905:        put_word(dsta,src);
                    906: }}}}
                    907: void op_279(UWORD opcode)
                    908: {
                    909: {{     WORD src = nextiword();
                    910: {      CPTR dsta = nextilong();
                    911:        WORD dst = get_word(dsta);
                    912:        src &= dst;
                    913:        regs.v = regs.c = 0;
                    914:        regs.z = ((WORD)(src)) == 0;
                    915:        regs.n = ((WORD)(src)) < 0;
                    916:        put_word(dsta,src);
                    917: }}}}
                    918: void op_27c(UWORD opcode)
                    919: {
                    920: {      if (!regs.s) { regs.pc_p--; Exception(8); } else
                    921: {      MakeSR();
                    922: {      WORD src = nextiword();
                    923:        regs.sr &= src;
                    924:        MakeFromSR();
                    925: }}}}
                    926: void op_280(UWORD opcode)
                    927: {
                    928:        ULONG dstreg = (opcode & 7) >> 0;
                    929: {{     LONG src = nextilong();
                    930: {      LONG dst = regs.d[dstreg];
                    931:        src &= dst;
                    932:        regs.v = regs.c = 0;
                    933:        regs.z = ((LONG)(src)) == 0;
                    934:        regs.n = ((LONG)(src)) < 0;
                    935:        regs.d[dstreg] = (src);
                    936: }}}}
                    937: void op_290(UWORD opcode)
                    938: {
                    939:        ULONG dstreg = (opcode & 7) >> 0;
                    940: {{     LONG src = nextilong();
                    941: {      CPTR dsta = regs.a[dstreg];
                    942:        LONG dst = get_long(dsta);
                    943:        src &= dst;
                    944:        regs.v = regs.c = 0;
                    945:        regs.z = ((LONG)(src)) == 0;
                    946:        regs.n = ((LONG)(src)) < 0;
                    947:        put_long(dsta,src);
                    948: }}}}
                    949: void op_298(UWORD opcode)
                    950: {
                    951:        ULONG dstreg = (opcode & 7) >> 0;
                    952: {{     LONG src = nextilong();
                    953: {      CPTR dsta = regs.a[dstreg];
                    954:        LONG dst = get_long(dsta);
                    955: {      regs.a[dstreg] += 4;
                    956:        src &= dst;
                    957:        regs.v = regs.c = 0;
                    958:        regs.z = ((LONG)(src)) == 0;
                    959:        regs.n = ((LONG)(src)) < 0;
                    960:        put_long(dsta,src);
                    961: }}}}}
                    962: void op_2a0(UWORD opcode)
                    963: {
                    964:        ULONG dstreg = (opcode & 7) >> 0;
                    965: {{     LONG src = nextilong();
                    966: {      regs.a[dstreg] -= 4;
                    967: {      CPTR dsta = regs.a[dstreg];
                    968:        LONG dst = get_long(dsta);
                    969:        src &= dst;
                    970:        regs.v = regs.c = 0;
                    971:        regs.z = ((LONG)(src)) == 0;
                    972:        regs.n = ((LONG)(src)) < 0;
                    973:        put_long(dsta,src);
                    974: }}}}}
                    975: void op_2a8(UWORD opcode)
                    976: {
                    977:        ULONG dstreg = (opcode & 7) >> 0;
                    978: {{     LONG src = nextilong();
                    979: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                    980:        LONG dst = get_long(dsta);
                    981:        src &= dst;
                    982:        regs.v = regs.c = 0;
                    983:        regs.z = ((LONG)(src)) == 0;
                    984:        regs.n = ((LONG)(src)) < 0;
                    985:        put_long(dsta,src);
                    986: }}}}
                    987: void op_2b0(UWORD opcode)
                    988: {
                    989:        ULONG dstreg = (opcode & 7) >> 0;
                    990: {{     LONG src = nextilong();
                    991: {      CPTR dsta = regs.a[dstreg];
                    992:        UWORD dstdp = nextiword();
                    993:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                    994: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                    995:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                    996:        dsta += dstdpr;
                    997: {      LONG dst = get_long(dsta);
                    998:        src &= dst;
                    999:        regs.v = regs.c = 0;
                   1000:        regs.z = ((LONG)(src)) == 0;
                   1001:        regs.n = ((LONG)(src)) < 0;
                   1002:        put_long(dsta,src);
                   1003: }}}}}}
                   1004: void op_2b8(UWORD opcode)
                   1005: {
                   1006: {{     LONG src = nextilong();
                   1007: {      CPTR dsta = (LONG)(WORD)nextiword();
                   1008:        LONG dst = get_long(dsta);
                   1009:        src &= dst;
                   1010:        regs.v = regs.c = 0;
                   1011:        regs.z = ((LONG)(src)) == 0;
                   1012:        regs.n = ((LONG)(src)) < 0;
                   1013:        put_long(dsta,src);
                   1014: }}}}
                   1015: void op_2b9(UWORD opcode)
                   1016: {
                   1017: {{     LONG src = nextilong();
                   1018: {      CPTR dsta = nextilong();
                   1019:        LONG dst = get_long(dsta);
                   1020:        src &= dst;
                   1021:        regs.v = regs.c = 0;
                   1022:        regs.z = ((LONG)(src)) == 0;
                   1023:        regs.n = ((LONG)(src)) < 0;
                   1024:        put_long(dsta,src);
                   1025: }}}}
                   1026: void op_400(UWORD opcode)
                   1027: {
                   1028:        ULONG dstreg = (opcode & 7) >> 0;
                   1029: {{     BYTE src = nextiword();
                   1030: {      BYTE dst = regs.d[dstreg];
                   1031: {      ULONG newv = dst - src;
                   1032: {      bool flgs = ((BYTE)(src)) < 0;
                   1033:        bool flgo = ((BYTE)(dst)) < 0;
                   1034:        bool flgn = ((BYTE)(newv)) < 0;
                   1035:        regs.z = ((BYTE)(newv)) == 0;
                   1036:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1037:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
                   1038:        regs.n = flgn != 0;
                   1039:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
                   1040: }}}}}}
                   1041: void op_410(UWORD opcode)
                   1042: {
                   1043:        ULONG dstreg = (opcode & 7) >> 0;
                   1044: {{     BYTE src = nextiword();
                   1045: {      CPTR dsta = regs.a[dstreg];
                   1046:        BYTE dst = get_byte(dsta);
                   1047: {      ULONG newv = dst - src;
                   1048: {      bool flgs = ((BYTE)(src)) < 0;
                   1049:        bool flgo = ((BYTE)(dst)) < 0;
                   1050:        bool flgn = ((BYTE)(newv)) < 0;
                   1051:        regs.z = ((BYTE)(newv)) == 0;
                   1052:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1053:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
                   1054:        regs.n = flgn != 0;
                   1055:        put_byte(dsta,newv);
                   1056: }}}}}}
                   1057: void op_418(UWORD opcode)
                   1058: {
                   1059:        ULONG dstreg = (opcode & 7) >> 0;
                   1060: {{     BYTE src = nextiword();
                   1061: {      CPTR dsta = regs.a[dstreg];
                   1062:        BYTE dst = get_byte(dsta);
                   1063: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                   1064: {      ULONG newv = dst - src;
                   1065: {      bool flgs = ((BYTE)(src)) < 0;
                   1066:        bool flgo = ((BYTE)(dst)) < 0;
                   1067:        bool flgn = ((BYTE)(newv)) < 0;
                   1068:        regs.z = ((BYTE)(newv)) == 0;
                   1069:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1070:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
                   1071:        regs.n = flgn != 0;
                   1072:        put_byte(dsta,newv);
                   1073: }}}}}}}
                   1074: void op_420(UWORD opcode)
                   1075: {
                   1076:        ULONG dstreg = (opcode & 7) >> 0;
                   1077: {{     BYTE src = nextiword();
                   1078: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                   1079: {      CPTR dsta = regs.a[dstreg];
                   1080:        BYTE dst = get_byte(dsta);
                   1081: {      ULONG newv = dst - src;
                   1082: {      bool flgs = ((BYTE)(src)) < 0;
                   1083:        bool flgo = ((BYTE)(dst)) < 0;
                   1084:        bool flgn = ((BYTE)(newv)) < 0;
                   1085:        regs.z = ((BYTE)(newv)) == 0;
                   1086:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1087:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
                   1088:        regs.n = flgn != 0;
                   1089:        put_byte(dsta,newv);
                   1090: }}}}}}}
                   1091: void op_428(UWORD opcode)
                   1092: {
                   1093:        ULONG dstreg = (opcode & 7) >> 0;
                   1094: {{     BYTE src = nextiword();
                   1095: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   1096:        BYTE dst = get_byte(dsta);
                   1097: {      ULONG newv = dst - src;
                   1098: {      bool flgs = ((BYTE)(src)) < 0;
                   1099:        bool flgo = ((BYTE)(dst)) < 0;
                   1100:        bool flgn = ((BYTE)(newv)) < 0;
                   1101:        regs.z = ((BYTE)(newv)) == 0;
                   1102:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1103:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
                   1104:        regs.n = flgn != 0;
                   1105:        put_byte(dsta,newv);
                   1106: }}}}}}
                   1107: void op_430(UWORD opcode)
                   1108: {
                   1109:        ULONG dstreg = (opcode & 7) >> 0;
                   1110: {{     BYTE src = nextiword();
                   1111: {      CPTR dsta = regs.a[dstreg];
                   1112:        UWORD dstdp = nextiword();
                   1113:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   1114: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   1115:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   1116:        dsta += dstdpr;
                   1117: {      BYTE dst = get_byte(dsta);
                   1118: {      ULONG newv = dst - src;
                   1119: {      bool flgs = ((BYTE)(src)) < 0;
                   1120:        bool flgo = ((BYTE)(dst)) < 0;
                   1121:        bool flgn = ((BYTE)(newv)) < 0;
                   1122:        regs.z = ((BYTE)(newv)) == 0;
                   1123:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1124:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
                   1125:        regs.n = flgn != 0;
                   1126:        put_byte(dsta,newv);
                   1127: }}}}}}}}
                   1128: void op_438(UWORD opcode)
                   1129: {
                   1130: {{     BYTE src = nextiword();
                   1131: {      CPTR dsta = (LONG)(WORD)nextiword();
                   1132:        BYTE dst = get_byte(dsta);
                   1133: {      ULONG newv = dst - src;
                   1134: {      bool flgs = ((BYTE)(src)) < 0;
                   1135:        bool flgo = ((BYTE)(dst)) < 0;
                   1136:        bool flgn = ((BYTE)(newv)) < 0;
                   1137:        regs.z = ((BYTE)(newv)) == 0;
                   1138:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1139:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
                   1140:        regs.n = flgn != 0;
                   1141:        put_byte(dsta,newv);
                   1142: }}}}}}
                   1143: void op_439(UWORD opcode)
                   1144: {
                   1145: {{     BYTE src = nextiword();
                   1146: {      CPTR dsta = nextilong();
                   1147:        BYTE dst = get_byte(dsta);
                   1148: {      ULONG newv = dst - src;
                   1149: {      bool flgs = ((BYTE)(src)) < 0;
                   1150:        bool flgo = ((BYTE)(dst)) < 0;
                   1151:        bool flgn = ((BYTE)(newv)) < 0;
                   1152:        regs.z = ((BYTE)(newv)) == 0;
                   1153:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1154:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
                   1155:        regs.n = flgn != 0;
                   1156:        put_byte(dsta,newv);
                   1157: }}}}}}
                   1158: void op_440(UWORD opcode)
                   1159: {
                   1160:        ULONG dstreg = (opcode & 7) >> 0;
                   1161: {{     WORD src = nextiword();
                   1162: {      WORD dst = regs.d[dstreg];
                   1163: {      ULONG newv = dst - src;
                   1164: {      bool flgs = ((WORD)(src)) < 0;
                   1165:        bool flgo = ((WORD)(dst)) < 0;
                   1166:        bool flgn = ((WORD)(newv)) < 0;
                   1167:        regs.z = ((WORD)(newv)) == 0;
                   1168:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1169:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
                   1170:        regs.n = flgn != 0;
                   1171:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
                   1172: }}}}}}
                   1173: void op_450(UWORD opcode)
                   1174: {
                   1175:        ULONG dstreg = (opcode & 7) >> 0;
                   1176: {{     WORD src = nextiword();
                   1177: {      CPTR dsta = regs.a[dstreg];
                   1178:        WORD dst = get_word(dsta);
                   1179: {      ULONG newv = dst - src;
                   1180: {      bool flgs = ((WORD)(src)) < 0;
                   1181:        bool flgo = ((WORD)(dst)) < 0;
                   1182:        bool flgn = ((WORD)(newv)) < 0;
                   1183:        regs.z = ((WORD)(newv)) == 0;
                   1184:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1185:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
                   1186:        regs.n = flgn != 0;
                   1187:        put_word(dsta,newv);
                   1188: }}}}}}
                   1189: void op_458(UWORD opcode)
                   1190: {
                   1191:        ULONG dstreg = (opcode & 7) >> 0;
                   1192: {{     WORD src = nextiword();
                   1193: {      CPTR dsta = regs.a[dstreg];
                   1194:        WORD dst = get_word(dsta);
                   1195: {      regs.a[dstreg] += 2;
                   1196: {      ULONG newv = dst - src;
                   1197: {      bool flgs = ((WORD)(src)) < 0;
                   1198:        bool flgo = ((WORD)(dst)) < 0;
                   1199:        bool flgn = ((WORD)(newv)) < 0;
                   1200:        regs.z = ((WORD)(newv)) == 0;
                   1201:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1202:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
                   1203:        regs.n = flgn != 0;
                   1204:        put_word(dsta,newv);
                   1205: }}}}}}}
                   1206: void op_460(UWORD opcode)
                   1207: {
                   1208:        ULONG dstreg = (opcode & 7) >> 0;
                   1209: {{     WORD src = nextiword();
                   1210: {      regs.a[dstreg] -= 2;
                   1211: {      CPTR dsta = regs.a[dstreg];
                   1212:        WORD dst = get_word(dsta);
                   1213: {      ULONG newv = dst - src;
                   1214: {      bool flgs = ((WORD)(src)) < 0;
                   1215:        bool flgo = ((WORD)(dst)) < 0;
                   1216:        bool flgn = ((WORD)(newv)) < 0;
                   1217:        regs.z = ((WORD)(newv)) == 0;
                   1218:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1219:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
                   1220:        regs.n = flgn != 0;
                   1221:        put_word(dsta,newv);
                   1222: }}}}}}}
                   1223: void op_468(UWORD opcode)
                   1224: {
                   1225:        ULONG dstreg = (opcode & 7) >> 0;
                   1226: {{     WORD src = nextiword();
                   1227: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   1228:        WORD dst = get_word(dsta);
                   1229: {      ULONG newv = dst - src;
                   1230: {      bool flgs = ((WORD)(src)) < 0;
                   1231:        bool flgo = ((WORD)(dst)) < 0;
                   1232:        bool flgn = ((WORD)(newv)) < 0;
                   1233:        regs.z = ((WORD)(newv)) == 0;
                   1234:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1235:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
                   1236:        regs.n = flgn != 0;
                   1237:        put_word(dsta,newv);
                   1238: }}}}}}
                   1239: void op_470(UWORD opcode)
                   1240: {
                   1241:        ULONG dstreg = (opcode & 7) >> 0;
                   1242: {{     WORD src = nextiword();
                   1243: {      CPTR dsta = regs.a[dstreg];
                   1244:        UWORD dstdp = nextiword();
                   1245:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   1246: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   1247:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   1248:        dsta += dstdpr;
                   1249: {      WORD dst = get_word(dsta);
                   1250: {      ULONG newv = dst - src;
                   1251: {      bool flgs = ((WORD)(src)) < 0;
                   1252:        bool flgo = ((WORD)(dst)) < 0;
                   1253:        bool flgn = ((WORD)(newv)) < 0;
                   1254:        regs.z = ((WORD)(newv)) == 0;
                   1255:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1256:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
                   1257:        regs.n = flgn != 0;
                   1258:        put_word(dsta,newv);
                   1259: }}}}}}}}
                   1260: void op_478(UWORD opcode)
                   1261: {
                   1262: {{     WORD src = nextiword();
                   1263: {      CPTR dsta = (LONG)(WORD)nextiword();
                   1264:        WORD dst = get_word(dsta);
                   1265: {      ULONG newv = dst - src;
                   1266: {      bool flgs = ((WORD)(src)) < 0;
                   1267:        bool flgo = ((WORD)(dst)) < 0;
                   1268:        bool flgn = ((WORD)(newv)) < 0;
                   1269:        regs.z = ((WORD)(newv)) == 0;
                   1270:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1271:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
                   1272:        regs.n = flgn != 0;
                   1273:        put_word(dsta,newv);
                   1274: }}}}}}
                   1275: void op_479(UWORD opcode)
                   1276: {
                   1277: {{     WORD src = nextiword();
                   1278: {      CPTR dsta = nextilong();
                   1279:        WORD dst = get_word(dsta);
                   1280: {      ULONG newv = dst - src;
                   1281: {      bool flgs = ((WORD)(src)) < 0;
                   1282:        bool flgo = ((WORD)(dst)) < 0;
                   1283:        bool flgn = ((WORD)(newv)) < 0;
                   1284:        regs.z = ((WORD)(newv)) == 0;
                   1285:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1286:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
                   1287:        regs.n = flgn != 0;
                   1288:        put_word(dsta,newv);
                   1289: }}}}}}
                   1290: void op_480(UWORD opcode)
                   1291: {
                   1292:        ULONG dstreg = (opcode & 7) >> 0;
                   1293: {{     LONG src = nextilong();
                   1294: {      LONG dst = regs.d[dstreg];
                   1295: {      ULONG newv = dst - src;
                   1296: {      bool flgs = ((LONG)(src)) < 0;
                   1297:        bool flgo = ((LONG)(dst)) < 0;
                   1298:        bool flgn = ((LONG)(newv)) < 0;
                   1299:        regs.z = ((LONG)(newv)) == 0;
                   1300:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1301:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
                   1302:        regs.n = flgn != 0;
                   1303:        regs.d[dstreg] = (newv);
                   1304: }}}}}}
                   1305: void op_490(UWORD opcode)
                   1306: {
                   1307:        ULONG dstreg = (opcode & 7) >> 0;
                   1308: {{     LONG src = nextilong();
                   1309: {      CPTR dsta = regs.a[dstreg];
                   1310:        LONG dst = get_long(dsta);
                   1311: {      ULONG newv = dst - src;
                   1312: {      bool flgs = ((LONG)(src)) < 0;
                   1313:        bool flgo = ((LONG)(dst)) < 0;
                   1314:        bool flgn = ((LONG)(newv)) < 0;
                   1315:        regs.z = ((LONG)(newv)) == 0;
                   1316:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1317:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
                   1318:        regs.n = flgn != 0;
                   1319:        put_long(dsta,newv);
                   1320: }}}}}}
                   1321: void op_498(UWORD opcode)
                   1322: {
                   1323:        ULONG dstreg = (opcode & 7) >> 0;
                   1324: {{     LONG src = nextilong();
                   1325: {      CPTR dsta = regs.a[dstreg];
                   1326:        LONG dst = get_long(dsta);
                   1327: {      regs.a[dstreg] += 4;
                   1328: {      ULONG newv = dst - src;
                   1329: {      bool flgs = ((LONG)(src)) < 0;
                   1330:        bool flgo = ((LONG)(dst)) < 0;
                   1331:        bool flgn = ((LONG)(newv)) < 0;
                   1332:        regs.z = ((LONG)(newv)) == 0;
                   1333:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1334:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
                   1335:        regs.n = flgn != 0;
                   1336:        put_long(dsta,newv);
                   1337: }}}}}}}
                   1338: void op_4a0(UWORD opcode)
                   1339: {
                   1340:        ULONG dstreg = (opcode & 7) >> 0;
                   1341: {{     LONG src = nextilong();
                   1342: {      regs.a[dstreg] -= 4;
                   1343: {      CPTR dsta = regs.a[dstreg];
                   1344:        LONG dst = get_long(dsta);
                   1345: {      ULONG newv = dst - src;
                   1346: {      bool flgs = ((LONG)(src)) < 0;
                   1347:        bool flgo = ((LONG)(dst)) < 0;
                   1348:        bool flgn = ((LONG)(newv)) < 0;
                   1349:        regs.z = ((LONG)(newv)) == 0;
                   1350:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1351:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
                   1352:        regs.n = flgn != 0;
                   1353:        put_long(dsta,newv);
                   1354: }}}}}}}
                   1355: void op_4a8(UWORD opcode)
                   1356: {
                   1357:        ULONG dstreg = (opcode & 7) >> 0;
                   1358: {{     LONG src = nextilong();
                   1359: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   1360:        LONG dst = get_long(dsta);
                   1361: {      ULONG newv = dst - src;
                   1362: {      bool flgs = ((LONG)(src)) < 0;
                   1363:        bool flgo = ((LONG)(dst)) < 0;
                   1364:        bool flgn = ((LONG)(newv)) < 0;
                   1365:        regs.z = ((LONG)(newv)) == 0;
                   1366:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1367:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
                   1368:        regs.n = flgn != 0;
                   1369:        put_long(dsta,newv);
                   1370: }}}}}}
                   1371: void op_4b0(UWORD opcode)
                   1372: {
                   1373:        ULONG dstreg = (opcode & 7) >> 0;
                   1374: {{     LONG src = nextilong();
                   1375: {      CPTR dsta = regs.a[dstreg];
                   1376:        UWORD dstdp = nextiword();
                   1377:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   1378: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   1379:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   1380:        dsta += dstdpr;
                   1381: {      LONG dst = get_long(dsta);
                   1382: {      ULONG newv = dst - src;
                   1383: {      bool flgs = ((LONG)(src)) < 0;
                   1384:        bool flgo = ((LONG)(dst)) < 0;
                   1385:        bool flgn = ((LONG)(newv)) < 0;
                   1386:        regs.z = ((LONG)(newv)) == 0;
                   1387:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1388:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
                   1389:        regs.n = flgn != 0;
                   1390:        put_long(dsta,newv);
                   1391: }}}}}}}}
                   1392: void op_4b8(UWORD opcode)
                   1393: {
                   1394: {{     LONG src = nextilong();
                   1395: {      CPTR dsta = (LONG)(WORD)nextiword();
                   1396:        LONG dst = get_long(dsta);
                   1397: {      ULONG newv = dst - src;
                   1398: {      bool flgs = ((LONG)(src)) < 0;
                   1399:        bool flgo = ((LONG)(dst)) < 0;
                   1400:        bool flgn = ((LONG)(newv)) < 0;
                   1401:        regs.z = ((LONG)(newv)) == 0;
                   1402:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1403:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
                   1404:        regs.n = flgn != 0;
                   1405:        put_long(dsta,newv);
                   1406: }}}}}}
                   1407: void op_4b9(UWORD opcode)
                   1408: {
                   1409: {{     LONG src = nextilong();
                   1410: {      CPTR dsta = nextilong();
                   1411:        LONG dst = get_long(dsta);
                   1412: {      ULONG newv = dst - src;
                   1413: {      bool flgs = ((LONG)(src)) < 0;
                   1414:        bool flgo = ((LONG)(dst)) < 0;
                   1415:        bool flgn = ((LONG)(newv)) < 0;
                   1416:        regs.z = ((LONG)(newv)) == 0;
                   1417:        regs.v = (flgs != flgo) && (flgn != flgo);
                   1418:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
                   1419:        regs.n = flgn != 0;
                   1420:        put_long(dsta,newv);
                   1421: }}}}}}
                   1422: void op_600(UWORD opcode)
                   1423: {
                   1424:        ULONG dstreg = (opcode & 7) >> 0;
                   1425: {{     BYTE src = nextiword();
                   1426: {      BYTE dst = regs.d[dstreg];
                   1427: {      ULONG newv = dst + src;
                   1428: {      bool flgs = ((BYTE)(src)) < 0;
                   1429:        bool flgo = ((BYTE)(dst)) < 0;
                   1430:        bool flgn = ((BYTE)(newv)) < 0;
                   1431:        regs.z = ((BYTE)(newv)) == 0;
                   1432:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1433:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
                   1434:        regs.n = flgn != 0;
                   1435:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
                   1436: }}}}}}
                   1437: void op_610(UWORD opcode)
                   1438: {
                   1439:        ULONG dstreg = (opcode & 7) >> 0;
                   1440: {{     BYTE src = nextiword();
                   1441: {      CPTR dsta = regs.a[dstreg];
                   1442:        BYTE dst = get_byte(dsta);
                   1443: {      ULONG newv = dst + src;
                   1444: {      bool flgs = ((BYTE)(src)) < 0;
                   1445:        bool flgo = ((BYTE)(dst)) < 0;
                   1446:        bool flgn = ((BYTE)(newv)) < 0;
                   1447:        regs.z = ((BYTE)(newv)) == 0;
                   1448:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1449:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
                   1450:        regs.n = flgn != 0;
                   1451:        put_byte(dsta,newv);
                   1452: }}}}}}
                   1453: void op_618(UWORD opcode)
                   1454: {
                   1455:        ULONG dstreg = (opcode & 7) >> 0;
                   1456: {{     BYTE src = nextiword();
                   1457: {      CPTR dsta = regs.a[dstreg];
                   1458:        BYTE dst = get_byte(dsta);
                   1459: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                   1460: {      ULONG newv = dst + src;
                   1461: {      bool flgs = ((BYTE)(src)) < 0;
                   1462:        bool flgo = ((BYTE)(dst)) < 0;
                   1463:        bool flgn = ((BYTE)(newv)) < 0;
                   1464:        regs.z = ((BYTE)(newv)) == 0;
                   1465:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1466:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
                   1467:        regs.n = flgn != 0;
                   1468:        put_byte(dsta,newv);
                   1469: }}}}}}}
                   1470: void op_620(UWORD opcode)
                   1471: {
                   1472:        ULONG dstreg = (opcode & 7) >> 0;
                   1473: {{     BYTE src = nextiword();
                   1474: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                   1475: {      CPTR dsta = regs.a[dstreg];
                   1476:        BYTE dst = get_byte(dsta);
                   1477: {      ULONG newv = dst + src;
                   1478: {      bool flgs = ((BYTE)(src)) < 0;
                   1479:        bool flgo = ((BYTE)(dst)) < 0;
                   1480:        bool flgn = ((BYTE)(newv)) < 0;
                   1481:        regs.z = ((BYTE)(newv)) == 0;
                   1482:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1483:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
                   1484:        regs.n = flgn != 0;
                   1485:        put_byte(dsta,newv);
                   1486: }}}}}}}
                   1487: void op_628(UWORD opcode)
                   1488: {
                   1489:        ULONG dstreg = (opcode & 7) >> 0;
                   1490: {{     BYTE src = nextiword();
                   1491: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   1492:        BYTE dst = get_byte(dsta);
                   1493: {      ULONG newv = dst + src;
                   1494: {      bool flgs = ((BYTE)(src)) < 0;
                   1495:        bool flgo = ((BYTE)(dst)) < 0;
                   1496:        bool flgn = ((BYTE)(newv)) < 0;
                   1497:        regs.z = ((BYTE)(newv)) == 0;
                   1498:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1499:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
                   1500:        regs.n = flgn != 0;
                   1501:        put_byte(dsta,newv);
                   1502: }}}}}}
                   1503: void op_630(UWORD opcode)
                   1504: {
                   1505:        ULONG dstreg = (opcode & 7) >> 0;
                   1506: {{     BYTE src = nextiword();
                   1507: {      CPTR dsta = regs.a[dstreg];
                   1508:        UWORD dstdp = nextiword();
                   1509:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   1510: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   1511:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   1512:        dsta += dstdpr;
                   1513: {      BYTE dst = get_byte(dsta);
                   1514: {      ULONG newv = dst + src;
                   1515: {      bool flgs = ((BYTE)(src)) < 0;
                   1516:        bool flgo = ((BYTE)(dst)) < 0;
                   1517:        bool flgn = ((BYTE)(newv)) < 0;
                   1518:        regs.z = ((BYTE)(newv)) == 0;
                   1519:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1520:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
                   1521:        regs.n = flgn != 0;
                   1522:        put_byte(dsta,newv);
                   1523: }}}}}}}}
                   1524: void op_638(UWORD opcode)
                   1525: {
                   1526: {{     BYTE src = nextiword();
                   1527: {      CPTR dsta = (LONG)(WORD)nextiword();
                   1528:        BYTE dst = get_byte(dsta);
                   1529: {      ULONG newv = dst + src;
                   1530: {      bool flgs = ((BYTE)(src)) < 0;
                   1531:        bool flgo = ((BYTE)(dst)) < 0;
                   1532:        bool flgn = ((BYTE)(newv)) < 0;
                   1533:        regs.z = ((BYTE)(newv)) == 0;
                   1534:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1535:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
                   1536:        regs.n = flgn != 0;
                   1537:        put_byte(dsta,newv);
                   1538: }}}}}}
                   1539: void op_639(UWORD opcode)
                   1540: {
                   1541: {{     BYTE src = nextiword();
                   1542: {      CPTR dsta = nextilong();
                   1543:        BYTE dst = get_byte(dsta);
                   1544: {      ULONG newv = dst + src;
                   1545: {      bool flgs = ((BYTE)(src)) < 0;
                   1546:        bool flgo = ((BYTE)(dst)) < 0;
                   1547:        bool flgn = ((BYTE)(newv)) < 0;
                   1548:        regs.z = ((BYTE)(newv)) == 0;
                   1549:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1550:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
                   1551:        regs.n = flgn != 0;
                   1552:        put_byte(dsta,newv);
                   1553: }}}}}}
                   1554: void op_640(UWORD opcode)
                   1555: {
                   1556:        ULONG dstreg = (opcode & 7) >> 0;
                   1557: {{     WORD src = nextiword();
                   1558: {      WORD dst = regs.d[dstreg];
                   1559: {      ULONG newv = dst + src;
                   1560: {      bool flgs = ((WORD)(src)) < 0;
                   1561:        bool flgo = ((WORD)(dst)) < 0;
                   1562:        bool flgn = ((WORD)(newv)) < 0;
                   1563:        regs.z = ((WORD)(newv)) == 0;
                   1564:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1565:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
                   1566:        regs.n = flgn != 0;
                   1567:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
                   1568: }}}}}}
                   1569: void op_650(UWORD opcode)
                   1570: {
                   1571:        ULONG dstreg = (opcode & 7) >> 0;
                   1572: {{     WORD src = nextiword();
                   1573: {      CPTR dsta = regs.a[dstreg];
                   1574:        WORD dst = get_word(dsta);
                   1575: {      ULONG newv = dst + src;
                   1576: {      bool flgs = ((WORD)(src)) < 0;
                   1577:        bool flgo = ((WORD)(dst)) < 0;
                   1578:        bool flgn = ((WORD)(newv)) < 0;
                   1579:        regs.z = ((WORD)(newv)) == 0;
                   1580:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1581:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
                   1582:        regs.n = flgn != 0;
                   1583:        put_word(dsta,newv);
                   1584: }}}}}}
                   1585: void op_658(UWORD opcode)
                   1586: {
                   1587:        ULONG dstreg = (opcode & 7) >> 0;
                   1588: {{     WORD src = nextiword();
                   1589: {      CPTR dsta = regs.a[dstreg];
                   1590:        WORD dst = get_word(dsta);
                   1591: {      regs.a[dstreg] += 2;
                   1592: {      ULONG newv = dst + src;
                   1593: {      bool flgs = ((WORD)(src)) < 0;
                   1594:        bool flgo = ((WORD)(dst)) < 0;
                   1595:        bool flgn = ((WORD)(newv)) < 0;
                   1596:        regs.z = ((WORD)(newv)) == 0;
                   1597:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1598:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
                   1599:        regs.n = flgn != 0;
                   1600:        put_word(dsta,newv);
                   1601: }}}}}}}
                   1602: void op_660(UWORD opcode)
                   1603: {
                   1604:        ULONG dstreg = (opcode & 7) >> 0;
                   1605: {{     WORD src = nextiword();
                   1606: {      regs.a[dstreg] -= 2;
                   1607: {      CPTR dsta = regs.a[dstreg];
                   1608:        WORD dst = get_word(dsta);
                   1609: {      ULONG newv = dst + src;
                   1610: {      bool flgs = ((WORD)(src)) < 0;
                   1611:        bool flgo = ((WORD)(dst)) < 0;
                   1612:        bool flgn = ((WORD)(newv)) < 0;
                   1613:        regs.z = ((WORD)(newv)) == 0;
                   1614:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1615:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
                   1616:        regs.n = flgn != 0;
                   1617:        put_word(dsta,newv);
                   1618: }}}}}}}
                   1619: void op_668(UWORD opcode)
                   1620: {
                   1621:        ULONG dstreg = (opcode & 7) >> 0;
                   1622: {{     WORD src = nextiword();
                   1623: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   1624:        WORD dst = get_word(dsta);
                   1625: {      ULONG newv = dst + src;
                   1626: {      bool flgs = ((WORD)(src)) < 0;
                   1627:        bool flgo = ((WORD)(dst)) < 0;
                   1628:        bool flgn = ((WORD)(newv)) < 0;
                   1629:        regs.z = ((WORD)(newv)) == 0;
                   1630:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1631:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
                   1632:        regs.n = flgn != 0;
                   1633:        put_word(dsta,newv);
                   1634: }}}}}}
                   1635: void op_670(UWORD opcode)
                   1636: {
                   1637:        ULONG dstreg = (opcode & 7) >> 0;
                   1638: {{     WORD src = nextiword();
                   1639: {      CPTR dsta = regs.a[dstreg];
                   1640:        UWORD dstdp = nextiword();
                   1641:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   1642: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   1643:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   1644:        dsta += dstdpr;
                   1645: {      WORD dst = get_word(dsta);
                   1646: {      ULONG newv = dst + src;
                   1647: {      bool flgs = ((WORD)(src)) < 0;
                   1648:        bool flgo = ((WORD)(dst)) < 0;
                   1649:        bool flgn = ((WORD)(newv)) < 0;
                   1650:        regs.z = ((WORD)(newv)) == 0;
                   1651:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1652:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
                   1653:        regs.n = flgn != 0;
                   1654:        put_word(dsta,newv);
                   1655: }}}}}}}}
                   1656: void op_678(UWORD opcode)
                   1657: {
                   1658: {{     WORD src = nextiword();
                   1659: {      CPTR dsta = (LONG)(WORD)nextiword();
                   1660:        WORD dst = get_word(dsta);
                   1661: {      ULONG newv = dst + src;
                   1662: {      bool flgs = ((WORD)(src)) < 0;
                   1663:        bool flgo = ((WORD)(dst)) < 0;
                   1664:        bool flgn = ((WORD)(newv)) < 0;
                   1665:        regs.z = ((WORD)(newv)) == 0;
                   1666:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1667:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
                   1668:        regs.n = flgn != 0;
                   1669:        put_word(dsta,newv);
                   1670: }}}}}}
                   1671: void op_679(UWORD opcode)
                   1672: {
                   1673: {{     WORD src = nextiword();
                   1674: {      CPTR dsta = nextilong();
                   1675:        WORD dst = get_word(dsta);
                   1676: {      ULONG newv = dst + src;
                   1677: {      bool flgs = ((WORD)(src)) < 0;
                   1678:        bool flgo = ((WORD)(dst)) < 0;
                   1679:        bool flgn = ((WORD)(newv)) < 0;
                   1680:        regs.z = ((WORD)(newv)) == 0;
                   1681:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1682:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
                   1683:        regs.n = flgn != 0;
                   1684:        put_word(dsta,newv);
                   1685: }}}}}}
                   1686: void op_680(UWORD opcode)
                   1687: {
                   1688:        ULONG dstreg = (opcode & 7) >> 0;
                   1689: {{     LONG src = nextilong();
                   1690: {      LONG dst = regs.d[dstreg];
                   1691: {      ULONG newv = dst + src;
                   1692: {      bool flgs = ((LONG)(src)) < 0;
                   1693:        bool flgo = ((LONG)(dst)) < 0;
                   1694:        bool flgn = ((LONG)(newv)) < 0;
                   1695:        regs.z = ((LONG)(newv)) == 0;
                   1696:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1697:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
                   1698:        regs.n = flgn != 0;
                   1699:        regs.d[dstreg] = (newv);
                   1700: }}}}}}
                   1701: void op_690(UWORD opcode)
                   1702: {
                   1703:        ULONG dstreg = (opcode & 7) >> 0;
                   1704: {{     LONG src = nextilong();
                   1705: {      CPTR dsta = regs.a[dstreg];
                   1706:        LONG dst = get_long(dsta);
                   1707: {      ULONG newv = dst + src;
                   1708: {      bool flgs = ((LONG)(src)) < 0;
                   1709:        bool flgo = ((LONG)(dst)) < 0;
                   1710:        bool flgn = ((LONG)(newv)) < 0;
                   1711:        regs.z = ((LONG)(newv)) == 0;
                   1712:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1713:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
                   1714:        regs.n = flgn != 0;
                   1715:        put_long(dsta,newv);
                   1716: }}}}}}
                   1717: void op_698(UWORD opcode)
                   1718: {
                   1719:        ULONG dstreg = (opcode & 7) >> 0;
                   1720: {{     LONG src = nextilong();
                   1721: {      CPTR dsta = regs.a[dstreg];
                   1722:        LONG dst = get_long(dsta);
                   1723: {      regs.a[dstreg] += 4;
                   1724: {      ULONG newv = dst + src;
                   1725: {      bool flgs = ((LONG)(src)) < 0;
                   1726:        bool flgo = ((LONG)(dst)) < 0;
                   1727:        bool flgn = ((LONG)(newv)) < 0;
                   1728:        regs.z = ((LONG)(newv)) == 0;
                   1729:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1730:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
                   1731:        regs.n = flgn != 0;
                   1732:        put_long(dsta,newv);
                   1733: }}}}}}}
                   1734: void op_6a0(UWORD opcode)
                   1735: {
                   1736:        ULONG dstreg = (opcode & 7) >> 0;
                   1737: {{     LONG src = nextilong();
                   1738: {      regs.a[dstreg] -= 4;
                   1739: {      CPTR dsta = regs.a[dstreg];
                   1740:        LONG dst = get_long(dsta);
                   1741: {      ULONG newv = dst + src;
                   1742: {      bool flgs = ((LONG)(src)) < 0;
                   1743:        bool flgo = ((LONG)(dst)) < 0;
                   1744:        bool flgn = ((LONG)(newv)) < 0;
                   1745:        regs.z = ((LONG)(newv)) == 0;
                   1746:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1747:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
                   1748:        regs.n = flgn != 0;
                   1749:        put_long(dsta,newv);
                   1750: }}}}}}}
                   1751: void op_6a8(UWORD opcode)
                   1752: {
                   1753:        ULONG dstreg = (opcode & 7) >> 0;
                   1754: {{     LONG src = nextilong();
                   1755: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   1756:        LONG dst = get_long(dsta);
                   1757: {      ULONG newv = dst + src;
                   1758: {      bool flgs = ((LONG)(src)) < 0;
                   1759:        bool flgo = ((LONG)(dst)) < 0;
                   1760:        bool flgn = ((LONG)(newv)) < 0;
                   1761:        regs.z = ((LONG)(newv)) == 0;
                   1762:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1763:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
                   1764:        regs.n = flgn != 0;
                   1765:        put_long(dsta,newv);
                   1766: }}}}}}
                   1767: void op_6b0(UWORD opcode)
                   1768: {
                   1769:        ULONG dstreg = (opcode & 7) >> 0;
                   1770: {{     LONG src = nextilong();
                   1771: {      CPTR dsta = regs.a[dstreg];
                   1772:        UWORD dstdp = nextiword();
                   1773:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   1774: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   1775:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   1776:        dsta += dstdpr;
                   1777: {      LONG dst = get_long(dsta);
                   1778: {      ULONG newv = dst + src;
                   1779: {      bool flgs = ((LONG)(src)) < 0;
                   1780:        bool flgo = ((LONG)(dst)) < 0;
                   1781:        bool flgn = ((LONG)(newv)) < 0;
                   1782:        regs.z = ((LONG)(newv)) == 0;
                   1783:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1784:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
                   1785:        regs.n = flgn != 0;
                   1786:        put_long(dsta,newv);
                   1787: }}}}}}}}
                   1788: void op_6b8(UWORD opcode)
                   1789: {
                   1790: {{     LONG src = nextilong();
                   1791: {      CPTR dsta = (LONG)(WORD)nextiword();
                   1792:        LONG dst = get_long(dsta);
                   1793: {      ULONG newv = dst + src;
                   1794: {      bool flgs = ((LONG)(src)) < 0;
                   1795:        bool flgo = ((LONG)(dst)) < 0;
                   1796:        bool flgn = ((LONG)(newv)) < 0;
                   1797:        regs.z = ((LONG)(newv)) == 0;
                   1798:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1799:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
                   1800:        regs.n = flgn != 0;
                   1801:        put_long(dsta,newv);
                   1802: }}}}}}
                   1803: void op_6b9(UWORD opcode)
                   1804: {
                   1805: {{     LONG src = nextilong();
                   1806: {      CPTR dsta = nextilong();
                   1807:        LONG dst = get_long(dsta);
                   1808: {      ULONG newv = dst + src;
                   1809: {      bool flgs = ((LONG)(src)) < 0;
                   1810:        bool flgo = ((LONG)(dst)) < 0;
                   1811:        bool flgn = ((LONG)(newv)) < 0;
                   1812:        regs.z = ((LONG)(newv)) == 0;
                   1813:        regs.v = (flgs == flgo) && (flgn != flgo);
                   1814:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
                   1815:        regs.n = flgn != 0;
                   1816:        put_long(dsta,newv);
                   1817: }}}}}}
                   1818: void op_800(UWORD opcode)
                   1819: {
                   1820:        ULONG dstreg = (opcode & 7) >> 0;
                   1821: {{     WORD src = nextiword();
                   1822: {      LONG dst = regs.d[dstreg];
                   1823:        src &= 31;
                   1824:        regs.z = !(dst & (1 << src));
                   1825: }}}}
                   1826: void op_810(UWORD opcode)
                   1827: {
                   1828:        ULONG dstreg = (opcode & 7) >> 0;
                   1829: {{     WORD src = nextiword();
                   1830: {      CPTR dsta = regs.a[dstreg];
                   1831:        BYTE dst = get_byte(dsta);
                   1832:        src &= 7;
                   1833:        regs.z = !(dst & (1 << src));
                   1834: }}}}
                   1835: void op_818(UWORD opcode)
                   1836: {
                   1837:        ULONG dstreg = (opcode & 7) >> 0;
                   1838: {{     WORD src = nextiword();
                   1839: {      CPTR dsta = regs.a[dstreg];
                   1840:        BYTE dst = get_byte(dsta);
                   1841: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                   1842:        src &= 7;
                   1843:        regs.z = !(dst & (1 << src));
                   1844: }}}}}
                   1845: void op_820(UWORD opcode)
                   1846: {
                   1847:        ULONG dstreg = (opcode & 7) >> 0;
                   1848: {{     WORD src = nextiword();
                   1849: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                   1850: {      CPTR dsta = regs.a[dstreg];
                   1851:        BYTE dst = get_byte(dsta);
                   1852:        src &= 7;
                   1853:        regs.z = !(dst & (1 << src));
                   1854: }}}}}
                   1855: void op_828(UWORD opcode)
                   1856: {
                   1857:        ULONG dstreg = (opcode & 7) >> 0;
                   1858: {{     WORD src = nextiword();
                   1859: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   1860:        BYTE dst = get_byte(dsta);
                   1861:        src &= 7;
                   1862:        regs.z = !(dst & (1 << src));
                   1863: }}}}
                   1864: void op_830(UWORD opcode)
                   1865: {
                   1866:        ULONG dstreg = (opcode & 7) >> 0;
                   1867: {{     WORD src = nextiword();
                   1868: {      CPTR dsta = regs.a[dstreg];
                   1869:        UWORD dstdp = nextiword();
                   1870:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   1871: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   1872:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   1873:        dsta += dstdpr;
                   1874: {      BYTE dst = get_byte(dsta);
                   1875:        src &= 7;
                   1876:        regs.z = !(dst & (1 << src));
                   1877: }}}}}}
                   1878: void op_838(UWORD opcode)
                   1879: {
                   1880: {{     WORD src = nextiword();
                   1881: {      CPTR dsta = (LONG)(WORD)nextiword();
                   1882:        BYTE dst = get_byte(dsta);
                   1883:        src &= 7;
                   1884:        regs.z = !(dst & (1 << src));
                   1885: }}}}
                   1886: void op_839(UWORD opcode)
                   1887: {
                   1888: {{     WORD src = nextiword();
                   1889: {      CPTR dsta = nextilong();
                   1890:        BYTE dst = get_byte(dsta);
                   1891:        src &= 7;
                   1892:        regs.z = !(dst & (1 << src));
                   1893: }}}}
                   1894: void op_83a(UWORD opcode)
                   1895: {
                   1896:        ULONG dstreg = 2;
                   1897: {{     WORD src = nextiword();
                   1898: {      CPTR dsta = m68k_getpc();
                   1899:        dsta += (LONG)(WORD)nextiword();
                   1900: {      BYTE dst = get_byte(dsta);
                   1901:        src &= 7;
                   1902:        regs.z = !(dst & (1 << src));
                   1903: }}}}}
                   1904: void op_83b(UWORD opcode)
                   1905: {
                   1906:        ULONG dstreg = 3;
                   1907: {{     WORD src = nextiword();
                   1908: {      CPTR dsta = m68k_getpc();
                   1909:        UWORD dstdp = nextiword();
                   1910:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   1911: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   1912:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   1913:        dsta += dstdpr;
                   1914: {      BYTE dst = get_byte(dsta);
                   1915:        src &= 7;
                   1916:        regs.z = !(dst & (1 << src));
                   1917: }}}}}}
                   1918: void op_840(UWORD opcode)
                   1919: {
                   1920:        ULONG dstreg = (opcode & 7) >> 0;
                   1921: {{     WORD src = nextiword();
                   1922: {      LONG dst = regs.d[dstreg];
                   1923:        src &= 31;
                   1924:        regs.z = !(dst & (1 << src));
                   1925:        dst ^= (1 << src);
                   1926:        regs.d[dstreg] = (dst);
                   1927: }}}}
                   1928: void op_850(UWORD opcode)
                   1929: {
                   1930:        ULONG dstreg = (opcode & 7) >> 0;
                   1931: {{     WORD src = nextiword();
                   1932: {      CPTR dsta = regs.a[dstreg];
                   1933:        BYTE dst = get_byte(dsta);
                   1934:        src &= 7;
                   1935:        regs.z = !(dst & (1 << src));
                   1936:        dst ^= (1 << src);
                   1937:        put_byte(dsta,dst);
                   1938: }}}}
                   1939: void op_858(UWORD opcode)
                   1940: {
                   1941:        ULONG dstreg = (opcode & 7) >> 0;
                   1942: {{     WORD src = nextiword();
                   1943: {      CPTR dsta = regs.a[dstreg];
                   1944:        BYTE dst = get_byte(dsta);
                   1945: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                   1946:        src &= 7;
                   1947:        regs.z = !(dst & (1 << src));
                   1948:        dst ^= (1 << src);
                   1949:        put_byte(dsta,dst);
                   1950: }}}}}
                   1951: void op_860(UWORD opcode)
                   1952: {
                   1953:        ULONG dstreg = (opcode & 7) >> 0;
                   1954: {{     WORD src = nextiword();
                   1955: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                   1956: {      CPTR dsta = regs.a[dstreg];
                   1957:        BYTE dst = get_byte(dsta);
                   1958:        src &= 7;
                   1959:        regs.z = !(dst & (1 << src));
                   1960:        dst ^= (1 << src);
                   1961:        put_byte(dsta,dst);
                   1962: }}}}}
                   1963: void op_868(UWORD opcode)
                   1964: {
                   1965:        ULONG dstreg = (opcode & 7) >> 0;
                   1966: {{     WORD src = nextiword();
                   1967: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   1968:        BYTE dst = get_byte(dsta);
                   1969:        src &= 7;
                   1970:        regs.z = !(dst & (1 << src));
                   1971:        dst ^= (1 << src);
                   1972:        put_byte(dsta,dst);
                   1973: }}}}
                   1974: void op_870(UWORD opcode)
                   1975: {
                   1976:        ULONG dstreg = (opcode & 7) >> 0;
                   1977: {{     WORD src = nextiword();
                   1978: {      CPTR dsta = regs.a[dstreg];
                   1979:        UWORD dstdp = nextiword();
                   1980:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   1981: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   1982:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   1983:        dsta += dstdpr;
                   1984: {      BYTE dst = get_byte(dsta);
                   1985:        src &= 7;
                   1986:        regs.z = !(dst & (1 << src));
                   1987:        dst ^= (1 << src);
                   1988:        put_byte(dsta,dst);
                   1989: }}}}}}
                   1990: void op_878(UWORD opcode)
                   1991: {
                   1992: {{     WORD src = nextiword();
                   1993: {      CPTR dsta = (LONG)(WORD)nextiword();
                   1994:        BYTE dst = get_byte(dsta);
                   1995:        src &= 7;
                   1996:        regs.z = !(dst & (1 << src));
                   1997:        dst ^= (1 << src);
                   1998:        put_byte(dsta,dst);
                   1999: }}}}
                   2000: void op_879(UWORD opcode)
                   2001: {
                   2002: {{     WORD src = nextiword();
                   2003: {      CPTR dsta = nextilong();
                   2004:        BYTE dst = get_byte(dsta);
                   2005:        src &= 7;
                   2006:        regs.z = !(dst & (1 << src));
                   2007:        dst ^= (1 << src);
                   2008:        put_byte(dsta,dst);
                   2009: }}}}
                   2010: void op_87a(UWORD opcode)
                   2011: {
                   2012:        ULONG dstreg = 2;
                   2013: {{     WORD src = nextiword();
                   2014: {      CPTR dsta = m68k_getpc();
                   2015:        dsta += (LONG)(WORD)nextiword();
                   2016: {      BYTE dst = get_byte(dsta);
                   2017:        src &= 7;
                   2018:        regs.z = !(dst & (1 << src));
                   2019:        dst ^= (1 << src);
                   2020:        put_byte(dsta,dst);
                   2021: }}}}}
                   2022: void op_87b(UWORD opcode)
                   2023: {
                   2024:        ULONG dstreg = 3;
                   2025: {{     WORD src = nextiword();
                   2026: {      CPTR dsta = m68k_getpc();
                   2027:        UWORD dstdp = nextiword();
                   2028:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   2029: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   2030:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   2031:        dsta += dstdpr;
                   2032: {      BYTE dst = get_byte(dsta);
                   2033:        src &= 7;
                   2034:        regs.z = !(dst & (1 << src));
                   2035:        dst ^= (1 << src);
                   2036:        put_byte(dsta,dst);
                   2037: }}}}}}
                   2038: void op_880(UWORD opcode)
                   2039: {
                   2040:        ULONG dstreg = (opcode & 7) >> 0;
                   2041: {{     WORD src = nextiword();
                   2042: {      LONG dst = regs.d[dstreg];
                   2043:        src &= 31;
                   2044:        regs.z = !(dst & (1 << src));
                   2045:        dst &= ~(1 << src);
                   2046:        regs.d[dstreg] = (dst);
                   2047: }}}}
                   2048: void op_890(UWORD opcode)
                   2049: {
                   2050:        ULONG dstreg = (opcode & 7) >> 0;
                   2051: {{     WORD src = nextiword();
                   2052: {      CPTR dsta = regs.a[dstreg];
                   2053:        BYTE dst = get_byte(dsta);
                   2054:        src &= 7;
                   2055:        regs.z = !(dst & (1 << src));
                   2056:        dst &= ~(1 << src);
                   2057:        put_byte(dsta,dst);
                   2058: }}}}
                   2059: void op_898(UWORD opcode)
                   2060: {
                   2061:        ULONG dstreg = (opcode & 7) >> 0;
                   2062: {{     WORD src = nextiword();
                   2063: {      CPTR dsta = regs.a[dstreg];
                   2064:        BYTE dst = get_byte(dsta);
                   2065: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                   2066:        src &= 7;
                   2067:        regs.z = !(dst & (1 << src));
                   2068:        dst &= ~(1 << src);
                   2069:        put_byte(dsta,dst);
                   2070: }}}}}
                   2071: void op_8a0(UWORD opcode)
                   2072: {
                   2073:        ULONG dstreg = (opcode & 7) >> 0;
                   2074: {{     WORD src = nextiword();
                   2075: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                   2076: {      CPTR dsta = regs.a[dstreg];
                   2077:        BYTE dst = get_byte(dsta);
                   2078:        src &= 7;
                   2079:        regs.z = !(dst & (1 << src));
                   2080:        dst &= ~(1 << src);
                   2081:        put_byte(dsta,dst);
                   2082: }}}}}
                   2083: void op_8a8(UWORD opcode)
                   2084: {
                   2085:        ULONG dstreg = (opcode & 7) >> 0;
                   2086: {{     WORD src = nextiword();
                   2087: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   2088:        BYTE dst = get_byte(dsta);
                   2089:        src &= 7;
                   2090:        regs.z = !(dst & (1 << src));
                   2091:        dst &= ~(1 << src);
                   2092:        put_byte(dsta,dst);
                   2093: }}}}
                   2094: void op_8b0(UWORD opcode)
                   2095: {
                   2096:        ULONG dstreg = (opcode & 7) >> 0;
                   2097: {{     WORD src = nextiword();
                   2098: {      CPTR dsta = regs.a[dstreg];
                   2099:        UWORD dstdp = nextiword();
                   2100:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   2101: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   2102:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   2103:        dsta += dstdpr;
                   2104: {      BYTE dst = get_byte(dsta);
                   2105:        src &= 7;
                   2106:        regs.z = !(dst & (1 << src));
                   2107:        dst &= ~(1 << src);
                   2108:        put_byte(dsta,dst);
                   2109: }}}}}}
                   2110: void op_8b8(UWORD opcode)
                   2111: {
                   2112: {{     WORD src = nextiword();
                   2113: {      CPTR dsta = (LONG)(WORD)nextiword();
                   2114:        BYTE dst = get_byte(dsta);
                   2115:        src &= 7;
                   2116:        regs.z = !(dst & (1 << src));
                   2117:        dst &= ~(1 << src);
                   2118:        put_byte(dsta,dst);
                   2119: }}}}
                   2120: void op_8b9(UWORD opcode)
                   2121: {
                   2122: {{     WORD src = nextiword();
                   2123: {      CPTR dsta = nextilong();
                   2124:        BYTE dst = get_byte(dsta);
                   2125:        src &= 7;
                   2126:        regs.z = !(dst & (1 << src));
                   2127:        dst &= ~(1 << src);
                   2128:        put_byte(dsta,dst);
                   2129: }}}}
                   2130: void op_8ba(UWORD opcode)
                   2131: {
                   2132:        ULONG dstreg = 2;
                   2133: {{     WORD src = nextiword();
                   2134: {      CPTR dsta = m68k_getpc();
                   2135:        dsta += (LONG)(WORD)nextiword();
                   2136: {      BYTE dst = get_byte(dsta);
                   2137:        src &= 7;
                   2138:        regs.z = !(dst & (1 << src));
                   2139:        dst &= ~(1 << src);
                   2140:        put_byte(dsta,dst);
                   2141: }}}}}
                   2142: void op_8bb(UWORD opcode)
                   2143: {
                   2144:        ULONG dstreg = 3;
                   2145: {{     WORD src = nextiword();
                   2146: {      CPTR dsta = m68k_getpc();
                   2147:        UWORD dstdp = nextiword();
                   2148:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   2149: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   2150:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   2151:        dsta += dstdpr;
                   2152: {      BYTE dst = get_byte(dsta);
                   2153:        src &= 7;
                   2154:        regs.z = !(dst & (1 << src));
                   2155:        dst &= ~(1 << src);
                   2156:        put_byte(dsta,dst);
                   2157: }}}}}}
                   2158: void op_8c0(UWORD opcode)
                   2159: {
                   2160:        ULONG dstreg = (opcode & 7) >> 0;
                   2161: {{     WORD src = nextiword();
                   2162: {      LONG dst = regs.d[dstreg];
                   2163:        src &= 31;
                   2164:        regs.z = !(dst & (1 << src));
                   2165:        dst |= (1 << src);
                   2166:        regs.d[dstreg] = (dst);
                   2167: }}}}
                   2168: void op_8d0(UWORD opcode)
                   2169: {
                   2170:        ULONG dstreg = (opcode & 7) >> 0;
                   2171: {{     WORD src = nextiword();
                   2172: {      CPTR dsta = regs.a[dstreg];
                   2173:        BYTE dst = get_byte(dsta);
                   2174:        src &= 7;
                   2175:        regs.z = !(dst & (1 << src));
                   2176:        dst |= (1 << src);
                   2177:        put_byte(dsta,dst);
                   2178: }}}}
                   2179: void op_8d8(UWORD opcode)
                   2180: {
                   2181:        ULONG dstreg = (opcode & 7) >> 0;
                   2182: {{     WORD src = nextiword();
                   2183: {      CPTR dsta = regs.a[dstreg];
                   2184:        BYTE dst = get_byte(dsta);
                   2185: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                   2186:        src &= 7;
                   2187:        regs.z = !(dst & (1 << src));
                   2188:        dst |= (1 << src);
                   2189:        put_byte(dsta,dst);
                   2190: }}}}}
                   2191: void op_8e0(UWORD opcode)
                   2192: {
                   2193:        ULONG dstreg = (opcode & 7) >> 0;
                   2194: {{     WORD src = nextiword();
                   2195: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                   2196: {      CPTR dsta = regs.a[dstreg];
                   2197:        BYTE dst = get_byte(dsta);
                   2198:        src &= 7;
                   2199:        regs.z = !(dst & (1 << src));
                   2200:        dst |= (1 << src);
                   2201:        put_byte(dsta,dst);
                   2202: }}}}}
                   2203: void op_8e8(UWORD opcode)
                   2204: {
                   2205:        ULONG dstreg = (opcode & 7) >> 0;
                   2206: {{     WORD src = nextiword();
                   2207: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   2208:        BYTE dst = get_byte(dsta);
                   2209:        src &= 7;
                   2210:        regs.z = !(dst & (1 << src));
                   2211:        dst |= (1 << src);
                   2212:        put_byte(dsta,dst);
                   2213: }}}}
                   2214: void op_8f0(UWORD opcode)
                   2215: {
                   2216:        ULONG dstreg = (opcode & 7) >> 0;
                   2217: {{     WORD src = nextiword();
                   2218: {      CPTR dsta = regs.a[dstreg];
                   2219:        UWORD dstdp = nextiword();
                   2220:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   2221: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   2222:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   2223:        dsta += dstdpr;
                   2224: {      BYTE dst = get_byte(dsta);
                   2225:        src &= 7;
                   2226:        regs.z = !(dst & (1 << src));
                   2227:        dst |= (1 << src);
                   2228:        put_byte(dsta,dst);
                   2229: }}}}}}
                   2230: void op_8f8(UWORD opcode)
                   2231: {
                   2232: {{     WORD src = nextiword();
                   2233: {      CPTR dsta = (LONG)(WORD)nextiword();
                   2234:        BYTE dst = get_byte(dsta);
                   2235:        src &= 7;
                   2236:        regs.z = !(dst & (1 << src));
                   2237:        dst |= (1 << src);
                   2238:        put_byte(dsta,dst);
                   2239: }}}}
                   2240: void op_8f9(UWORD opcode)
                   2241: {
                   2242: {{     WORD src = nextiword();
                   2243: {      CPTR dsta = nextilong();
                   2244:        BYTE dst = get_byte(dsta);
                   2245:        src &= 7;
                   2246:        regs.z = !(dst & (1 << src));
                   2247:        dst |= (1 << src);
                   2248:        put_byte(dsta,dst);
                   2249: }}}}
                   2250: void op_8fa(UWORD opcode)
                   2251: {
                   2252:        ULONG dstreg = 2;
                   2253: {{     WORD src = nextiword();
                   2254: {      CPTR dsta = m68k_getpc();
                   2255:        dsta += (LONG)(WORD)nextiword();
                   2256: {      BYTE dst = get_byte(dsta);
                   2257:        src &= 7;
                   2258:        regs.z = !(dst & (1 << src));
                   2259:        dst |= (1 << src);
                   2260:        put_byte(dsta,dst);
                   2261: }}}}}
                   2262: void op_8fb(UWORD opcode)
                   2263: {
                   2264:        ULONG dstreg = 3;
                   2265: {{     WORD src = nextiword();
                   2266: {      CPTR dsta = m68k_getpc();
                   2267:        UWORD dstdp = nextiword();
                   2268:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   2269: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   2270:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   2271:        dsta += dstdpr;
                   2272: {      BYTE dst = get_byte(dsta);
                   2273:        src &= 7;
                   2274:        regs.z = !(dst & (1 << src));
                   2275:        dst |= (1 << src);
                   2276:        put_byte(dsta,dst);
                   2277: }}}}}}
                   2278: void op_a00(UWORD opcode)
                   2279: {
                   2280:        ULONG dstreg = (opcode & 7) >> 0;
                   2281: {{     BYTE src = nextiword();
                   2282: {      BYTE dst = regs.d[dstreg];
                   2283:        src ^= dst;
                   2284:        regs.v = regs.c = 0;
                   2285:        regs.z = ((BYTE)(src)) == 0;
                   2286:        regs.n = ((BYTE)(src)) < 0;
                   2287:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
                   2288: }}}}
                   2289: void op_a10(UWORD opcode)
                   2290: {
                   2291:        ULONG dstreg = (opcode & 7) >> 0;
                   2292: {{     BYTE src = nextiword();
                   2293: {      CPTR dsta = regs.a[dstreg];
                   2294:        BYTE dst = get_byte(dsta);
                   2295:        src ^= dst;
                   2296:        regs.v = regs.c = 0;
                   2297:        regs.z = ((BYTE)(src)) == 0;
                   2298:        regs.n = ((BYTE)(src)) < 0;
                   2299:        put_byte(dsta,src);
                   2300: }}}}
                   2301: void op_a18(UWORD opcode)
                   2302: {
                   2303:        ULONG dstreg = (opcode & 7) >> 0;
                   2304: {{     BYTE src = nextiword();
                   2305: {      CPTR dsta = regs.a[dstreg];
                   2306:        BYTE dst = get_byte(dsta);
                   2307: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                   2308:        src ^= dst;
                   2309:        regs.v = regs.c = 0;
                   2310:        regs.z = ((BYTE)(src)) == 0;
                   2311:        regs.n = ((BYTE)(src)) < 0;
                   2312:        put_byte(dsta,src);
                   2313: }}}}}
                   2314: void op_a20(UWORD opcode)
                   2315: {
                   2316:        ULONG dstreg = (opcode & 7) >> 0;
                   2317: {{     BYTE src = nextiword();
                   2318: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                   2319: {      CPTR dsta = regs.a[dstreg];
                   2320:        BYTE dst = get_byte(dsta);
                   2321:        src ^= dst;
                   2322:        regs.v = regs.c = 0;
                   2323:        regs.z = ((BYTE)(src)) == 0;
                   2324:        regs.n = ((BYTE)(src)) < 0;
                   2325:        put_byte(dsta,src);
                   2326: }}}}}
                   2327: void op_a28(UWORD opcode)
                   2328: {
                   2329:        ULONG dstreg = (opcode & 7) >> 0;
                   2330: {{     BYTE src = nextiword();
                   2331: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   2332:        BYTE dst = get_byte(dsta);
                   2333:        src ^= dst;
                   2334:        regs.v = regs.c = 0;
                   2335:        regs.z = ((BYTE)(src)) == 0;
                   2336:        regs.n = ((BYTE)(src)) < 0;
                   2337:        put_byte(dsta,src);
                   2338: }}}}
                   2339: void op_a30(UWORD opcode)
                   2340: {
                   2341:        ULONG dstreg = (opcode & 7) >> 0;
                   2342: {{     BYTE src = nextiword();
                   2343: {      CPTR dsta = regs.a[dstreg];
                   2344:        UWORD dstdp = nextiword();
                   2345:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   2346: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   2347:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   2348:        dsta += dstdpr;
                   2349: {      BYTE dst = get_byte(dsta);
                   2350:        src ^= dst;
                   2351:        regs.v = regs.c = 0;
                   2352:        regs.z = ((BYTE)(src)) == 0;
                   2353:        regs.n = ((BYTE)(src)) < 0;
                   2354:        put_byte(dsta,src);
                   2355: }}}}}}
                   2356: void op_a38(UWORD opcode)
                   2357: {
                   2358: {{     BYTE src = nextiword();
                   2359: {      CPTR dsta = (LONG)(WORD)nextiword();
                   2360:        BYTE dst = get_byte(dsta);
                   2361:        src ^= dst;
                   2362:        regs.v = regs.c = 0;
                   2363:        regs.z = ((BYTE)(src)) == 0;
                   2364:        regs.n = ((BYTE)(src)) < 0;
                   2365:        put_byte(dsta,src);
                   2366: }}}}
                   2367: void op_a39(UWORD opcode)
                   2368: {
                   2369: {{     BYTE src = nextiword();
                   2370: {      CPTR dsta = nextilong();
                   2371:        BYTE dst = get_byte(dsta);
                   2372:        src ^= dst;
                   2373:        regs.v = regs.c = 0;
                   2374:        regs.z = ((BYTE)(src)) == 0;
                   2375:        regs.n = ((BYTE)(src)) < 0;
                   2376:        put_byte(dsta,src);
                   2377: }}}}
                   2378: void op_a3c(UWORD opcode)
                   2379: {
                   2380: {{     MakeSR();
                   2381: {      WORD src = nextiword();
                   2382:        src &= 0xFF;
                   2383:        regs.sr ^= src;
                   2384:        MakeFromSR();
                   2385: }}}}
                   2386: void op_a40(UWORD opcode)
                   2387: {
                   2388:        ULONG dstreg = (opcode & 7) >> 0;
                   2389: {{     WORD src = nextiword();
                   2390: {      WORD dst = regs.d[dstreg];
                   2391:        src ^= dst;
                   2392:        regs.v = regs.c = 0;
                   2393:        regs.z = ((WORD)(src)) == 0;
                   2394:        regs.n = ((WORD)(src)) < 0;
                   2395:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
                   2396: }}}}
                   2397: void op_a50(UWORD opcode)
                   2398: {
                   2399:        ULONG dstreg = (opcode & 7) >> 0;
                   2400: {{     WORD src = nextiword();
                   2401: {      CPTR dsta = regs.a[dstreg];
                   2402:        WORD dst = get_word(dsta);
                   2403:        src ^= dst;
                   2404:        regs.v = regs.c = 0;
                   2405:        regs.z = ((WORD)(src)) == 0;
                   2406:        regs.n = ((WORD)(src)) < 0;
                   2407:        put_word(dsta,src);
                   2408: }}}}
                   2409: void op_a58(UWORD opcode)
                   2410: {
                   2411:        ULONG dstreg = (opcode & 7) >> 0;
                   2412: {{     WORD src = nextiword();
                   2413: {      CPTR dsta = regs.a[dstreg];
                   2414:        WORD dst = get_word(dsta);
                   2415: {      regs.a[dstreg] += 2;
                   2416:        src ^= dst;
                   2417:        regs.v = regs.c = 0;
                   2418:        regs.z = ((WORD)(src)) == 0;
                   2419:        regs.n = ((WORD)(src)) < 0;
                   2420:        put_word(dsta,src);
                   2421: }}}}}
                   2422: void op_a60(UWORD opcode)
                   2423: {
                   2424:        ULONG dstreg = (opcode & 7) >> 0;
                   2425: {{     WORD src = nextiword();
                   2426: {      regs.a[dstreg] -= 2;
                   2427: {      CPTR dsta = regs.a[dstreg];
                   2428:        WORD dst = get_word(dsta);
                   2429:        src ^= dst;
                   2430:        regs.v = regs.c = 0;
                   2431:        regs.z = ((WORD)(src)) == 0;
                   2432:        regs.n = ((WORD)(src)) < 0;
                   2433:        put_word(dsta,src);
                   2434: }}}}}
                   2435: void op_a68(UWORD opcode)
                   2436: {
                   2437:        ULONG dstreg = (opcode & 7) >> 0;
                   2438: {{     WORD src = nextiword();
                   2439: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   2440:        WORD dst = get_word(dsta);
                   2441:        src ^= dst;
                   2442:        regs.v = regs.c = 0;
                   2443:        regs.z = ((WORD)(src)) == 0;
                   2444:        regs.n = ((WORD)(src)) < 0;
                   2445:        put_word(dsta,src);
                   2446: }}}}
                   2447: void op_a70(UWORD opcode)
                   2448: {
                   2449:        ULONG dstreg = (opcode & 7) >> 0;
                   2450: {{     WORD src = nextiword();
                   2451: {      CPTR dsta = regs.a[dstreg];
                   2452:        UWORD dstdp = nextiword();
                   2453:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   2454: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   2455:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   2456:        dsta += dstdpr;
                   2457: {      WORD dst = get_word(dsta);
                   2458:        src ^= dst;
                   2459:        regs.v = regs.c = 0;
                   2460:        regs.z = ((WORD)(src)) == 0;
                   2461:        regs.n = ((WORD)(src)) < 0;
                   2462:        put_word(dsta,src);
                   2463: }}}}}}
                   2464: void op_a78(UWORD opcode)
                   2465: {
                   2466: {{     WORD src = nextiword();
                   2467: {      CPTR dsta = (LONG)(WORD)nextiword();
                   2468:        WORD dst = get_word(dsta);
                   2469:        src ^= dst;
                   2470:        regs.v = regs.c = 0;
                   2471:        regs.z = ((WORD)(src)) == 0;
                   2472:        regs.n = ((WORD)(src)) < 0;
                   2473:        put_word(dsta,src);
                   2474: }}}}
                   2475: void op_a79(UWORD opcode)
                   2476: {
                   2477: {{     WORD src = nextiword();
                   2478: {      CPTR dsta = nextilong();
                   2479:        WORD dst = get_word(dsta);
                   2480:        src ^= dst;
                   2481:        regs.v = regs.c = 0;
                   2482:        regs.z = ((WORD)(src)) == 0;
                   2483:        regs.n = ((WORD)(src)) < 0;
                   2484:        put_word(dsta,src);
                   2485: }}}}
                   2486: void op_a7c(UWORD opcode)
                   2487: {
                   2488: {      if (!regs.s) { regs.pc_p--; Exception(8); } else
                   2489: {      MakeSR();
                   2490: {      WORD src = nextiword();
                   2491:        regs.sr ^= src;
                   2492:        MakeFromSR();
                   2493: }}}}
                   2494: void op_a80(UWORD opcode)
                   2495: {
                   2496:        ULONG dstreg = (opcode & 7) >> 0;
                   2497: {{     LONG src = nextilong();
                   2498: {      LONG dst = regs.d[dstreg];
                   2499:        src ^= dst;
                   2500:        regs.v = regs.c = 0;
                   2501:        regs.z = ((LONG)(src)) == 0;
                   2502:        regs.n = ((LONG)(src)) < 0;
                   2503:        regs.d[dstreg] = (src);
                   2504: }}}}
                   2505: void op_a90(UWORD opcode)
                   2506: {
                   2507:        ULONG dstreg = (opcode & 7) >> 0;
                   2508: {{     LONG src = nextilong();
                   2509: {      CPTR dsta = regs.a[dstreg];
                   2510:        LONG dst = get_long(dsta);
                   2511:        src ^= dst;
                   2512:        regs.v = regs.c = 0;
                   2513:        regs.z = ((LONG)(src)) == 0;
                   2514:        regs.n = ((LONG)(src)) < 0;
                   2515:        put_long(dsta,src);
                   2516: }}}}
                   2517: void op_a98(UWORD opcode)
                   2518: {
                   2519:        ULONG dstreg = (opcode & 7) >> 0;
                   2520: {{     LONG src = nextilong();
                   2521: {      CPTR dsta = regs.a[dstreg];
                   2522:        LONG dst = get_long(dsta);
                   2523: {      regs.a[dstreg] += 4;
                   2524:        src ^= dst;
                   2525:        regs.v = regs.c = 0;
                   2526:        regs.z = ((LONG)(src)) == 0;
                   2527:        regs.n = ((LONG)(src)) < 0;
                   2528:        put_long(dsta,src);
                   2529: }}}}}
                   2530: void op_aa0(UWORD opcode)
                   2531: {
                   2532:        ULONG dstreg = (opcode & 7) >> 0;
                   2533: {{     LONG src = nextilong();
                   2534: {      regs.a[dstreg] -= 4;
                   2535: {      CPTR dsta = regs.a[dstreg];
                   2536:        LONG dst = get_long(dsta);
                   2537:        src ^= dst;
                   2538:        regs.v = regs.c = 0;
                   2539:        regs.z = ((LONG)(src)) == 0;
                   2540:        regs.n = ((LONG)(src)) < 0;
                   2541:        put_long(dsta,src);
                   2542: }}}}}
                   2543: void op_aa8(UWORD opcode)
                   2544: {
                   2545:        ULONG dstreg = (opcode & 7) >> 0;
                   2546: {{     LONG src = nextilong();
                   2547: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   2548:        LONG dst = get_long(dsta);
                   2549:        src ^= dst;
                   2550:        regs.v = regs.c = 0;
                   2551:        regs.z = ((LONG)(src)) == 0;
                   2552:        regs.n = ((LONG)(src)) < 0;
                   2553:        put_long(dsta,src);
                   2554: }}}}
                   2555: void op_ab0(UWORD opcode)
                   2556: {
                   2557:        ULONG dstreg = (opcode & 7) >> 0;
                   2558: {{     LONG src = nextilong();
                   2559: {      CPTR dsta = regs.a[dstreg];
                   2560:        UWORD dstdp = nextiword();
                   2561:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   2562: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   2563:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   2564:        dsta += dstdpr;
                   2565: {      LONG dst = get_long(dsta);
                   2566:        src ^= dst;
                   2567:        regs.v = regs.c = 0;
                   2568:        regs.z = ((LONG)(src)) == 0;
                   2569:        regs.n = ((LONG)(src)) < 0;
                   2570:        put_long(dsta,src);
                   2571: }}}}}}
                   2572: void op_ab8(UWORD opcode)
                   2573: {
                   2574: {{     LONG src = nextilong();
                   2575: {      CPTR dsta = (LONG)(WORD)nextiword();
                   2576:        LONG dst = get_long(dsta);
                   2577:        src ^= dst;
                   2578:        regs.v = regs.c = 0;
                   2579:        regs.z = ((LONG)(src)) == 0;
                   2580:        regs.n = ((LONG)(src)) < 0;
                   2581:        put_long(dsta,src);
                   2582: }}}}
                   2583: void op_ab9(UWORD opcode)
                   2584: {
                   2585: {{     LONG src = nextilong();
                   2586: {      CPTR dsta = nextilong();
                   2587:        LONG dst = get_long(dsta);
                   2588:        src ^= dst;
                   2589:        regs.v = regs.c = 0;
                   2590:        regs.z = ((LONG)(src)) == 0;
                   2591:        regs.n = ((LONG)(src)) < 0;
                   2592:        put_long(dsta,src);
                   2593: }}}}
                   2594: void op_c00(UWORD opcode)
                   2595: {
                   2596:        ULONG dstreg = (opcode & 7) >> 0;
                   2597: {{     BYTE src = nextiword();
                   2598: {      BYTE dst = regs.d[dstreg];
                   2599: {      ULONG newv = dst - src;
                   2600: {      bool flgs = ((BYTE)(src)) < 0;
                   2601:        bool flgo = ((BYTE)(dst)) < 0;
                   2602:        bool flgn = ((BYTE)(newv)) < 0;
                   2603:        regs.z = ((BYTE)(newv)) == 0;
                   2604:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2605:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                   2606:        regs.n = flgn != 0;
                   2607: }}}}}}
                   2608: void op_c10(UWORD opcode)
                   2609: {
                   2610:        ULONG dstreg = (opcode & 7) >> 0;
                   2611: {{     BYTE src = nextiword();
                   2612: {      CPTR dsta = regs.a[dstreg];
                   2613:        BYTE dst = get_byte(dsta);
                   2614: {      ULONG newv = dst - src;
                   2615: {      bool flgs = ((BYTE)(src)) < 0;
                   2616:        bool flgo = ((BYTE)(dst)) < 0;
                   2617:        bool flgn = ((BYTE)(newv)) < 0;
                   2618:        regs.z = ((BYTE)(newv)) == 0;
                   2619:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2620:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                   2621:        regs.n = flgn != 0;
                   2622: }}}}}}
                   2623: void op_c18(UWORD opcode)
                   2624: {
                   2625:        ULONG dstreg = (opcode & 7) >> 0;
                   2626: {{     BYTE src = nextiword();
                   2627: {      CPTR dsta = regs.a[dstreg];
                   2628:        BYTE dst = get_byte(dsta);
                   2629: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
                   2630: {      ULONG newv = dst - src;
                   2631: {      bool flgs = ((BYTE)(src)) < 0;
                   2632:        bool flgo = ((BYTE)(dst)) < 0;
                   2633:        bool flgn = ((BYTE)(newv)) < 0;
                   2634:        regs.z = ((BYTE)(newv)) == 0;
                   2635:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2636:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                   2637:        regs.n = flgn != 0;
                   2638: }}}}}}}
                   2639: void op_c20(UWORD opcode)
                   2640: {
                   2641:        ULONG dstreg = (opcode & 7) >> 0;
                   2642: {{     BYTE src = nextiword();
                   2643: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
                   2644: {      CPTR dsta = regs.a[dstreg];
                   2645:        BYTE dst = get_byte(dsta);
                   2646: {      ULONG newv = dst - src;
                   2647: {      bool flgs = ((BYTE)(src)) < 0;
                   2648:        bool flgo = ((BYTE)(dst)) < 0;
                   2649:        bool flgn = ((BYTE)(newv)) < 0;
                   2650:        regs.z = ((BYTE)(newv)) == 0;
                   2651:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2652:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                   2653:        regs.n = flgn != 0;
                   2654: }}}}}}}
                   2655: void op_c28(UWORD opcode)
                   2656: {
                   2657:        ULONG dstreg = (opcode & 7) >> 0;
                   2658: {{     BYTE src = nextiword();
                   2659: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   2660:        BYTE dst = get_byte(dsta);
                   2661: {      ULONG newv = dst - src;
                   2662: {      bool flgs = ((BYTE)(src)) < 0;
                   2663:        bool flgo = ((BYTE)(dst)) < 0;
                   2664:        bool flgn = ((BYTE)(newv)) < 0;
                   2665:        regs.z = ((BYTE)(newv)) == 0;
                   2666:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2667:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                   2668:        regs.n = flgn != 0;
                   2669: }}}}}}
                   2670: void op_c30(UWORD opcode)
                   2671: {
                   2672:        ULONG dstreg = (opcode & 7) >> 0;
                   2673: {{     BYTE src = nextiword();
                   2674: {      CPTR dsta = regs.a[dstreg];
                   2675:        UWORD dstdp = nextiword();
                   2676:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   2677: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   2678:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   2679:        dsta += dstdpr;
                   2680: {      BYTE dst = get_byte(dsta);
                   2681: {      ULONG newv = dst - src;
                   2682: {      bool flgs = ((BYTE)(src)) < 0;
                   2683:        bool flgo = ((BYTE)(dst)) < 0;
                   2684:        bool flgn = ((BYTE)(newv)) < 0;
                   2685:        regs.z = ((BYTE)(newv)) == 0;
                   2686:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2687:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                   2688:        regs.n = flgn != 0;
                   2689: }}}}}}}}
                   2690: void op_c38(UWORD opcode)
                   2691: {
                   2692: {{     BYTE src = nextiword();
                   2693: {      CPTR dsta = (LONG)(WORD)nextiword();
                   2694:        BYTE dst = get_byte(dsta);
                   2695: {      ULONG newv = dst - src;
                   2696: {      bool flgs = ((BYTE)(src)) < 0;
                   2697:        bool flgo = ((BYTE)(dst)) < 0;
                   2698:        bool flgn = ((BYTE)(newv)) < 0;
                   2699:        regs.z = ((BYTE)(newv)) == 0;
                   2700:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2701:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                   2702:        regs.n = flgn != 0;
                   2703: }}}}}}
                   2704: void op_c39(UWORD opcode)
                   2705: {
                   2706: {{     BYTE src = nextiword();
                   2707: {      CPTR dsta = nextilong();
                   2708:        BYTE dst = get_byte(dsta);
                   2709: {      ULONG newv = dst - src;
                   2710: {      bool flgs = ((BYTE)(src)) < 0;
                   2711:        bool flgo = ((BYTE)(dst)) < 0;
                   2712:        bool flgn = ((BYTE)(newv)) < 0;
                   2713:        regs.z = ((BYTE)(newv)) == 0;
                   2714:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2715:        regs.c = ((UBYTE)(src)) > ((UBYTE)(dst));
                   2716:        regs.n = flgn != 0;
                   2717: }}}}}}
                   2718: void op_c40(UWORD opcode)
                   2719: {
                   2720:        ULONG dstreg = (opcode & 7) >> 0;
                   2721: {{     WORD src = nextiword();
                   2722: {      WORD dst = regs.d[dstreg];
                   2723: {      ULONG newv = dst - src;
                   2724: {      bool flgs = ((WORD)(src)) < 0;
                   2725:        bool flgo = ((WORD)(dst)) < 0;
                   2726:        bool flgn = ((WORD)(newv)) < 0;
                   2727:        regs.z = ((WORD)(newv)) == 0;
                   2728:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2729:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                   2730:        regs.n = flgn != 0;
                   2731: }}}}}}
                   2732: void op_c50(UWORD opcode)
                   2733: {
                   2734:        ULONG dstreg = (opcode & 7) >> 0;
                   2735: {{     WORD src = nextiword();
                   2736: {      CPTR dsta = regs.a[dstreg];
                   2737:        WORD dst = get_word(dsta);
                   2738: {      ULONG newv = dst - src;
                   2739: {      bool flgs = ((WORD)(src)) < 0;
                   2740:        bool flgo = ((WORD)(dst)) < 0;
                   2741:        bool flgn = ((WORD)(newv)) < 0;
                   2742:        regs.z = ((WORD)(newv)) == 0;
                   2743:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2744:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                   2745:        regs.n = flgn != 0;
                   2746: }}}}}}
                   2747: void op_c58(UWORD opcode)
                   2748: {
                   2749:        ULONG dstreg = (opcode & 7) >> 0;
                   2750: {{     WORD src = nextiword();
                   2751: {      CPTR dsta = regs.a[dstreg];
                   2752:        WORD dst = get_word(dsta);
                   2753: {      regs.a[dstreg] += 2;
                   2754: {      ULONG newv = dst - src;
                   2755: {      bool flgs = ((WORD)(src)) < 0;
                   2756:        bool flgo = ((WORD)(dst)) < 0;
                   2757:        bool flgn = ((WORD)(newv)) < 0;
                   2758:        regs.z = ((WORD)(newv)) == 0;
                   2759:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2760:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                   2761:        regs.n = flgn != 0;
                   2762: }}}}}}}
                   2763: void op_c60(UWORD opcode)
                   2764: {
                   2765:        ULONG dstreg = (opcode & 7) >> 0;
                   2766: {{     WORD src = nextiword();
                   2767: {      regs.a[dstreg] -= 2;
                   2768: {      CPTR dsta = regs.a[dstreg];
                   2769:        WORD dst = get_word(dsta);
                   2770: {      ULONG newv = dst - src;
                   2771: {      bool flgs = ((WORD)(src)) < 0;
                   2772:        bool flgo = ((WORD)(dst)) < 0;
                   2773:        bool flgn = ((WORD)(newv)) < 0;
                   2774:        regs.z = ((WORD)(newv)) == 0;
                   2775:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2776:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                   2777:        regs.n = flgn != 0;
                   2778: }}}}}}}
                   2779: void op_c68(UWORD opcode)
                   2780: {
                   2781:        ULONG dstreg = (opcode & 7) >> 0;
                   2782: {{     WORD src = nextiword();
                   2783: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   2784:        WORD dst = get_word(dsta);
                   2785: {      ULONG newv = dst - src;
                   2786: {      bool flgs = ((WORD)(src)) < 0;
                   2787:        bool flgo = ((WORD)(dst)) < 0;
                   2788:        bool flgn = ((WORD)(newv)) < 0;
                   2789:        regs.z = ((WORD)(newv)) == 0;
                   2790:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2791:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                   2792:        regs.n = flgn != 0;
                   2793: }}}}}}
                   2794: void op_c70(UWORD opcode)
                   2795: {
                   2796:        ULONG dstreg = (opcode & 7) >> 0;
                   2797: {{     WORD src = nextiword();
                   2798: {      CPTR dsta = regs.a[dstreg];
                   2799:        UWORD dstdp = nextiword();
                   2800:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   2801: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   2802:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   2803:        dsta += dstdpr;
                   2804: {      WORD dst = get_word(dsta);
                   2805: {      ULONG newv = dst - src;
                   2806: {      bool flgs = ((WORD)(src)) < 0;
                   2807:        bool flgo = ((WORD)(dst)) < 0;
                   2808:        bool flgn = ((WORD)(newv)) < 0;
                   2809:        regs.z = ((WORD)(newv)) == 0;
                   2810:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2811:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                   2812:        regs.n = flgn != 0;
                   2813: }}}}}}}}
                   2814: void op_c78(UWORD opcode)
                   2815: {
                   2816: {{     WORD src = nextiword();
                   2817: {      CPTR dsta = (LONG)(WORD)nextiword();
                   2818:        WORD dst = get_word(dsta);
                   2819: {      ULONG newv = dst - src;
                   2820: {      bool flgs = ((WORD)(src)) < 0;
                   2821:        bool flgo = ((WORD)(dst)) < 0;
                   2822:        bool flgn = ((WORD)(newv)) < 0;
                   2823:        regs.z = ((WORD)(newv)) == 0;
                   2824:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2825:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                   2826:        regs.n = flgn != 0;
                   2827: }}}}}}
                   2828: void op_c79(UWORD opcode)
                   2829: {
                   2830: {{     WORD src = nextiword();
                   2831: {      CPTR dsta = nextilong();
                   2832:        WORD dst = get_word(dsta);
                   2833: {      ULONG newv = dst - src;
                   2834: {      bool flgs = ((WORD)(src)) < 0;
                   2835:        bool flgo = ((WORD)(dst)) < 0;
                   2836:        bool flgn = ((WORD)(newv)) < 0;
                   2837:        regs.z = ((WORD)(newv)) == 0;
                   2838:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2839:        regs.c = ((UWORD)(src)) > ((UWORD)(dst));
                   2840:        regs.n = flgn != 0;
                   2841: }}}}}}
                   2842: void op_c80(UWORD opcode)
                   2843: {
                   2844:        ULONG dstreg = (opcode & 7) >> 0;
                   2845: {{     LONG src = nextilong();
                   2846: {      LONG dst = regs.d[dstreg];
                   2847: {      ULONG newv = dst - src;
                   2848: {      bool flgs = ((LONG)(src)) < 0;
                   2849:        bool flgo = ((LONG)(dst)) < 0;
                   2850:        bool flgn = ((LONG)(newv)) < 0;
                   2851:        regs.z = ((LONG)(newv)) == 0;
                   2852:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2853:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   2854:        regs.n = flgn != 0;
                   2855: }}}}}}
                   2856: void op_c90(UWORD opcode)
                   2857: {
                   2858:        ULONG dstreg = (opcode & 7) >> 0;
                   2859: {{     LONG src = nextilong();
                   2860: {      CPTR dsta = regs.a[dstreg];
                   2861:        LONG dst = get_long(dsta);
                   2862: {      ULONG newv = dst - src;
                   2863: {      bool flgs = ((LONG)(src)) < 0;
                   2864:        bool flgo = ((LONG)(dst)) < 0;
                   2865:        bool flgn = ((LONG)(newv)) < 0;
                   2866:        regs.z = ((LONG)(newv)) == 0;
                   2867:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2868:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   2869:        regs.n = flgn != 0;
                   2870: }}}}}}
                   2871: void op_c98(UWORD opcode)
                   2872: {
                   2873:        ULONG dstreg = (opcode & 7) >> 0;
                   2874: {{     LONG src = nextilong();
                   2875: {      CPTR dsta = regs.a[dstreg];
                   2876:        LONG dst = get_long(dsta);
                   2877: {      regs.a[dstreg] += 4;
                   2878: {      ULONG newv = dst - src;
                   2879: {      bool flgs = ((LONG)(src)) < 0;
                   2880:        bool flgo = ((LONG)(dst)) < 0;
                   2881:        bool flgn = ((LONG)(newv)) < 0;
                   2882:        regs.z = ((LONG)(newv)) == 0;
                   2883:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2884:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   2885:        regs.n = flgn != 0;
                   2886: }}}}}}}
                   2887: void op_ca0(UWORD opcode)
                   2888: {
                   2889:        ULONG dstreg = (opcode & 7) >> 0;
                   2890: {{     LONG src = nextilong();
                   2891: {      regs.a[dstreg] -= 4;
                   2892: {      CPTR dsta = regs.a[dstreg];
                   2893:        LONG dst = get_long(dsta);
                   2894: {      ULONG newv = dst - src;
                   2895: {      bool flgs = ((LONG)(src)) < 0;
                   2896:        bool flgo = ((LONG)(dst)) < 0;
                   2897:        bool flgn = ((LONG)(newv)) < 0;
                   2898:        regs.z = ((LONG)(newv)) == 0;
                   2899:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2900:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   2901:        regs.n = flgn != 0;
                   2902: }}}}}}}
                   2903: void op_ca8(UWORD opcode)
                   2904: {
                   2905:        ULONG dstreg = (opcode & 7) >> 0;
                   2906: {{     LONG src = nextilong();
                   2907: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
                   2908:        LONG dst = get_long(dsta);
                   2909: {      ULONG newv = dst - src;
                   2910: {      bool flgs = ((LONG)(src)) < 0;
                   2911:        bool flgo = ((LONG)(dst)) < 0;
                   2912:        bool flgn = ((LONG)(newv)) < 0;
                   2913:        regs.z = ((LONG)(newv)) == 0;
                   2914:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2915:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   2916:        regs.n = flgn != 0;
                   2917: }}}}}}
                   2918: void op_cb0(UWORD opcode)
                   2919: {
                   2920:        ULONG dstreg = (opcode & 7) >> 0;
                   2921: {{     LONG src = nextilong();
                   2922: {      CPTR dsta = regs.a[dstreg];
                   2923:        UWORD dstdp = nextiword();
                   2924:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
                   2925: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
                   2926:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
                   2927:        dsta += dstdpr;
                   2928: {      LONG dst = get_long(dsta);
                   2929: {      ULONG newv = dst - src;
                   2930: {      bool flgs = ((LONG)(src)) < 0;
                   2931:        bool flgo = ((LONG)(dst)) < 0;
                   2932:        bool flgn = ((LONG)(newv)) < 0;
                   2933:        regs.z = ((LONG)(newv)) == 0;
                   2934:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2935:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   2936:        regs.n = flgn != 0;
                   2937: }}}}}}}}
                   2938: void op_cb8(UWORD opcode)
                   2939: {
                   2940: {{     LONG src = nextilong();
                   2941: {      CPTR dsta = (LONG)(WORD)nextiword();
                   2942:        LONG dst = get_long(dsta);
                   2943: {      ULONG newv = dst - src;
                   2944: {      bool flgs = ((LONG)(src)) < 0;
                   2945:        bool flgo = ((LONG)(dst)) < 0;
                   2946:        bool flgn = ((LONG)(newv)) < 0;
                   2947:        regs.z = ((LONG)(newv)) == 0;
                   2948:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2949:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   2950:        regs.n = flgn != 0;
                   2951: }}}}}}
                   2952: void op_cb9(UWORD opcode)
                   2953: {
                   2954: {{     LONG src = nextilong();
                   2955: {      CPTR dsta = nextilong();
                   2956:        LONG dst = get_long(dsta);
                   2957: {      ULONG newv = dst - src;
                   2958: {      bool flgs = ((LONG)(src)) < 0;
                   2959:        bool flgo = ((LONG)(dst)) < 0;
                   2960:        bool flgn = ((LONG)(newv)) < 0;
                   2961:        regs.z = ((LONG)(newv)) == 0;
                   2962:        regs.v = (flgs != flgo) && (flgn != flgo);
                   2963:        regs.c = ((ULONG)(src)) > ((ULONG)(dst));
                   2964:        regs.n = flgn != 0;
                   2965: }}}}}}

unix.superglobalmegacorp.com

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