Annotation of uae/CPU Sources/cpu0.c, revision 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.