Annotation of uae/CPU Sources/cpu5.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: void op_5000(UWORD opcode)
        !            10: {
        !            11:        ULONG srcreg = 8;
        !            12:        ULONG dstreg = (opcode & 7) >> 0;
        !            13: {{     ULONG src = srcreg;
        !            14: {      BYTE dst = regs.d[dstreg];
        !            15: {      ULONG newv = dst + src;
        !            16: {      bool flgs = ((BYTE)(src)) < 0;
        !            17:        bool flgo = ((BYTE)(dst)) < 0;
        !            18:        bool flgn = ((BYTE)(newv)) < 0;
        !            19:        regs.z = ((BYTE)(newv)) == 0;
        !            20:        regs.v = (flgs == flgo) && (flgn != flgo);
        !            21:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !            22:        regs.n = flgn != 0;
        !            23:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !            24: }}}}}}
        !            25: void op_5010(UWORD opcode)
        !            26: {
        !            27:        ULONG srcreg = 8;
        !            28:        ULONG dstreg = (opcode & 7) >> 0;
        !            29: {{     ULONG src = srcreg;
        !            30: {      CPTR dsta = regs.a[dstreg];
        !            31:        BYTE dst = get_byte(dsta);
        !            32: {      ULONG newv = dst + src;
        !            33: {      bool flgs = ((BYTE)(src)) < 0;
        !            34:        bool flgo = ((BYTE)(dst)) < 0;
        !            35:        bool flgn = ((BYTE)(newv)) < 0;
        !            36:        regs.z = ((BYTE)(newv)) == 0;
        !            37:        regs.v = (flgs == flgo) && (flgn != flgo);
        !            38:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !            39:        regs.n = flgn != 0;
        !            40:        put_byte(dsta,newv);
        !            41: }}}}}}
        !            42: void op_5018(UWORD opcode)
        !            43: {
        !            44:        ULONG srcreg = 8;
        !            45:        ULONG dstreg = (opcode & 7) >> 0;
        !            46: {{     ULONG src = srcreg;
        !            47: {      CPTR dsta = regs.a[dstreg];
        !            48:        BYTE dst = get_byte(dsta);
        !            49: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !            50: {      ULONG newv = dst + src;
        !            51: {      bool flgs = ((BYTE)(src)) < 0;
        !            52:        bool flgo = ((BYTE)(dst)) < 0;
        !            53:        bool flgn = ((BYTE)(newv)) < 0;
        !            54:        regs.z = ((BYTE)(newv)) == 0;
        !            55:        regs.v = (flgs == flgo) && (flgn != flgo);
        !            56:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !            57:        regs.n = flgn != 0;
        !            58:        put_byte(dsta,newv);
        !            59: }}}}}}}
        !            60: void op_5020(UWORD opcode)
        !            61: {
        !            62:        ULONG srcreg = 8;
        !            63:        ULONG dstreg = (opcode & 7) >> 0;
        !            64: {{     ULONG src = srcreg;
        !            65: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !            66: {      CPTR dsta = regs.a[dstreg];
        !            67:        BYTE dst = get_byte(dsta);
        !            68: {      ULONG newv = dst + src;
        !            69: {      bool flgs = ((BYTE)(src)) < 0;
        !            70:        bool flgo = ((BYTE)(dst)) < 0;
        !            71:        bool flgn = ((BYTE)(newv)) < 0;
        !            72:        regs.z = ((BYTE)(newv)) == 0;
        !            73:        regs.v = (flgs == flgo) && (flgn != flgo);
        !            74:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !            75:        regs.n = flgn != 0;
        !            76:        put_byte(dsta,newv);
        !            77: }}}}}}}
        !            78: void op_5028(UWORD opcode)
        !            79: {
        !            80:        ULONG srcreg = 8;
        !            81:        ULONG dstreg = (opcode & 7) >> 0;
        !            82: {{     ULONG src = srcreg;
        !            83: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !            84:        BYTE dst = get_byte(dsta);
        !            85: {      ULONG newv = dst + src;
        !            86: {      bool flgs = ((BYTE)(src)) < 0;
        !            87:        bool flgo = ((BYTE)(dst)) < 0;
        !            88:        bool flgn = ((BYTE)(newv)) < 0;
        !            89:        regs.z = ((BYTE)(newv)) == 0;
        !            90:        regs.v = (flgs == flgo) && (flgn != flgo);
        !            91:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !            92:        regs.n = flgn != 0;
        !            93:        put_byte(dsta,newv);
        !            94: }}}}}}
        !            95: void op_5030(UWORD opcode)
        !            96: {
        !            97:        ULONG srcreg = 8;
        !            98:        ULONG dstreg = (opcode & 7) >> 0;
        !            99: {{     ULONG src = srcreg;
        !           100: {      CPTR dsta = regs.a[dstreg];
        !           101:        UWORD dstdp = nextiword();
        !           102:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !           103: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !           104:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !           105:        dsta += dstdpr;
        !           106: {      BYTE dst = get_byte(dsta);
        !           107: {      ULONG newv = dst + src;
        !           108: {      bool flgs = ((BYTE)(src)) < 0;
        !           109:        bool flgo = ((BYTE)(dst)) < 0;
        !           110:        bool flgn = ((BYTE)(newv)) < 0;
        !           111:        regs.z = ((BYTE)(newv)) == 0;
        !           112:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           113:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !           114:        regs.n = flgn != 0;
        !           115:        put_byte(dsta,newv);
        !           116: }}}}}}}}
        !           117: void op_5038(UWORD opcode)
        !           118: {
        !           119:        ULONG srcreg = 8;
        !           120: {{     ULONG src = srcreg;
        !           121: {      CPTR dsta = (LONG)(WORD)nextiword();
        !           122:        BYTE dst = get_byte(dsta);
        !           123: {      ULONG newv = dst + src;
        !           124: {      bool flgs = ((BYTE)(src)) < 0;
        !           125:        bool flgo = ((BYTE)(dst)) < 0;
        !           126:        bool flgn = ((BYTE)(newv)) < 0;
        !           127:        regs.z = ((BYTE)(newv)) == 0;
        !           128:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           129:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !           130:        regs.n = flgn != 0;
        !           131:        put_byte(dsta,newv);
        !           132: }}}}}}
        !           133: void op_5039(UWORD opcode)
        !           134: {
        !           135:        ULONG srcreg = 8;
        !           136: {{     ULONG src = srcreg;
        !           137: {      CPTR dsta = nextilong();
        !           138:        BYTE dst = get_byte(dsta);
        !           139: {      ULONG newv = dst + src;
        !           140: {      bool flgs = ((BYTE)(src)) < 0;
        !           141:        bool flgo = ((BYTE)(dst)) < 0;
        !           142:        bool flgn = ((BYTE)(newv)) < 0;
        !           143:        regs.z = ((BYTE)(newv)) == 0;
        !           144:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           145:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !           146:        regs.n = flgn != 0;
        !           147:        put_byte(dsta,newv);
        !           148: }}}}}}
        !           149: void op_5040(UWORD opcode)
        !           150: {
        !           151:        ULONG srcreg = 8;
        !           152:        ULONG dstreg = (opcode & 7) >> 0;
        !           153: {{     ULONG src = srcreg;
        !           154: {      WORD dst = regs.d[dstreg];
        !           155: {      ULONG newv = dst + src;
        !           156: {      bool flgs = ((WORD)(src)) < 0;
        !           157:        bool flgo = ((WORD)(dst)) < 0;
        !           158:        bool flgn = ((WORD)(newv)) < 0;
        !           159:        regs.z = ((WORD)(newv)) == 0;
        !           160:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           161:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !           162:        regs.n = flgn != 0;
        !           163:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !           164: }}}}}}
        !           165: void op_5048(UWORD opcode)
        !           166: {
        !           167:        ULONG srcreg = 8;
        !           168:        ULONG dstreg = (opcode & 7) >> 0;
        !           169: {{     ULONG src = srcreg;
        !           170: {      LONG dst = regs.a[dstreg];
        !           171: {      ULONG newv = dst + src;
        !           172:        regs.a[dstreg] = (newv);
        !           173: }}}}}
        !           174: void op_5050(UWORD opcode)
        !           175: {
        !           176:        ULONG srcreg = 8;
        !           177:        ULONG dstreg = (opcode & 7) >> 0;
        !           178: {{     ULONG src = srcreg;
        !           179: {      CPTR dsta = regs.a[dstreg];
        !           180:        WORD dst = get_word(dsta);
        !           181: {      ULONG newv = dst + src;
        !           182: {      bool flgs = ((WORD)(src)) < 0;
        !           183:        bool flgo = ((WORD)(dst)) < 0;
        !           184:        bool flgn = ((WORD)(newv)) < 0;
        !           185:        regs.z = ((WORD)(newv)) == 0;
        !           186:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           187:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !           188:        regs.n = flgn != 0;
        !           189:        put_word(dsta,newv);
        !           190: }}}}}}
        !           191: void op_5058(UWORD opcode)
        !           192: {
        !           193:        ULONG srcreg = 8;
        !           194:        ULONG dstreg = (opcode & 7) >> 0;
        !           195: {{     ULONG src = srcreg;
        !           196: {      CPTR dsta = regs.a[dstreg];
        !           197:        WORD dst = get_word(dsta);
        !           198: {      regs.a[dstreg] += 2;
        !           199: {      ULONG newv = dst + src;
        !           200: {      bool flgs = ((WORD)(src)) < 0;
        !           201:        bool flgo = ((WORD)(dst)) < 0;
        !           202:        bool flgn = ((WORD)(newv)) < 0;
        !           203:        regs.z = ((WORD)(newv)) == 0;
        !           204:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           205:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !           206:        regs.n = flgn != 0;
        !           207:        put_word(dsta,newv);
        !           208: }}}}}}}
        !           209: void op_5060(UWORD opcode)
        !           210: {
        !           211:        ULONG srcreg = 8;
        !           212:        ULONG dstreg = (opcode & 7) >> 0;
        !           213: {{     ULONG src = srcreg;
        !           214: {      regs.a[dstreg] -= 2;
        !           215: {      CPTR dsta = regs.a[dstreg];
        !           216:        WORD dst = get_word(dsta);
        !           217: {      ULONG newv = dst + src;
        !           218: {      bool flgs = ((WORD)(src)) < 0;
        !           219:        bool flgo = ((WORD)(dst)) < 0;
        !           220:        bool flgn = ((WORD)(newv)) < 0;
        !           221:        regs.z = ((WORD)(newv)) == 0;
        !           222:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           223:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !           224:        regs.n = flgn != 0;
        !           225:        put_word(dsta,newv);
        !           226: }}}}}}}
        !           227: void op_5068(UWORD opcode)
        !           228: {
        !           229:        ULONG srcreg = 8;
        !           230:        ULONG dstreg = (opcode & 7) >> 0;
        !           231: {{     ULONG src = srcreg;
        !           232: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !           233:        WORD dst = get_word(dsta);
        !           234: {      ULONG newv = dst + src;
        !           235: {      bool flgs = ((WORD)(src)) < 0;
        !           236:        bool flgo = ((WORD)(dst)) < 0;
        !           237:        bool flgn = ((WORD)(newv)) < 0;
        !           238:        regs.z = ((WORD)(newv)) == 0;
        !           239:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           240:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !           241:        regs.n = flgn != 0;
        !           242:        put_word(dsta,newv);
        !           243: }}}}}}
        !           244: void op_5070(UWORD opcode)
        !           245: {
        !           246:        ULONG srcreg = 8;
        !           247:        ULONG dstreg = (opcode & 7) >> 0;
        !           248: {{     ULONG src = srcreg;
        !           249: {      CPTR dsta = regs.a[dstreg];
        !           250:        UWORD dstdp = nextiword();
        !           251:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !           252: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !           253:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !           254:        dsta += dstdpr;
        !           255: {      WORD dst = get_word(dsta);
        !           256: {      ULONG newv = dst + src;
        !           257: {      bool flgs = ((WORD)(src)) < 0;
        !           258:        bool flgo = ((WORD)(dst)) < 0;
        !           259:        bool flgn = ((WORD)(newv)) < 0;
        !           260:        regs.z = ((WORD)(newv)) == 0;
        !           261:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           262:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !           263:        regs.n = flgn != 0;
        !           264:        put_word(dsta,newv);
        !           265: }}}}}}}}
        !           266: void op_5078(UWORD opcode)
        !           267: {
        !           268:        ULONG srcreg = 8;
        !           269: {{     ULONG src = srcreg;
        !           270: {      CPTR dsta = (LONG)(WORD)nextiword();
        !           271:        WORD dst = get_word(dsta);
        !           272: {      ULONG newv = dst + src;
        !           273: {      bool flgs = ((WORD)(src)) < 0;
        !           274:        bool flgo = ((WORD)(dst)) < 0;
        !           275:        bool flgn = ((WORD)(newv)) < 0;
        !           276:        regs.z = ((WORD)(newv)) == 0;
        !           277:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           278:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !           279:        regs.n = flgn != 0;
        !           280:        put_word(dsta,newv);
        !           281: }}}}}}
        !           282: void op_5079(UWORD opcode)
        !           283: {
        !           284:        ULONG srcreg = 8;
        !           285: {{     ULONG src = srcreg;
        !           286: {      CPTR dsta = nextilong();
        !           287:        WORD dst = get_word(dsta);
        !           288: {      ULONG newv = dst + src;
        !           289: {      bool flgs = ((WORD)(src)) < 0;
        !           290:        bool flgo = ((WORD)(dst)) < 0;
        !           291:        bool flgn = ((WORD)(newv)) < 0;
        !           292:        regs.z = ((WORD)(newv)) == 0;
        !           293:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           294:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !           295:        regs.n = flgn != 0;
        !           296:        put_word(dsta,newv);
        !           297: }}}}}}
        !           298: void op_5080(UWORD opcode)
        !           299: {
        !           300:        ULONG srcreg = 8;
        !           301:        ULONG dstreg = (opcode & 7) >> 0;
        !           302: {{     ULONG src = srcreg;
        !           303: {      LONG dst = regs.d[dstreg];
        !           304: {      ULONG newv = dst + src;
        !           305: {      bool flgs = ((LONG)(src)) < 0;
        !           306:        bool flgo = ((LONG)(dst)) < 0;
        !           307:        bool flgn = ((LONG)(newv)) < 0;
        !           308:        regs.z = ((LONG)(newv)) == 0;
        !           309:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           310:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !           311:        regs.n = flgn != 0;
        !           312:        regs.d[dstreg] = (newv);
        !           313: }}}}}}
        !           314: void op_5088(UWORD opcode)
        !           315: {
        !           316:        ULONG srcreg = 8;
        !           317:        ULONG dstreg = (opcode & 7) >> 0;
        !           318: {{     ULONG src = srcreg;
        !           319: {      LONG dst = regs.a[dstreg];
        !           320: {      ULONG newv = dst + src;
        !           321:        regs.a[dstreg] = (newv);
        !           322: }}}}}
        !           323: void op_5090(UWORD opcode)
        !           324: {
        !           325:        ULONG srcreg = 8;
        !           326:        ULONG dstreg = (opcode & 7) >> 0;
        !           327: {{     ULONG src = srcreg;
        !           328: {      CPTR dsta = regs.a[dstreg];
        !           329:        LONG dst = get_long(dsta);
        !           330: {      ULONG newv = dst + src;
        !           331: {      bool flgs = ((LONG)(src)) < 0;
        !           332:        bool flgo = ((LONG)(dst)) < 0;
        !           333:        bool flgn = ((LONG)(newv)) < 0;
        !           334:        regs.z = ((LONG)(newv)) == 0;
        !           335:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           336:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !           337:        regs.n = flgn != 0;
        !           338:        put_long(dsta,newv);
        !           339: }}}}}}
        !           340: void op_5098(UWORD opcode)
        !           341: {
        !           342:        ULONG srcreg = 8;
        !           343:        ULONG dstreg = (opcode & 7) >> 0;
        !           344: {{     ULONG src = srcreg;
        !           345: {      CPTR dsta = regs.a[dstreg];
        !           346:        LONG dst = get_long(dsta);
        !           347: {      regs.a[dstreg] += 4;
        !           348: {      ULONG newv = dst + src;
        !           349: {      bool flgs = ((LONG)(src)) < 0;
        !           350:        bool flgo = ((LONG)(dst)) < 0;
        !           351:        bool flgn = ((LONG)(newv)) < 0;
        !           352:        regs.z = ((LONG)(newv)) == 0;
        !           353:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           354:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !           355:        regs.n = flgn != 0;
        !           356:        put_long(dsta,newv);
        !           357: }}}}}}}
        !           358: void op_50a0(UWORD opcode)
        !           359: {
        !           360:        ULONG srcreg = 8;
        !           361:        ULONG dstreg = (opcode & 7) >> 0;
        !           362: {{     ULONG src = srcreg;
        !           363: {      regs.a[dstreg] -= 4;
        !           364: {      CPTR dsta = regs.a[dstreg];
        !           365:        LONG dst = get_long(dsta);
        !           366: {      ULONG newv = dst + src;
        !           367: {      bool flgs = ((LONG)(src)) < 0;
        !           368:        bool flgo = ((LONG)(dst)) < 0;
        !           369:        bool flgn = ((LONG)(newv)) < 0;
        !           370:        regs.z = ((LONG)(newv)) == 0;
        !           371:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           372:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !           373:        regs.n = flgn != 0;
        !           374:        put_long(dsta,newv);
        !           375: }}}}}}}
        !           376: void op_50a8(UWORD opcode)
        !           377: {
        !           378:        ULONG srcreg = 8;
        !           379:        ULONG dstreg = (opcode & 7) >> 0;
        !           380: {{     ULONG src = srcreg;
        !           381: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !           382:        LONG dst = get_long(dsta);
        !           383: {      ULONG newv = dst + src;
        !           384: {      bool flgs = ((LONG)(src)) < 0;
        !           385:        bool flgo = ((LONG)(dst)) < 0;
        !           386:        bool flgn = ((LONG)(newv)) < 0;
        !           387:        regs.z = ((LONG)(newv)) == 0;
        !           388:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           389:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !           390:        regs.n = flgn != 0;
        !           391:        put_long(dsta,newv);
        !           392: }}}}}}
        !           393: void op_50b0(UWORD opcode)
        !           394: {
        !           395:        ULONG srcreg = 8;
        !           396:        ULONG dstreg = (opcode & 7) >> 0;
        !           397: {{     ULONG src = srcreg;
        !           398: {      CPTR dsta = regs.a[dstreg];
        !           399:        UWORD dstdp = nextiword();
        !           400:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !           401: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !           402:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !           403:        dsta += dstdpr;
        !           404: {      LONG dst = get_long(dsta);
        !           405: {      ULONG newv = dst + src;
        !           406: {      bool flgs = ((LONG)(src)) < 0;
        !           407:        bool flgo = ((LONG)(dst)) < 0;
        !           408:        bool flgn = ((LONG)(newv)) < 0;
        !           409:        regs.z = ((LONG)(newv)) == 0;
        !           410:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           411:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !           412:        regs.n = flgn != 0;
        !           413:        put_long(dsta,newv);
        !           414: }}}}}}}}
        !           415: void op_50b8(UWORD opcode)
        !           416: {
        !           417:        ULONG srcreg = 8;
        !           418: {{     ULONG src = srcreg;
        !           419: {      CPTR dsta = (LONG)(WORD)nextiword();
        !           420:        LONG dst = get_long(dsta);
        !           421: {      ULONG newv = dst + src;
        !           422: {      bool flgs = ((LONG)(src)) < 0;
        !           423:        bool flgo = ((LONG)(dst)) < 0;
        !           424:        bool flgn = ((LONG)(newv)) < 0;
        !           425:        regs.z = ((LONG)(newv)) == 0;
        !           426:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           427:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !           428:        regs.n = flgn != 0;
        !           429:        put_long(dsta,newv);
        !           430: }}}}}}
        !           431: void op_50b9(UWORD opcode)
        !           432: {
        !           433:        ULONG srcreg = 8;
        !           434: {{     ULONG src = srcreg;
        !           435: {      CPTR dsta = nextilong();
        !           436:        LONG dst = get_long(dsta);
        !           437: {      ULONG newv = dst + src;
        !           438: {      bool flgs = ((LONG)(src)) < 0;
        !           439:        bool flgo = ((LONG)(dst)) < 0;
        !           440:        bool flgn = ((LONG)(newv)) < 0;
        !           441:        regs.z = ((LONG)(newv)) == 0;
        !           442:        regs.v = (flgs == flgo) && (flgn != flgo);
        !           443:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !           444:        regs.n = flgn != 0;
        !           445:        put_long(dsta,newv);
        !           446: }}}}}}
        !           447: void op_50c0(UWORD opcode)
        !           448: {
        !           449:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           450: {{{    int val = cctrue(0) ? 0xff : 0;
        !           451:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !           452: }}}}
        !           453: void op_50c8(UWORD opcode)
        !           454: {
        !           455:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           456: {{     WORD src = regs.d[srcreg];
        !           457: {      WORD offs = nextiword();
        !           458:        if (!cctrue(0)) {
        !           459:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !           460:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !           461:        }
        !           462: }}}}
        !           463: void op_50d0(UWORD opcode)
        !           464: {
        !           465:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           466: {{     CPTR srca = regs.a[srcreg];
        !           467: {      int val = cctrue(0) ? 0xff : 0;
        !           468:        put_byte(srca,val);
        !           469: }}}}
        !           470: void op_50d8(UWORD opcode)
        !           471: {
        !           472:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           473: {{     CPTR srca = regs.a[srcreg];
        !           474: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !           475: {      int val = cctrue(0) ? 0xff : 0;
        !           476:        put_byte(srca,val);
        !           477: }}}}}
        !           478: void op_50e0(UWORD opcode)
        !           479: {
        !           480:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           481: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !           482: {      CPTR srca = regs.a[srcreg];
        !           483: {      int val = cctrue(0) ? 0xff : 0;
        !           484:        put_byte(srca,val);
        !           485: }}}}}
        !           486: void op_50e8(UWORD opcode)
        !           487: {
        !           488:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           489: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !           490: {      int val = cctrue(0) ? 0xff : 0;
        !           491:        put_byte(srca,val);
        !           492: }}}}
        !           493: void op_50f0(UWORD opcode)
        !           494: {
        !           495:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           496: {{     CPTR srca = regs.a[srcreg];
        !           497:        UWORD srcdp = nextiword();
        !           498:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !           499: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !           500:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !           501:        srca += srcdpr;
        !           502: {      int val = cctrue(0) ? 0xff : 0;
        !           503:        put_byte(srca,val);
        !           504: }}}}}
        !           505: void op_50f8(UWORD opcode)
        !           506: {
        !           507: {{     CPTR srca = (LONG)(WORD)nextiword();
        !           508: {      int val = cctrue(0) ? 0xff : 0;
        !           509:        put_byte(srca,val);
        !           510: }}}}
        !           511: void op_50f9(UWORD opcode)
        !           512: {
        !           513: {{     CPTR srca = nextilong();
        !           514: {      int val = cctrue(0) ? 0xff : 0;
        !           515:        put_byte(srca,val);
        !           516: }}}}
        !           517: void op_5100(UWORD opcode)
        !           518: {
        !           519:        ULONG srcreg = 8;
        !           520:        ULONG dstreg = (opcode & 7) >> 0;
        !           521: {{     ULONG src = srcreg;
        !           522: {      BYTE dst = regs.d[dstreg];
        !           523: {      ULONG newv = dst - src;
        !           524: {      bool flgs = ((BYTE)(src)) < 0;
        !           525:        bool flgo = ((BYTE)(dst)) < 0;
        !           526:        bool flgn = ((BYTE)(newv)) < 0;
        !           527:        regs.z = ((BYTE)(newv)) == 0;
        !           528:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           529:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !           530:        regs.n = flgn != 0;
        !           531:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !           532: }}}}}}
        !           533: void op_5110(UWORD opcode)
        !           534: {
        !           535:        ULONG srcreg = 8;
        !           536:        ULONG dstreg = (opcode & 7) >> 0;
        !           537: {{     ULONG src = srcreg;
        !           538: {      CPTR dsta = regs.a[dstreg];
        !           539:        BYTE dst = get_byte(dsta);
        !           540: {      ULONG newv = dst - src;
        !           541: {      bool flgs = ((BYTE)(src)) < 0;
        !           542:        bool flgo = ((BYTE)(dst)) < 0;
        !           543:        bool flgn = ((BYTE)(newv)) < 0;
        !           544:        regs.z = ((BYTE)(newv)) == 0;
        !           545:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           546:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !           547:        regs.n = flgn != 0;
        !           548:        put_byte(dsta,newv);
        !           549: }}}}}}
        !           550: void op_5118(UWORD opcode)
        !           551: {
        !           552:        ULONG srcreg = 8;
        !           553:        ULONG dstreg = (opcode & 7) >> 0;
        !           554: {{     ULONG src = srcreg;
        !           555: {      CPTR dsta = regs.a[dstreg];
        !           556:        BYTE dst = get_byte(dsta);
        !           557: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !           558: {      ULONG newv = dst - src;
        !           559: {      bool flgs = ((BYTE)(src)) < 0;
        !           560:        bool flgo = ((BYTE)(dst)) < 0;
        !           561:        bool flgn = ((BYTE)(newv)) < 0;
        !           562:        regs.z = ((BYTE)(newv)) == 0;
        !           563:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           564:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !           565:        regs.n = flgn != 0;
        !           566:        put_byte(dsta,newv);
        !           567: }}}}}}}
        !           568: void op_5120(UWORD opcode)
        !           569: {
        !           570:        ULONG srcreg = 8;
        !           571:        ULONG dstreg = (opcode & 7) >> 0;
        !           572: {{     ULONG src = srcreg;
        !           573: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !           574: {      CPTR dsta = regs.a[dstreg];
        !           575:        BYTE dst = get_byte(dsta);
        !           576: {      ULONG newv = dst - src;
        !           577: {      bool flgs = ((BYTE)(src)) < 0;
        !           578:        bool flgo = ((BYTE)(dst)) < 0;
        !           579:        bool flgn = ((BYTE)(newv)) < 0;
        !           580:        regs.z = ((BYTE)(newv)) == 0;
        !           581:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           582:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !           583:        regs.n = flgn != 0;
        !           584:        put_byte(dsta,newv);
        !           585: }}}}}}}
        !           586: void op_5128(UWORD opcode)
        !           587: {
        !           588:        ULONG srcreg = 8;
        !           589:        ULONG dstreg = (opcode & 7) >> 0;
        !           590: {{     ULONG src = srcreg;
        !           591: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !           592:        BYTE dst = get_byte(dsta);
        !           593: {      ULONG newv = dst - src;
        !           594: {      bool flgs = ((BYTE)(src)) < 0;
        !           595:        bool flgo = ((BYTE)(dst)) < 0;
        !           596:        bool flgn = ((BYTE)(newv)) < 0;
        !           597:        regs.z = ((BYTE)(newv)) == 0;
        !           598:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           599:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !           600:        regs.n = flgn != 0;
        !           601:        put_byte(dsta,newv);
        !           602: }}}}}}
        !           603: void op_5130(UWORD opcode)
        !           604: {
        !           605:        ULONG srcreg = 8;
        !           606:        ULONG dstreg = (opcode & 7) >> 0;
        !           607: {{     ULONG src = srcreg;
        !           608: {      CPTR dsta = regs.a[dstreg];
        !           609:        UWORD dstdp = nextiword();
        !           610:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !           611: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !           612:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !           613:        dsta += dstdpr;
        !           614: {      BYTE dst = get_byte(dsta);
        !           615: {      ULONG newv = dst - src;
        !           616: {      bool flgs = ((BYTE)(src)) < 0;
        !           617:        bool flgo = ((BYTE)(dst)) < 0;
        !           618:        bool flgn = ((BYTE)(newv)) < 0;
        !           619:        regs.z = ((BYTE)(newv)) == 0;
        !           620:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           621:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !           622:        regs.n = flgn != 0;
        !           623:        put_byte(dsta,newv);
        !           624: }}}}}}}}
        !           625: void op_5138(UWORD opcode)
        !           626: {
        !           627:        ULONG srcreg = 8;
        !           628: {{     ULONG src = srcreg;
        !           629: {      CPTR dsta = (LONG)(WORD)nextiword();
        !           630:        BYTE dst = get_byte(dsta);
        !           631: {      ULONG newv = dst - src;
        !           632: {      bool flgs = ((BYTE)(src)) < 0;
        !           633:        bool flgo = ((BYTE)(dst)) < 0;
        !           634:        bool flgn = ((BYTE)(newv)) < 0;
        !           635:        regs.z = ((BYTE)(newv)) == 0;
        !           636:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           637:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !           638:        regs.n = flgn != 0;
        !           639:        put_byte(dsta,newv);
        !           640: }}}}}}
        !           641: void op_5139(UWORD opcode)
        !           642: {
        !           643:        ULONG srcreg = 8;
        !           644: {{     ULONG src = srcreg;
        !           645: {      CPTR dsta = nextilong();
        !           646:        BYTE dst = get_byte(dsta);
        !           647: {      ULONG newv = dst - src;
        !           648: {      bool flgs = ((BYTE)(src)) < 0;
        !           649:        bool flgo = ((BYTE)(dst)) < 0;
        !           650:        bool flgn = ((BYTE)(newv)) < 0;
        !           651:        regs.z = ((BYTE)(newv)) == 0;
        !           652:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           653:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !           654:        regs.n = flgn != 0;
        !           655:        put_byte(dsta,newv);
        !           656: }}}}}}
        !           657: void op_5140(UWORD opcode)
        !           658: {
        !           659:        ULONG srcreg = 8;
        !           660:        ULONG dstreg = (opcode & 7) >> 0;
        !           661: {{     ULONG src = srcreg;
        !           662: {      WORD dst = regs.d[dstreg];
        !           663: {      ULONG newv = dst - src;
        !           664: {      bool flgs = ((WORD)(src)) < 0;
        !           665:        bool flgo = ((WORD)(dst)) < 0;
        !           666:        bool flgn = ((WORD)(newv)) < 0;
        !           667:        regs.z = ((WORD)(newv)) == 0;
        !           668:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           669:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !           670:        regs.n = flgn != 0;
        !           671:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !           672: }}}}}}
        !           673: void op_5148(UWORD opcode)
        !           674: {
        !           675:        ULONG srcreg = 8;
        !           676:        ULONG dstreg = (opcode & 7) >> 0;
        !           677: {{     ULONG src = srcreg;
        !           678: {      LONG dst = regs.a[dstreg];
        !           679: {      ULONG newv = dst - src;
        !           680:        regs.a[dstreg] = (newv);
        !           681: }}}}}
        !           682: void op_5150(UWORD opcode)
        !           683: {
        !           684:        ULONG srcreg = 8;
        !           685:        ULONG dstreg = (opcode & 7) >> 0;
        !           686: {{     ULONG src = srcreg;
        !           687: {      CPTR dsta = regs.a[dstreg];
        !           688:        WORD dst = get_word(dsta);
        !           689: {      ULONG newv = dst - src;
        !           690: {      bool flgs = ((WORD)(src)) < 0;
        !           691:        bool flgo = ((WORD)(dst)) < 0;
        !           692:        bool flgn = ((WORD)(newv)) < 0;
        !           693:        regs.z = ((WORD)(newv)) == 0;
        !           694:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           695:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !           696:        regs.n = flgn != 0;
        !           697:        put_word(dsta,newv);
        !           698: }}}}}}
        !           699: void op_5158(UWORD opcode)
        !           700: {
        !           701:        ULONG srcreg = 8;
        !           702:        ULONG dstreg = (opcode & 7) >> 0;
        !           703: {{     ULONG src = srcreg;
        !           704: {      CPTR dsta = regs.a[dstreg];
        !           705:        WORD dst = get_word(dsta);
        !           706: {      regs.a[dstreg] += 2;
        !           707: {      ULONG newv = dst - src;
        !           708: {      bool flgs = ((WORD)(src)) < 0;
        !           709:        bool flgo = ((WORD)(dst)) < 0;
        !           710:        bool flgn = ((WORD)(newv)) < 0;
        !           711:        regs.z = ((WORD)(newv)) == 0;
        !           712:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           713:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !           714:        regs.n = flgn != 0;
        !           715:        put_word(dsta,newv);
        !           716: }}}}}}}
        !           717: void op_5160(UWORD opcode)
        !           718: {
        !           719:        ULONG srcreg = 8;
        !           720:        ULONG dstreg = (opcode & 7) >> 0;
        !           721: {{     ULONG src = srcreg;
        !           722: {      regs.a[dstreg] -= 2;
        !           723: {      CPTR dsta = regs.a[dstreg];
        !           724:        WORD dst = get_word(dsta);
        !           725: {      ULONG newv = dst - src;
        !           726: {      bool flgs = ((WORD)(src)) < 0;
        !           727:        bool flgo = ((WORD)(dst)) < 0;
        !           728:        bool flgn = ((WORD)(newv)) < 0;
        !           729:        regs.z = ((WORD)(newv)) == 0;
        !           730:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           731:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !           732:        regs.n = flgn != 0;
        !           733:        put_word(dsta,newv);
        !           734: }}}}}}}
        !           735: void op_5168(UWORD opcode)
        !           736: {
        !           737:        ULONG srcreg = 8;
        !           738:        ULONG dstreg = (opcode & 7) >> 0;
        !           739: {{     ULONG src = srcreg;
        !           740: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !           741:        WORD dst = get_word(dsta);
        !           742: {      ULONG newv = dst - src;
        !           743: {      bool flgs = ((WORD)(src)) < 0;
        !           744:        bool flgo = ((WORD)(dst)) < 0;
        !           745:        bool flgn = ((WORD)(newv)) < 0;
        !           746:        regs.z = ((WORD)(newv)) == 0;
        !           747:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           748:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !           749:        regs.n = flgn != 0;
        !           750:        put_word(dsta,newv);
        !           751: }}}}}}
        !           752: void op_5170(UWORD opcode)
        !           753: {
        !           754:        ULONG srcreg = 8;
        !           755:        ULONG dstreg = (opcode & 7) >> 0;
        !           756: {{     ULONG src = srcreg;
        !           757: {      CPTR dsta = regs.a[dstreg];
        !           758:        UWORD dstdp = nextiword();
        !           759:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !           760: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !           761:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !           762:        dsta += dstdpr;
        !           763: {      WORD dst = get_word(dsta);
        !           764: {      ULONG newv = dst - src;
        !           765: {      bool flgs = ((WORD)(src)) < 0;
        !           766:        bool flgo = ((WORD)(dst)) < 0;
        !           767:        bool flgn = ((WORD)(newv)) < 0;
        !           768:        regs.z = ((WORD)(newv)) == 0;
        !           769:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           770:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !           771:        regs.n = flgn != 0;
        !           772:        put_word(dsta,newv);
        !           773: }}}}}}}}
        !           774: void op_5178(UWORD opcode)
        !           775: {
        !           776:        ULONG srcreg = 8;
        !           777: {{     ULONG src = srcreg;
        !           778: {      CPTR dsta = (LONG)(WORD)nextiword();
        !           779:        WORD dst = get_word(dsta);
        !           780: {      ULONG newv = dst - src;
        !           781: {      bool flgs = ((WORD)(src)) < 0;
        !           782:        bool flgo = ((WORD)(dst)) < 0;
        !           783:        bool flgn = ((WORD)(newv)) < 0;
        !           784:        regs.z = ((WORD)(newv)) == 0;
        !           785:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           786:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !           787:        regs.n = flgn != 0;
        !           788:        put_word(dsta,newv);
        !           789: }}}}}}
        !           790: void op_5179(UWORD opcode)
        !           791: {
        !           792:        ULONG srcreg = 8;
        !           793: {{     ULONG src = srcreg;
        !           794: {      CPTR dsta = nextilong();
        !           795:        WORD dst = get_word(dsta);
        !           796: {      ULONG newv = dst - src;
        !           797: {      bool flgs = ((WORD)(src)) < 0;
        !           798:        bool flgo = ((WORD)(dst)) < 0;
        !           799:        bool flgn = ((WORD)(newv)) < 0;
        !           800:        regs.z = ((WORD)(newv)) == 0;
        !           801:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           802:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !           803:        regs.n = flgn != 0;
        !           804:        put_word(dsta,newv);
        !           805: }}}}}}
        !           806: void op_5180(UWORD opcode)
        !           807: {
        !           808:        ULONG srcreg = 8;
        !           809:        ULONG dstreg = (opcode & 7) >> 0;
        !           810: {{     ULONG src = srcreg;
        !           811: {      LONG dst = regs.d[dstreg];
        !           812: {      ULONG newv = dst - src;
        !           813: {      bool flgs = ((LONG)(src)) < 0;
        !           814:        bool flgo = ((LONG)(dst)) < 0;
        !           815:        bool flgn = ((LONG)(newv)) < 0;
        !           816:        regs.z = ((LONG)(newv)) == 0;
        !           817:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           818:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !           819:        regs.n = flgn != 0;
        !           820:        regs.d[dstreg] = (newv);
        !           821: }}}}}}
        !           822: void op_5188(UWORD opcode)
        !           823: {
        !           824:        ULONG srcreg = 8;
        !           825:        ULONG dstreg = (opcode & 7) >> 0;
        !           826: {{     ULONG src = srcreg;
        !           827: {      LONG dst = regs.a[dstreg];
        !           828: {      ULONG newv = dst - src;
        !           829:        regs.a[dstreg] = (newv);
        !           830: }}}}}
        !           831: void op_5190(UWORD opcode)
        !           832: {
        !           833:        ULONG srcreg = 8;
        !           834:        ULONG dstreg = (opcode & 7) >> 0;
        !           835: {{     ULONG src = srcreg;
        !           836: {      CPTR dsta = regs.a[dstreg];
        !           837:        LONG dst = get_long(dsta);
        !           838: {      ULONG newv = dst - src;
        !           839: {      bool flgs = ((LONG)(src)) < 0;
        !           840:        bool flgo = ((LONG)(dst)) < 0;
        !           841:        bool flgn = ((LONG)(newv)) < 0;
        !           842:        regs.z = ((LONG)(newv)) == 0;
        !           843:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           844:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !           845:        regs.n = flgn != 0;
        !           846:        put_long(dsta,newv);
        !           847: }}}}}}
        !           848: void op_5198(UWORD opcode)
        !           849: {
        !           850:        ULONG srcreg = 8;
        !           851:        ULONG dstreg = (opcode & 7) >> 0;
        !           852: {{     ULONG src = srcreg;
        !           853: {      CPTR dsta = regs.a[dstreg];
        !           854:        LONG dst = get_long(dsta);
        !           855: {      regs.a[dstreg] += 4;
        !           856: {      ULONG newv = dst - src;
        !           857: {      bool flgs = ((LONG)(src)) < 0;
        !           858:        bool flgo = ((LONG)(dst)) < 0;
        !           859:        bool flgn = ((LONG)(newv)) < 0;
        !           860:        regs.z = ((LONG)(newv)) == 0;
        !           861:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           862:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !           863:        regs.n = flgn != 0;
        !           864:        put_long(dsta,newv);
        !           865: }}}}}}}
        !           866: void op_51a0(UWORD opcode)
        !           867: {
        !           868:        ULONG srcreg = 8;
        !           869:        ULONG dstreg = (opcode & 7) >> 0;
        !           870: {{     ULONG src = srcreg;
        !           871: {      regs.a[dstreg] -= 4;
        !           872: {      CPTR dsta = regs.a[dstreg];
        !           873:        LONG dst = get_long(dsta);
        !           874: {      ULONG newv = dst - src;
        !           875: {      bool flgs = ((LONG)(src)) < 0;
        !           876:        bool flgo = ((LONG)(dst)) < 0;
        !           877:        bool flgn = ((LONG)(newv)) < 0;
        !           878:        regs.z = ((LONG)(newv)) == 0;
        !           879:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           880:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !           881:        regs.n = flgn != 0;
        !           882:        put_long(dsta,newv);
        !           883: }}}}}}}
        !           884: void op_51a8(UWORD opcode)
        !           885: {
        !           886:        ULONG srcreg = 8;
        !           887:        ULONG dstreg = (opcode & 7) >> 0;
        !           888: {{     ULONG src = srcreg;
        !           889: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !           890:        LONG dst = get_long(dsta);
        !           891: {      ULONG newv = dst - src;
        !           892: {      bool flgs = ((LONG)(src)) < 0;
        !           893:        bool flgo = ((LONG)(dst)) < 0;
        !           894:        bool flgn = ((LONG)(newv)) < 0;
        !           895:        regs.z = ((LONG)(newv)) == 0;
        !           896:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           897:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !           898:        regs.n = flgn != 0;
        !           899:        put_long(dsta,newv);
        !           900: }}}}}}
        !           901: void op_51b0(UWORD opcode)
        !           902: {
        !           903:        ULONG srcreg = 8;
        !           904:        ULONG dstreg = (opcode & 7) >> 0;
        !           905: {{     ULONG src = srcreg;
        !           906: {      CPTR dsta = regs.a[dstreg];
        !           907:        UWORD dstdp = nextiword();
        !           908:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !           909: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !           910:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !           911:        dsta += dstdpr;
        !           912: {      LONG dst = get_long(dsta);
        !           913: {      ULONG newv = dst - src;
        !           914: {      bool flgs = ((LONG)(src)) < 0;
        !           915:        bool flgo = ((LONG)(dst)) < 0;
        !           916:        bool flgn = ((LONG)(newv)) < 0;
        !           917:        regs.z = ((LONG)(newv)) == 0;
        !           918:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           919:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !           920:        regs.n = flgn != 0;
        !           921:        put_long(dsta,newv);
        !           922: }}}}}}}}
        !           923: void op_51b8(UWORD opcode)
        !           924: {
        !           925:        ULONG srcreg = 8;
        !           926: {{     ULONG src = srcreg;
        !           927: {      CPTR dsta = (LONG)(WORD)nextiword();
        !           928:        LONG dst = get_long(dsta);
        !           929: {      ULONG newv = dst - src;
        !           930: {      bool flgs = ((LONG)(src)) < 0;
        !           931:        bool flgo = ((LONG)(dst)) < 0;
        !           932:        bool flgn = ((LONG)(newv)) < 0;
        !           933:        regs.z = ((LONG)(newv)) == 0;
        !           934:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           935:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !           936:        regs.n = flgn != 0;
        !           937:        put_long(dsta,newv);
        !           938: }}}}}}
        !           939: void op_51b9(UWORD opcode)
        !           940: {
        !           941:        ULONG srcreg = 8;
        !           942: {{     ULONG src = srcreg;
        !           943: {      CPTR dsta = nextilong();
        !           944:        LONG dst = get_long(dsta);
        !           945: {      ULONG newv = dst - src;
        !           946: {      bool flgs = ((LONG)(src)) < 0;
        !           947:        bool flgo = ((LONG)(dst)) < 0;
        !           948:        bool flgn = ((LONG)(newv)) < 0;
        !           949:        regs.z = ((LONG)(newv)) == 0;
        !           950:        regs.v = (flgs != flgo) && (flgn != flgo);
        !           951:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !           952:        regs.n = flgn != 0;
        !           953:        put_long(dsta,newv);
        !           954: }}}}}}
        !           955: void op_51c0(UWORD opcode)
        !           956: {
        !           957:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           958: {{{    int val = cctrue(1) ? 0xff : 0;
        !           959:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !           960: }}}}
        !           961: void op_51c8(UWORD opcode)
        !           962: {
        !           963:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           964: {{     WORD src = regs.d[srcreg];
        !           965: {      WORD offs = nextiword();
        !           966:        if (!cctrue(1)) {
        !           967:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !           968:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !           969:        }
        !           970: }}}}
        !           971: void op_51d0(UWORD opcode)
        !           972: {
        !           973:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           974: {{     CPTR srca = regs.a[srcreg];
        !           975: {      int val = cctrue(1) ? 0xff : 0;
        !           976:        put_byte(srca,val);
        !           977: }}}}
        !           978: void op_51d8(UWORD opcode)
        !           979: {
        !           980:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           981: {{     CPTR srca = regs.a[srcreg];
        !           982: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !           983: {      int val = cctrue(1) ? 0xff : 0;
        !           984:        put_byte(srca,val);
        !           985: }}}}}
        !           986: void op_51e0(UWORD opcode)
        !           987: {
        !           988:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           989: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !           990: {      CPTR srca = regs.a[srcreg];
        !           991: {      int val = cctrue(1) ? 0xff : 0;
        !           992:        put_byte(srca,val);
        !           993: }}}}}
        !           994: void op_51e8(UWORD opcode)
        !           995: {
        !           996:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           997: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !           998: {      int val = cctrue(1) ? 0xff : 0;
        !           999:        put_byte(srca,val);
        !          1000: }}}}
        !          1001: void op_51f0(UWORD opcode)
        !          1002: {
        !          1003:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1004: {{     CPTR srca = regs.a[srcreg];
        !          1005:        UWORD srcdp = nextiword();
        !          1006:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          1007: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          1008:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          1009:        srca += srcdpr;
        !          1010: {      int val = cctrue(1) ? 0xff : 0;
        !          1011:        put_byte(srca,val);
        !          1012: }}}}}
        !          1013: void op_51f8(UWORD opcode)
        !          1014: {
        !          1015: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          1016: {      int val = cctrue(1) ? 0xff : 0;
        !          1017:        put_byte(srca,val);
        !          1018: }}}}
        !          1019: void op_51f9(UWORD opcode)
        !          1020: {
        !          1021: {{     CPTR srca = nextilong();
        !          1022: {      int val = cctrue(1) ? 0xff : 0;
        !          1023:        put_byte(srca,val);
        !          1024: }}}}
        !          1025: void op_5200(UWORD opcode)
        !          1026: {
        !          1027:        ULONG srcreg = 1;
        !          1028:        ULONG dstreg = (opcode & 7) >> 0;
        !          1029: {{     ULONG src = srcreg;
        !          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)(~dst)) < ((UBYTE)(src));
        !          1038:        regs.n = flgn != 0;
        !          1039:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          1040: }}}}}}
        !          1041: void op_5210(UWORD opcode)
        !          1042: {
        !          1043:        ULONG srcreg = 1;
        !          1044:        ULONG dstreg = (opcode & 7) >> 0;
        !          1045: {{     ULONG src = srcreg;
        !          1046: {      CPTR dsta = regs.a[dstreg];
        !          1047:        BYTE dst = get_byte(dsta);
        !          1048: {      ULONG newv = dst + src;
        !          1049: {      bool flgs = ((BYTE)(src)) < 0;
        !          1050:        bool flgo = ((BYTE)(dst)) < 0;
        !          1051:        bool flgn = ((BYTE)(newv)) < 0;
        !          1052:        regs.z = ((BYTE)(newv)) == 0;
        !          1053:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1054:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          1055:        regs.n = flgn != 0;
        !          1056:        put_byte(dsta,newv);
        !          1057: }}}}}}
        !          1058: void op_5218(UWORD opcode)
        !          1059: {
        !          1060:        ULONG srcreg = 1;
        !          1061:        ULONG dstreg = (opcode & 7) >> 0;
        !          1062: {{     ULONG src = srcreg;
        !          1063: {      CPTR dsta = regs.a[dstreg];
        !          1064:        BYTE dst = get_byte(dsta);
        !          1065: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          1066: {      ULONG newv = dst + src;
        !          1067: {      bool flgs = ((BYTE)(src)) < 0;
        !          1068:        bool flgo = ((BYTE)(dst)) < 0;
        !          1069:        bool flgn = ((BYTE)(newv)) < 0;
        !          1070:        regs.z = ((BYTE)(newv)) == 0;
        !          1071:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1072:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          1073:        regs.n = flgn != 0;
        !          1074:        put_byte(dsta,newv);
        !          1075: }}}}}}}
        !          1076: void op_5220(UWORD opcode)
        !          1077: {
        !          1078:        ULONG srcreg = 1;
        !          1079:        ULONG dstreg = (opcode & 7) >> 0;
        !          1080: {{     ULONG src = srcreg;
        !          1081: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          1082: {      CPTR dsta = regs.a[dstreg];
        !          1083:        BYTE dst = get_byte(dsta);
        !          1084: {      ULONG newv = dst + src;
        !          1085: {      bool flgs = ((BYTE)(src)) < 0;
        !          1086:        bool flgo = ((BYTE)(dst)) < 0;
        !          1087:        bool flgn = ((BYTE)(newv)) < 0;
        !          1088:        regs.z = ((BYTE)(newv)) == 0;
        !          1089:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1090:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          1091:        regs.n = flgn != 0;
        !          1092:        put_byte(dsta,newv);
        !          1093: }}}}}}}
        !          1094: void op_5228(UWORD opcode)
        !          1095: {
        !          1096:        ULONG srcreg = 1;
        !          1097:        ULONG dstreg = (opcode & 7) >> 0;
        !          1098: {{     ULONG src = srcreg;
        !          1099: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          1100:        BYTE dst = get_byte(dsta);
        !          1101: {      ULONG newv = dst + src;
        !          1102: {      bool flgs = ((BYTE)(src)) < 0;
        !          1103:        bool flgo = ((BYTE)(dst)) < 0;
        !          1104:        bool flgn = ((BYTE)(newv)) < 0;
        !          1105:        regs.z = ((BYTE)(newv)) == 0;
        !          1106:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1107:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          1108:        regs.n = flgn != 0;
        !          1109:        put_byte(dsta,newv);
        !          1110: }}}}}}
        !          1111: void op_5230(UWORD opcode)
        !          1112: {
        !          1113:        ULONG srcreg = 1;
        !          1114:        ULONG dstreg = (opcode & 7) >> 0;
        !          1115: {{     ULONG src = srcreg;
        !          1116: {      CPTR dsta = regs.a[dstreg];
        !          1117:        UWORD dstdp = nextiword();
        !          1118:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          1119: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          1120:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          1121:        dsta += dstdpr;
        !          1122: {      BYTE dst = get_byte(dsta);
        !          1123: {      ULONG newv = dst + src;
        !          1124: {      bool flgs = ((BYTE)(src)) < 0;
        !          1125:        bool flgo = ((BYTE)(dst)) < 0;
        !          1126:        bool flgn = ((BYTE)(newv)) < 0;
        !          1127:        regs.z = ((BYTE)(newv)) == 0;
        !          1128:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1129:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          1130:        regs.n = flgn != 0;
        !          1131:        put_byte(dsta,newv);
        !          1132: }}}}}}}}
        !          1133: void op_5238(UWORD opcode)
        !          1134: {
        !          1135:        ULONG srcreg = 1;
        !          1136: {{     ULONG src = srcreg;
        !          1137: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          1138:        BYTE dst = get_byte(dsta);
        !          1139: {      ULONG newv = dst + src;
        !          1140: {      bool flgs = ((BYTE)(src)) < 0;
        !          1141:        bool flgo = ((BYTE)(dst)) < 0;
        !          1142:        bool flgn = ((BYTE)(newv)) < 0;
        !          1143:        regs.z = ((BYTE)(newv)) == 0;
        !          1144:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1145:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          1146:        regs.n = flgn != 0;
        !          1147:        put_byte(dsta,newv);
        !          1148: }}}}}}
        !          1149: void op_5239(UWORD opcode)
        !          1150: {
        !          1151:        ULONG srcreg = 1;
        !          1152: {{     ULONG src = srcreg;
        !          1153: {      CPTR dsta = nextilong();
        !          1154:        BYTE dst = get_byte(dsta);
        !          1155: {      ULONG newv = dst + src;
        !          1156: {      bool flgs = ((BYTE)(src)) < 0;
        !          1157:        bool flgo = ((BYTE)(dst)) < 0;
        !          1158:        bool flgn = ((BYTE)(newv)) < 0;
        !          1159:        regs.z = ((BYTE)(newv)) == 0;
        !          1160:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1161:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          1162:        regs.n = flgn != 0;
        !          1163:        put_byte(dsta,newv);
        !          1164: }}}}}}
        !          1165: void op_5240(UWORD opcode)
        !          1166: {
        !          1167:        ULONG srcreg = 1;
        !          1168:        ULONG dstreg = (opcode & 7) >> 0;
        !          1169: {{     ULONG src = srcreg;
        !          1170: {      WORD dst = regs.d[dstreg];
        !          1171: {      ULONG newv = dst + src;
        !          1172: {      bool flgs = ((WORD)(src)) < 0;
        !          1173:        bool flgo = ((WORD)(dst)) < 0;
        !          1174:        bool flgn = ((WORD)(newv)) < 0;
        !          1175:        regs.z = ((WORD)(newv)) == 0;
        !          1176:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1177:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          1178:        regs.n = flgn != 0;
        !          1179:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          1180: }}}}}}
        !          1181: void op_5248(UWORD opcode)
        !          1182: {
        !          1183:        ULONG srcreg = 1;
        !          1184:        ULONG dstreg = (opcode & 7) >> 0;
        !          1185: {{     ULONG src = srcreg;
        !          1186: {      LONG dst = regs.a[dstreg];
        !          1187: {      ULONG newv = dst + src;
        !          1188:        regs.a[dstreg] = (newv);
        !          1189: }}}}}
        !          1190: void op_5250(UWORD opcode)
        !          1191: {
        !          1192:        ULONG srcreg = 1;
        !          1193:        ULONG dstreg = (opcode & 7) >> 0;
        !          1194: {{     ULONG src = srcreg;
        !          1195: {      CPTR dsta = regs.a[dstreg];
        !          1196:        WORD dst = get_word(dsta);
        !          1197: {      ULONG newv = dst + src;
        !          1198: {      bool flgs = ((WORD)(src)) < 0;
        !          1199:        bool flgo = ((WORD)(dst)) < 0;
        !          1200:        bool flgn = ((WORD)(newv)) < 0;
        !          1201:        regs.z = ((WORD)(newv)) == 0;
        !          1202:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1203:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          1204:        regs.n = flgn != 0;
        !          1205:        put_word(dsta,newv);
        !          1206: }}}}}}
        !          1207: void op_5258(UWORD opcode)
        !          1208: {
        !          1209:        ULONG srcreg = 1;
        !          1210:        ULONG dstreg = (opcode & 7) >> 0;
        !          1211: {{     ULONG src = srcreg;
        !          1212: {      CPTR dsta = regs.a[dstreg];
        !          1213:        WORD dst = get_word(dsta);
        !          1214: {      regs.a[dstreg] += 2;
        !          1215: {      ULONG newv = dst + src;
        !          1216: {      bool flgs = ((WORD)(src)) < 0;
        !          1217:        bool flgo = ((WORD)(dst)) < 0;
        !          1218:        bool flgn = ((WORD)(newv)) < 0;
        !          1219:        regs.z = ((WORD)(newv)) == 0;
        !          1220:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1221:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          1222:        regs.n = flgn != 0;
        !          1223:        put_word(dsta,newv);
        !          1224: }}}}}}}
        !          1225: void op_5260(UWORD opcode)
        !          1226: {
        !          1227:        ULONG srcreg = 1;
        !          1228:        ULONG dstreg = (opcode & 7) >> 0;
        !          1229: {{     ULONG src = srcreg;
        !          1230: {      regs.a[dstreg] -= 2;
        !          1231: {      CPTR dsta = regs.a[dstreg];
        !          1232:        WORD dst = get_word(dsta);
        !          1233: {      ULONG newv = dst + src;
        !          1234: {      bool flgs = ((WORD)(src)) < 0;
        !          1235:        bool flgo = ((WORD)(dst)) < 0;
        !          1236:        bool flgn = ((WORD)(newv)) < 0;
        !          1237:        regs.z = ((WORD)(newv)) == 0;
        !          1238:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1239:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          1240:        regs.n = flgn != 0;
        !          1241:        put_word(dsta,newv);
        !          1242: }}}}}}}
        !          1243: void op_5268(UWORD opcode)
        !          1244: {
        !          1245:        ULONG srcreg = 1;
        !          1246:        ULONG dstreg = (opcode & 7) >> 0;
        !          1247: {{     ULONG src = srcreg;
        !          1248: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          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)(~dst)) < ((UWORD)(src));
        !          1257:        regs.n = flgn != 0;
        !          1258:        put_word(dsta,newv);
        !          1259: }}}}}}
        !          1260: void op_5270(UWORD opcode)
        !          1261: {
        !          1262:        ULONG srcreg = 1;
        !          1263:        ULONG dstreg = (opcode & 7) >> 0;
        !          1264: {{     ULONG src = srcreg;
        !          1265: {      CPTR dsta = regs.a[dstreg];
        !          1266:        UWORD dstdp = nextiword();
        !          1267:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          1268: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          1269:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          1270:        dsta += dstdpr;
        !          1271: {      WORD dst = get_word(dsta);
        !          1272: {      ULONG newv = dst + src;
        !          1273: {      bool flgs = ((WORD)(src)) < 0;
        !          1274:        bool flgo = ((WORD)(dst)) < 0;
        !          1275:        bool flgn = ((WORD)(newv)) < 0;
        !          1276:        regs.z = ((WORD)(newv)) == 0;
        !          1277:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1278:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          1279:        regs.n = flgn != 0;
        !          1280:        put_word(dsta,newv);
        !          1281: }}}}}}}}
        !          1282: void op_5278(UWORD opcode)
        !          1283: {
        !          1284:        ULONG srcreg = 1;
        !          1285: {{     ULONG src = srcreg;
        !          1286: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          1287:        WORD dst = get_word(dsta);
        !          1288: {      ULONG newv = dst + src;
        !          1289: {      bool flgs = ((WORD)(src)) < 0;
        !          1290:        bool flgo = ((WORD)(dst)) < 0;
        !          1291:        bool flgn = ((WORD)(newv)) < 0;
        !          1292:        regs.z = ((WORD)(newv)) == 0;
        !          1293:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1294:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          1295:        regs.n = flgn != 0;
        !          1296:        put_word(dsta,newv);
        !          1297: }}}}}}
        !          1298: void op_5279(UWORD opcode)
        !          1299: {
        !          1300:        ULONG srcreg = 1;
        !          1301: {{     ULONG src = srcreg;
        !          1302: {      CPTR dsta = nextilong();
        !          1303:        WORD dst = get_word(dsta);
        !          1304: {      ULONG newv = dst + src;
        !          1305: {      bool flgs = ((WORD)(src)) < 0;
        !          1306:        bool flgo = ((WORD)(dst)) < 0;
        !          1307:        bool flgn = ((WORD)(newv)) < 0;
        !          1308:        regs.z = ((WORD)(newv)) == 0;
        !          1309:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1310:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          1311:        regs.n = flgn != 0;
        !          1312:        put_word(dsta,newv);
        !          1313: }}}}}}
        !          1314: void op_5280(UWORD opcode)
        !          1315: {
        !          1316:        ULONG srcreg = 1;
        !          1317:        ULONG dstreg = (opcode & 7) >> 0;
        !          1318: {{     ULONG src = srcreg;
        !          1319: {      LONG dst = regs.d[dstreg];
        !          1320: {      ULONG newv = dst + src;
        !          1321: {      bool flgs = ((LONG)(src)) < 0;
        !          1322:        bool flgo = ((LONG)(dst)) < 0;
        !          1323:        bool flgn = ((LONG)(newv)) < 0;
        !          1324:        regs.z = ((LONG)(newv)) == 0;
        !          1325:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1326:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          1327:        regs.n = flgn != 0;
        !          1328:        regs.d[dstreg] = (newv);
        !          1329: }}}}}}
        !          1330: void op_5288(UWORD opcode)
        !          1331: {
        !          1332:        ULONG srcreg = 1;
        !          1333:        ULONG dstreg = (opcode & 7) >> 0;
        !          1334: {{     ULONG src = srcreg;
        !          1335: {      LONG dst = regs.a[dstreg];
        !          1336: {      ULONG newv = dst + src;
        !          1337:        regs.a[dstreg] = (newv);
        !          1338: }}}}}
        !          1339: void op_5290(UWORD opcode)
        !          1340: {
        !          1341:        ULONG srcreg = 1;
        !          1342:        ULONG dstreg = (opcode & 7) >> 0;
        !          1343: {{     ULONG src = srcreg;
        !          1344: {      CPTR dsta = regs.a[dstreg];
        !          1345:        LONG dst = get_long(dsta);
        !          1346: {      ULONG newv = dst + src;
        !          1347: {      bool flgs = ((LONG)(src)) < 0;
        !          1348:        bool flgo = ((LONG)(dst)) < 0;
        !          1349:        bool flgn = ((LONG)(newv)) < 0;
        !          1350:        regs.z = ((LONG)(newv)) == 0;
        !          1351:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1352:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          1353:        regs.n = flgn != 0;
        !          1354:        put_long(dsta,newv);
        !          1355: }}}}}}
        !          1356: void op_5298(UWORD opcode)
        !          1357: {
        !          1358:        ULONG srcreg = 1;
        !          1359:        ULONG dstreg = (opcode & 7) >> 0;
        !          1360: {{     ULONG src = srcreg;
        !          1361: {      CPTR dsta = regs.a[dstreg];
        !          1362:        LONG dst = get_long(dsta);
        !          1363: {      regs.a[dstreg] += 4;
        !          1364: {      ULONG newv = dst + src;
        !          1365: {      bool flgs = ((LONG)(src)) < 0;
        !          1366:        bool flgo = ((LONG)(dst)) < 0;
        !          1367:        bool flgn = ((LONG)(newv)) < 0;
        !          1368:        regs.z = ((LONG)(newv)) == 0;
        !          1369:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1370:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          1371:        regs.n = flgn != 0;
        !          1372:        put_long(dsta,newv);
        !          1373: }}}}}}}
        !          1374: void op_52a0(UWORD opcode)
        !          1375: {
        !          1376:        ULONG srcreg = 1;
        !          1377:        ULONG dstreg = (opcode & 7) >> 0;
        !          1378: {{     ULONG src = srcreg;
        !          1379: {      regs.a[dstreg] -= 4;
        !          1380: {      CPTR dsta = regs.a[dstreg];
        !          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)(~dst)) < ((ULONG)(src));
        !          1389:        regs.n = flgn != 0;
        !          1390:        put_long(dsta,newv);
        !          1391: }}}}}}}
        !          1392: void op_52a8(UWORD opcode)
        !          1393: {
        !          1394:        ULONG srcreg = 1;
        !          1395:        ULONG dstreg = (opcode & 7) >> 0;
        !          1396: {{     ULONG src = srcreg;
        !          1397: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          1398:        LONG dst = get_long(dsta);
        !          1399: {      ULONG newv = dst + src;
        !          1400: {      bool flgs = ((LONG)(src)) < 0;
        !          1401:        bool flgo = ((LONG)(dst)) < 0;
        !          1402:        bool flgn = ((LONG)(newv)) < 0;
        !          1403:        regs.z = ((LONG)(newv)) == 0;
        !          1404:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1405:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          1406:        regs.n = flgn != 0;
        !          1407:        put_long(dsta,newv);
        !          1408: }}}}}}
        !          1409: void op_52b0(UWORD opcode)
        !          1410: {
        !          1411:        ULONG srcreg = 1;
        !          1412:        ULONG dstreg = (opcode & 7) >> 0;
        !          1413: {{     ULONG src = srcreg;
        !          1414: {      CPTR dsta = regs.a[dstreg];
        !          1415:        UWORD dstdp = nextiword();
        !          1416:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          1417: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          1418:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          1419:        dsta += dstdpr;
        !          1420: {      LONG dst = get_long(dsta);
        !          1421: {      ULONG newv = dst + src;
        !          1422: {      bool flgs = ((LONG)(src)) < 0;
        !          1423:        bool flgo = ((LONG)(dst)) < 0;
        !          1424:        bool flgn = ((LONG)(newv)) < 0;
        !          1425:        regs.z = ((LONG)(newv)) == 0;
        !          1426:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1427:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          1428:        regs.n = flgn != 0;
        !          1429:        put_long(dsta,newv);
        !          1430: }}}}}}}}
        !          1431: void op_52b8(UWORD opcode)
        !          1432: {
        !          1433:        ULONG srcreg = 1;
        !          1434: {{     ULONG src = srcreg;
        !          1435: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          1436:        LONG dst = get_long(dsta);
        !          1437: {      ULONG newv = dst + src;
        !          1438: {      bool flgs = ((LONG)(src)) < 0;
        !          1439:        bool flgo = ((LONG)(dst)) < 0;
        !          1440:        bool flgn = ((LONG)(newv)) < 0;
        !          1441:        regs.z = ((LONG)(newv)) == 0;
        !          1442:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1443:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          1444:        regs.n = flgn != 0;
        !          1445:        put_long(dsta,newv);
        !          1446: }}}}}}
        !          1447: void op_52b9(UWORD opcode)
        !          1448: {
        !          1449:        ULONG srcreg = 1;
        !          1450: {{     ULONG src = srcreg;
        !          1451: {      CPTR dsta = nextilong();
        !          1452:        LONG dst = get_long(dsta);
        !          1453: {      ULONG newv = dst + src;
        !          1454: {      bool flgs = ((LONG)(src)) < 0;
        !          1455:        bool flgo = ((LONG)(dst)) < 0;
        !          1456:        bool flgn = ((LONG)(newv)) < 0;
        !          1457:        regs.z = ((LONG)(newv)) == 0;
        !          1458:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          1459:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          1460:        regs.n = flgn != 0;
        !          1461:        put_long(dsta,newv);
        !          1462: }}}}}}
        !          1463: void op_52c0(UWORD opcode)
        !          1464: {
        !          1465:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1466: {{{    int val = cctrue(2) ? 0xff : 0;
        !          1467:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          1468: }}}}
        !          1469: void op_52c8(UWORD opcode)
        !          1470: {
        !          1471:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1472: {{     WORD src = regs.d[srcreg];
        !          1473: {      WORD offs = nextiword();
        !          1474:        if (!cctrue(2)) {
        !          1475:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          1476:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          1477:        }
        !          1478: }}}}
        !          1479: void op_52d0(UWORD opcode)
        !          1480: {
        !          1481:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1482: {{     CPTR srca = regs.a[srcreg];
        !          1483: {      int val = cctrue(2) ? 0xff : 0;
        !          1484:        put_byte(srca,val);
        !          1485: }}}}
        !          1486: void op_52d8(UWORD opcode)
        !          1487: {
        !          1488:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1489: {{     CPTR srca = regs.a[srcreg];
        !          1490: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          1491: {      int val = cctrue(2) ? 0xff : 0;
        !          1492:        put_byte(srca,val);
        !          1493: }}}}}
        !          1494: void op_52e0(UWORD opcode)
        !          1495: {
        !          1496:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1497: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          1498: {      CPTR srca = regs.a[srcreg];
        !          1499: {      int val = cctrue(2) ? 0xff : 0;
        !          1500:        put_byte(srca,val);
        !          1501: }}}}}
        !          1502: void op_52e8(UWORD opcode)
        !          1503: {
        !          1504:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1505: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          1506: {      int val = cctrue(2) ? 0xff : 0;
        !          1507:        put_byte(srca,val);
        !          1508: }}}}
        !          1509: void op_52f0(UWORD opcode)
        !          1510: {
        !          1511:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1512: {{     CPTR srca = regs.a[srcreg];
        !          1513:        UWORD srcdp = nextiword();
        !          1514:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          1515: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          1516:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          1517:        srca += srcdpr;
        !          1518: {      int val = cctrue(2) ? 0xff : 0;
        !          1519:        put_byte(srca,val);
        !          1520: }}}}}
        !          1521: void op_52f8(UWORD opcode)
        !          1522: {
        !          1523: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          1524: {      int val = cctrue(2) ? 0xff : 0;
        !          1525:        put_byte(srca,val);
        !          1526: }}}}
        !          1527: void op_52f9(UWORD opcode)
        !          1528: {
        !          1529: {{     CPTR srca = nextilong();
        !          1530: {      int val = cctrue(2) ? 0xff : 0;
        !          1531:        put_byte(srca,val);
        !          1532: }}}}
        !          1533: void op_5300(UWORD opcode)
        !          1534: {
        !          1535:        ULONG srcreg = 1;
        !          1536:        ULONG dstreg = (opcode & 7) >> 0;
        !          1537: {{     ULONG src = srcreg;
        !          1538: {      BYTE dst = regs.d[dstreg];
        !          1539: {      ULONG newv = dst - src;
        !          1540: {      bool flgs = ((BYTE)(src)) < 0;
        !          1541:        bool flgo = ((BYTE)(dst)) < 0;
        !          1542:        bool flgn = ((BYTE)(newv)) < 0;
        !          1543:        regs.z = ((BYTE)(newv)) == 0;
        !          1544:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1545:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          1546:        regs.n = flgn != 0;
        !          1547:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          1548: }}}}}}
        !          1549: void op_5310(UWORD opcode)
        !          1550: {
        !          1551:        ULONG srcreg = 1;
        !          1552:        ULONG dstreg = (opcode & 7) >> 0;
        !          1553: {{     ULONG src = srcreg;
        !          1554: {      CPTR dsta = regs.a[dstreg];
        !          1555:        BYTE dst = get_byte(dsta);
        !          1556: {      ULONG newv = dst - src;
        !          1557: {      bool flgs = ((BYTE)(src)) < 0;
        !          1558:        bool flgo = ((BYTE)(dst)) < 0;
        !          1559:        bool flgn = ((BYTE)(newv)) < 0;
        !          1560:        regs.z = ((BYTE)(newv)) == 0;
        !          1561:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1562:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          1563:        regs.n = flgn != 0;
        !          1564:        put_byte(dsta,newv);
        !          1565: }}}}}}
        !          1566: void op_5318(UWORD opcode)
        !          1567: {
        !          1568:        ULONG srcreg = 1;
        !          1569:        ULONG dstreg = (opcode & 7) >> 0;
        !          1570: {{     ULONG src = srcreg;
        !          1571: {      CPTR dsta = regs.a[dstreg];
        !          1572:        BYTE dst = get_byte(dsta);
        !          1573: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          1574: {      ULONG newv = dst - src;
        !          1575: {      bool flgs = ((BYTE)(src)) < 0;
        !          1576:        bool flgo = ((BYTE)(dst)) < 0;
        !          1577:        bool flgn = ((BYTE)(newv)) < 0;
        !          1578:        regs.z = ((BYTE)(newv)) == 0;
        !          1579:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1580:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          1581:        regs.n = flgn != 0;
        !          1582:        put_byte(dsta,newv);
        !          1583: }}}}}}}
        !          1584: void op_5320(UWORD opcode)
        !          1585: {
        !          1586:        ULONG srcreg = 1;
        !          1587:        ULONG dstreg = (opcode & 7) >> 0;
        !          1588: {{     ULONG src = srcreg;
        !          1589: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          1590: {      CPTR dsta = regs.a[dstreg];
        !          1591:        BYTE dst = get_byte(dsta);
        !          1592: {      ULONG newv = dst - src;
        !          1593: {      bool flgs = ((BYTE)(src)) < 0;
        !          1594:        bool flgo = ((BYTE)(dst)) < 0;
        !          1595:        bool flgn = ((BYTE)(newv)) < 0;
        !          1596:        regs.z = ((BYTE)(newv)) == 0;
        !          1597:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1598:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          1599:        regs.n = flgn != 0;
        !          1600:        put_byte(dsta,newv);
        !          1601: }}}}}}}
        !          1602: void op_5328(UWORD opcode)
        !          1603: {
        !          1604:        ULONG srcreg = 1;
        !          1605:        ULONG dstreg = (opcode & 7) >> 0;
        !          1606: {{     ULONG src = srcreg;
        !          1607: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          1608:        BYTE dst = get_byte(dsta);
        !          1609: {      ULONG newv = dst - src;
        !          1610: {      bool flgs = ((BYTE)(src)) < 0;
        !          1611:        bool flgo = ((BYTE)(dst)) < 0;
        !          1612:        bool flgn = ((BYTE)(newv)) < 0;
        !          1613:        regs.z = ((BYTE)(newv)) == 0;
        !          1614:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1615:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          1616:        regs.n = flgn != 0;
        !          1617:        put_byte(dsta,newv);
        !          1618: }}}}}}
        !          1619: void op_5330(UWORD opcode)
        !          1620: {
        !          1621:        ULONG srcreg = 1;
        !          1622:        ULONG dstreg = (opcode & 7) >> 0;
        !          1623: {{     ULONG src = srcreg;
        !          1624: {      CPTR dsta = regs.a[dstreg];
        !          1625:        UWORD dstdp = nextiword();
        !          1626:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          1627: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          1628:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          1629:        dsta += dstdpr;
        !          1630: {      BYTE dst = get_byte(dsta);
        !          1631: {      ULONG newv = dst - src;
        !          1632: {      bool flgs = ((BYTE)(src)) < 0;
        !          1633:        bool flgo = ((BYTE)(dst)) < 0;
        !          1634:        bool flgn = ((BYTE)(newv)) < 0;
        !          1635:        regs.z = ((BYTE)(newv)) == 0;
        !          1636:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1637:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          1638:        regs.n = flgn != 0;
        !          1639:        put_byte(dsta,newv);
        !          1640: }}}}}}}}
        !          1641: void op_5338(UWORD opcode)
        !          1642: {
        !          1643:        ULONG srcreg = 1;
        !          1644: {{     ULONG src = srcreg;
        !          1645: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          1646:        BYTE dst = get_byte(dsta);
        !          1647: {      ULONG newv = dst - src;
        !          1648: {      bool flgs = ((BYTE)(src)) < 0;
        !          1649:        bool flgo = ((BYTE)(dst)) < 0;
        !          1650:        bool flgn = ((BYTE)(newv)) < 0;
        !          1651:        regs.z = ((BYTE)(newv)) == 0;
        !          1652:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1653:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          1654:        regs.n = flgn != 0;
        !          1655:        put_byte(dsta,newv);
        !          1656: }}}}}}
        !          1657: void op_5339(UWORD opcode)
        !          1658: {
        !          1659:        ULONG srcreg = 1;
        !          1660: {{     ULONG src = srcreg;
        !          1661: {      CPTR dsta = nextilong();
        !          1662:        BYTE dst = get_byte(dsta);
        !          1663: {      ULONG newv = dst - src;
        !          1664: {      bool flgs = ((BYTE)(src)) < 0;
        !          1665:        bool flgo = ((BYTE)(dst)) < 0;
        !          1666:        bool flgn = ((BYTE)(newv)) < 0;
        !          1667:        regs.z = ((BYTE)(newv)) == 0;
        !          1668:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1669:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          1670:        regs.n = flgn != 0;
        !          1671:        put_byte(dsta,newv);
        !          1672: }}}}}}
        !          1673: void op_5340(UWORD opcode)
        !          1674: {
        !          1675:        ULONG srcreg = 1;
        !          1676:        ULONG dstreg = (opcode & 7) >> 0;
        !          1677: {{     ULONG src = srcreg;
        !          1678: {      WORD dst = regs.d[dstreg];
        !          1679: {      ULONG newv = dst - src;
        !          1680: {      bool flgs = ((WORD)(src)) < 0;
        !          1681:        bool flgo = ((WORD)(dst)) < 0;
        !          1682:        bool flgn = ((WORD)(newv)) < 0;
        !          1683:        regs.z = ((WORD)(newv)) == 0;
        !          1684:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1685:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          1686:        regs.n = flgn != 0;
        !          1687:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          1688: }}}}}}
        !          1689: void op_5348(UWORD opcode)
        !          1690: {
        !          1691:        ULONG srcreg = 1;
        !          1692:        ULONG dstreg = (opcode & 7) >> 0;
        !          1693: {{     ULONG src = srcreg;
        !          1694: {      LONG dst = regs.a[dstreg];
        !          1695: {      ULONG newv = dst - src;
        !          1696:        regs.a[dstreg] = (newv);
        !          1697: }}}}}
        !          1698: void op_5350(UWORD opcode)
        !          1699: {
        !          1700:        ULONG srcreg = 1;
        !          1701:        ULONG dstreg = (opcode & 7) >> 0;
        !          1702: {{     ULONG src = srcreg;
        !          1703: {      CPTR dsta = regs.a[dstreg];
        !          1704:        WORD dst = get_word(dsta);
        !          1705: {      ULONG newv = dst - src;
        !          1706: {      bool flgs = ((WORD)(src)) < 0;
        !          1707:        bool flgo = ((WORD)(dst)) < 0;
        !          1708:        bool flgn = ((WORD)(newv)) < 0;
        !          1709:        regs.z = ((WORD)(newv)) == 0;
        !          1710:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1711:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          1712:        regs.n = flgn != 0;
        !          1713:        put_word(dsta,newv);
        !          1714: }}}}}}
        !          1715: void op_5358(UWORD opcode)
        !          1716: {
        !          1717:        ULONG srcreg = 1;
        !          1718:        ULONG dstreg = (opcode & 7) >> 0;
        !          1719: {{     ULONG src = srcreg;
        !          1720: {      CPTR dsta = regs.a[dstreg];
        !          1721:        WORD dst = get_word(dsta);
        !          1722: {      regs.a[dstreg] += 2;
        !          1723: {      ULONG newv = dst - src;
        !          1724: {      bool flgs = ((WORD)(src)) < 0;
        !          1725:        bool flgo = ((WORD)(dst)) < 0;
        !          1726:        bool flgn = ((WORD)(newv)) < 0;
        !          1727:        regs.z = ((WORD)(newv)) == 0;
        !          1728:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1729:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          1730:        regs.n = flgn != 0;
        !          1731:        put_word(dsta,newv);
        !          1732: }}}}}}}
        !          1733: void op_5360(UWORD opcode)
        !          1734: {
        !          1735:        ULONG srcreg = 1;
        !          1736:        ULONG dstreg = (opcode & 7) >> 0;
        !          1737: {{     ULONG src = srcreg;
        !          1738: {      regs.a[dstreg] -= 2;
        !          1739: {      CPTR dsta = regs.a[dstreg];
        !          1740:        WORD dst = get_word(dsta);
        !          1741: {      ULONG newv = dst - src;
        !          1742: {      bool flgs = ((WORD)(src)) < 0;
        !          1743:        bool flgo = ((WORD)(dst)) < 0;
        !          1744:        bool flgn = ((WORD)(newv)) < 0;
        !          1745:        regs.z = ((WORD)(newv)) == 0;
        !          1746:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1747:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          1748:        regs.n = flgn != 0;
        !          1749:        put_word(dsta,newv);
        !          1750: }}}}}}}
        !          1751: void op_5368(UWORD opcode)
        !          1752: {
        !          1753:        ULONG srcreg = 1;
        !          1754:        ULONG dstreg = (opcode & 7) >> 0;
        !          1755: {{     ULONG src = srcreg;
        !          1756: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          1757:        WORD dst = get_word(dsta);
        !          1758: {      ULONG newv = dst - src;
        !          1759: {      bool flgs = ((WORD)(src)) < 0;
        !          1760:        bool flgo = ((WORD)(dst)) < 0;
        !          1761:        bool flgn = ((WORD)(newv)) < 0;
        !          1762:        regs.z = ((WORD)(newv)) == 0;
        !          1763:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1764:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          1765:        regs.n = flgn != 0;
        !          1766:        put_word(dsta,newv);
        !          1767: }}}}}}
        !          1768: void op_5370(UWORD opcode)
        !          1769: {
        !          1770:        ULONG srcreg = 1;
        !          1771:        ULONG dstreg = (opcode & 7) >> 0;
        !          1772: {{     ULONG src = srcreg;
        !          1773: {      CPTR dsta = regs.a[dstreg];
        !          1774:        UWORD dstdp = nextiword();
        !          1775:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          1776: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          1777:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          1778:        dsta += dstdpr;
        !          1779: {      WORD dst = get_word(dsta);
        !          1780: {      ULONG newv = dst - src;
        !          1781: {      bool flgs = ((WORD)(src)) < 0;
        !          1782:        bool flgo = ((WORD)(dst)) < 0;
        !          1783:        bool flgn = ((WORD)(newv)) < 0;
        !          1784:        regs.z = ((WORD)(newv)) == 0;
        !          1785:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1786:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          1787:        regs.n = flgn != 0;
        !          1788:        put_word(dsta,newv);
        !          1789: }}}}}}}}
        !          1790: void op_5378(UWORD opcode)
        !          1791: {
        !          1792:        ULONG srcreg = 1;
        !          1793: {{     ULONG src = srcreg;
        !          1794: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          1795:        WORD dst = get_word(dsta);
        !          1796: {      ULONG newv = dst - src;
        !          1797: {      bool flgs = ((WORD)(src)) < 0;
        !          1798:        bool flgo = ((WORD)(dst)) < 0;
        !          1799:        bool flgn = ((WORD)(newv)) < 0;
        !          1800:        regs.z = ((WORD)(newv)) == 0;
        !          1801:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1802:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          1803:        regs.n = flgn != 0;
        !          1804:        put_word(dsta,newv);
        !          1805: }}}}}}
        !          1806: void op_5379(UWORD opcode)
        !          1807: {
        !          1808:        ULONG srcreg = 1;
        !          1809: {{     ULONG src = srcreg;
        !          1810: {      CPTR dsta = nextilong();
        !          1811:        WORD dst = get_word(dsta);
        !          1812: {      ULONG newv = dst - src;
        !          1813: {      bool flgs = ((WORD)(src)) < 0;
        !          1814:        bool flgo = ((WORD)(dst)) < 0;
        !          1815:        bool flgn = ((WORD)(newv)) < 0;
        !          1816:        regs.z = ((WORD)(newv)) == 0;
        !          1817:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1818:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          1819:        regs.n = flgn != 0;
        !          1820:        put_word(dsta,newv);
        !          1821: }}}}}}
        !          1822: void op_5380(UWORD opcode)
        !          1823: {
        !          1824:        ULONG srcreg = 1;
        !          1825:        ULONG dstreg = (opcode & 7) >> 0;
        !          1826: {{     ULONG src = srcreg;
        !          1827: {      LONG dst = regs.d[dstreg];
        !          1828: {      ULONG newv = dst - src;
        !          1829: {      bool flgs = ((LONG)(src)) < 0;
        !          1830:        bool flgo = ((LONG)(dst)) < 0;
        !          1831:        bool flgn = ((LONG)(newv)) < 0;
        !          1832:        regs.z = ((LONG)(newv)) == 0;
        !          1833:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1834:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          1835:        regs.n = flgn != 0;
        !          1836:        regs.d[dstreg] = (newv);
        !          1837: }}}}}}
        !          1838: void op_5388(UWORD opcode)
        !          1839: {
        !          1840:        ULONG srcreg = 1;
        !          1841:        ULONG dstreg = (opcode & 7) >> 0;
        !          1842: {{     ULONG src = srcreg;
        !          1843: {      LONG dst = regs.a[dstreg];
        !          1844: {      ULONG newv = dst - src;
        !          1845:        regs.a[dstreg] = (newv);
        !          1846: }}}}}
        !          1847: void op_5390(UWORD opcode)
        !          1848: {
        !          1849:        ULONG srcreg = 1;
        !          1850:        ULONG dstreg = (opcode & 7) >> 0;
        !          1851: {{     ULONG src = srcreg;
        !          1852: {      CPTR dsta = regs.a[dstreg];
        !          1853:        LONG dst = get_long(dsta);
        !          1854: {      ULONG newv = dst - src;
        !          1855: {      bool flgs = ((LONG)(src)) < 0;
        !          1856:        bool flgo = ((LONG)(dst)) < 0;
        !          1857:        bool flgn = ((LONG)(newv)) < 0;
        !          1858:        regs.z = ((LONG)(newv)) == 0;
        !          1859:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1860:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          1861:        regs.n = flgn != 0;
        !          1862:        put_long(dsta,newv);
        !          1863: }}}}}}
        !          1864: void op_5398(UWORD opcode)
        !          1865: {
        !          1866:        ULONG srcreg = 1;
        !          1867:        ULONG dstreg = (opcode & 7) >> 0;
        !          1868: {{     ULONG src = srcreg;
        !          1869: {      CPTR dsta = regs.a[dstreg];
        !          1870:        LONG dst = get_long(dsta);
        !          1871: {      regs.a[dstreg] += 4;
        !          1872: {      ULONG newv = dst - src;
        !          1873: {      bool flgs = ((LONG)(src)) < 0;
        !          1874:        bool flgo = ((LONG)(dst)) < 0;
        !          1875:        bool flgn = ((LONG)(newv)) < 0;
        !          1876:        regs.z = ((LONG)(newv)) == 0;
        !          1877:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1878:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          1879:        regs.n = flgn != 0;
        !          1880:        put_long(dsta,newv);
        !          1881: }}}}}}}
        !          1882: void op_53a0(UWORD opcode)
        !          1883: {
        !          1884:        ULONG srcreg = 1;
        !          1885:        ULONG dstreg = (opcode & 7) >> 0;
        !          1886: {{     ULONG src = srcreg;
        !          1887: {      regs.a[dstreg] -= 4;
        !          1888: {      CPTR dsta = regs.a[dstreg];
        !          1889:        LONG dst = get_long(dsta);
        !          1890: {      ULONG newv = dst - src;
        !          1891: {      bool flgs = ((LONG)(src)) < 0;
        !          1892:        bool flgo = ((LONG)(dst)) < 0;
        !          1893:        bool flgn = ((LONG)(newv)) < 0;
        !          1894:        regs.z = ((LONG)(newv)) == 0;
        !          1895:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1896:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          1897:        regs.n = flgn != 0;
        !          1898:        put_long(dsta,newv);
        !          1899: }}}}}}}
        !          1900: void op_53a8(UWORD opcode)
        !          1901: {
        !          1902:        ULONG srcreg = 1;
        !          1903:        ULONG dstreg = (opcode & 7) >> 0;
        !          1904: {{     ULONG src = srcreg;
        !          1905: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          1906:        LONG dst = get_long(dsta);
        !          1907: {      ULONG newv = dst - src;
        !          1908: {      bool flgs = ((LONG)(src)) < 0;
        !          1909:        bool flgo = ((LONG)(dst)) < 0;
        !          1910:        bool flgn = ((LONG)(newv)) < 0;
        !          1911:        regs.z = ((LONG)(newv)) == 0;
        !          1912:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1913:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          1914:        regs.n = flgn != 0;
        !          1915:        put_long(dsta,newv);
        !          1916: }}}}}}
        !          1917: void op_53b0(UWORD opcode)
        !          1918: {
        !          1919:        ULONG srcreg = 1;
        !          1920:        ULONG dstreg = (opcode & 7) >> 0;
        !          1921: {{     ULONG src = srcreg;
        !          1922: {      CPTR dsta = regs.a[dstreg];
        !          1923:        UWORD dstdp = nextiword();
        !          1924:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          1925: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          1926:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          1927:        dsta += dstdpr;
        !          1928: {      LONG dst = get_long(dsta);
        !          1929: {      ULONG newv = dst - src;
        !          1930: {      bool flgs = ((LONG)(src)) < 0;
        !          1931:        bool flgo = ((LONG)(dst)) < 0;
        !          1932:        bool flgn = ((LONG)(newv)) < 0;
        !          1933:        regs.z = ((LONG)(newv)) == 0;
        !          1934:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1935:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          1936:        regs.n = flgn != 0;
        !          1937:        put_long(dsta,newv);
        !          1938: }}}}}}}}
        !          1939: void op_53b8(UWORD opcode)
        !          1940: {
        !          1941:        ULONG srcreg = 1;
        !          1942: {{     ULONG src = srcreg;
        !          1943: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          1944:        LONG dst = get_long(dsta);
        !          1945: {      ULONG newv = dst - src;
        !          1946: {      bool flgs = ((LONG)(src)) < 0;
        !          1947:        bool flgo = ((LONG)(dst)) < 0;
        !          1948:        bool flgn = ((LONG)(newv)) < 0;
        !          1949:        regs.z = ((LONG)(newv)) == 0;
        !          1950:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1951:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          1952:        regs.n = flgn != 0;
        !          1953:        put_long(dsta,newv);
        !          1954: }}}}}}
        !          1955: void op_53b9(UWORD opcode)
        !          1956: {
        !          1957:        ULONG srcreg = 1;
        !          1958: {{     ULONG src = srcreg;
        !          1959: {      CPTR dsta = nextilong();
        !          1960:        LONG dst = get_long(dsta);
        !          1961: {      ULONG newv = dst - src;
        !          1962: {      bool flgs = ((LONG)(src)) < 0;
        !          1963:        bool flgo = ((LONG)(dst)) < 0;
        !          1964:        bool flgn = ((LONG)(newv)) < 0;
        !          1965:        regs.z = ((LONG)(newv)) == 0;
        !          1966:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          1967:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          1968:        regs.n = flgn != 0;
        !          1969:        put_long(dsta,newv);
        !          1970: }}}}}}
        !          1971: void op_53c0(UWORD opcode)
        !          1972: {
        !          1973:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1974: {{{    int val = cctrue(3) ? 0xff : 0;
        !          1975:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          1976: }}}}
        !          1977: void op_53c8(UWORD opcode)
        !          1978: {
        !          1979:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1980: {{     WORD src = regs.d[srcreg];
        !          1981: {      WORD offs = nextiword();
        !          1982:        if (!cctrue(3)) {
        !          1983:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          1984:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          1985:        }
        !          1986: }}}}
        !          1987: void op_53d0(UWORD opcode)
        !          1988: {
        !          1989:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1990: {{     CPTR srca = regs.a[srcreg];
        !          1991: {      int val = cctrue(3) ? 0xff : 0;
        !          1992:        put_byte(srca,val);
        !          1993: }}}}
        !          1994: void op_53d8(UWORD opcode)
        !          1995: {
        !          1996:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1997: {{     CPTR srca = regs.a[srcreg];
        !          1998: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          1999: {      int val = cctrue(3) ? 0xff : 0;
        !          2000:        put_byte(srca,val);
        !          2001: }}}}}
        !          2002: void op_53e0(UWORD opcode)
        !          2003: {
        !          2004:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2005: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          2006: {      CPTR srca = regs.a[srcreg];
        !          2007: {      int val = cctrue(3) ? 0xff : 0;
        !          2008:        put_byte(srca,val);
        !          2009: }}}}}
        !          2010: void op_53e8(UWORD opcode)
        !          2011: {
        !          2012:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2013: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          2014: {      int val = cctrue(3) ? 0xff : 0;
        !          2015:        put_byte(srca,val);
        !          2016: }}}}
        !          2017: void op_53f0(UWORD opcode)
        !          2018: {
        !          2019:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2020: {{     CPTR srca = regs.a[srcreg];
        !          2021:        UWORD srcdp = nextiword();
        !          2022:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          2023: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          2024:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          2025:        srca += srcdpr;
        !          2026: {      int val = cctrue(3) ? 0xff : 0;
        !          2027:        put_byte(srca,val);
        !          2028: }}}}}
        !          2029: void op_53f8(UWORD opcode)
        !          2030: {
        !          2031: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          2032: {      int val = cctrue(3) ? 0xff : 0;
        !          2033:        put_byte(srca,val);
        !          2034: }}}}
        !          2035: void op_53f9(UWORD opcode)
        !          2036: {
        !          2037: {{     CPTR srca = nextilong();
        !          2038: {      int val = cctrue(3) ? 0xff : 0;
        !          2039:        put_byte(srca,val);
        !          2040: }}}}
        !          2041: void op_5400(UWORD opcode)
        !          2042: {
        !          2043:        ULONG srcreg = 2;
        !          2044:        ULONG dstreg = (opcode & 7) >> 0;
        !          2045: {{     ULONG src = srcreg;
        !          2046: {      BYTE dst = regs.d[dstreg];
        !          2047: {      ULONG newv = dst + src;
        !          2048: {      bool flgs = ((BYTE)(src)) < 0;
        !          2049:        bool flgo = ((BYTE)(dst)) < 0;
        !          2050:        bool flgn = ((BYTE)(newv)) < 0;
        !          2051:        regs.z = ((BYTE)(newv)) == 0;
        !          2052:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2053:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          2054:        regs.n = flgn != 0;
        !          2055:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          2056: }}}}}}
        !          2057: void op_5410(UWORD opcode)
        !          2058: {
        !          2059:        ULONG srcreg = 2;
        !          2060:        ULONG dstreg = (opcode & 7) >> 0;
        !          2061: {{     ULONG src = srcreg;
        !          2062: {      CPTR dsta = regs.a[dstreg];
        !          2063:        BYTE dst = get_byte(dsta);
        !          2064: {      ULONG newv = dst + src;
        !          2065: {      bool flgs = ((BYTE)(src)) < 0;
        !          2066:        bool flgo = ((BYTE)(dst)) < 0;
        !          2067:        bool flgn = ((BYTE)(newv)) < 0;
        !          2068:        regs.z = ((BYTE)(newv)) == 0;
        !          2069:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2070:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          2071:        regs.n = flgn != 0;
        !          2072:        put_byte(dsta,newv);
        !          2073: }}}}}}
        !          2074: void op_5418(UWORD opcode)
        !          2075: {
        !          2076:        ULONG srcreg = 2;
        !          2077:        ULONG dstreg = (opcode & 7) >> 0;
        !          2078: {{     ULONG src = srcreg;
        !          2079: {      CPTR dsta = regs.a[dstreg];
        !          2080:        BYTE dst = get_byte(dsta);
        !          2081: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          2082: {      ULONG newv = dst + src;
        !          2083: {      bool flgs = ((BYTE)(src)) < 0;
        !          2084:        bool flgo = ((BYTE)(dst)) < 0;
        !          2085:        bool flgn = ((BYTE)(newv)) < 0;
        !          2086:        regs.z = ((BYTE)(newv)) == 0;
        !          2087:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2088:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          2089:        regs.n = flgn != 0;
        !          2090:        put_byte(dsta,newv);
        !          2091: }}}}}}}
        !          2092: void op_5420(UWORD opcode)
        !          2093: {
        !          2094:        ULONG srcreg = 2;
        !          2095:        ULONG dstreg = (opcode & 7) >> 0;
        !          2096: {{     ULONG src = srcreg;
        !          2097: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          2098: {      CPTR dsta = regs.a[dstreg];
        !          2099:        BYTE dst = get_byte(dsta);
        !          2100: {      ULONG newv = dst + src;
        !          2101: {      bool flgs = ((BYTE)(src)) < 0;
        !          2102:        bool flgo = ((BYTE)(dst)) < 0;
        !          2103:        bool flgn = ((BYTE)(newv)) < 0;
        !          2104:        regs.z = ((BYTE)(newv)) == 0;
        !          2105:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2106:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          2107:        regs.n = flgn != 0;
        !          2108:        put_byte(dsta,newv);
        !          2109: }}}}}}}
        !          2110: void op_5428(UWORD opcode)
        !          2111: {
        !          2112:        ULONG srcreg = 2;
        !          2113:        ULONG dstreg = (opcode & 7) >> 0;
        !          2114: {{     ULONG src = srcreg;
        !          2115: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          2116:        BYTE dst = get_byte(dsta);
        !          2117: {      ULONG newv = dst + src;
        !          2118: {      bool flgs = ((BYTE)(src)) < 0;
        !          2119:        bool flgo = ((BYTE)(dst)) < 0;
        !          2120:        bool flgn = ((BYTE)(newv)) < 0;
        !          2121:        regs.z = ((BYTE)(newv)) == 0;
        !          2122:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2123:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          2124:        regs.n = flgn != 0;
        !          2125:        put_byte(dsta,newv);
        !          2126: }}}}}}
        !          2127: void op_5430(UWORD opcode)
        !          2128: {
        !          2129:        ULONG srcreg = 2;
        !          2130:        ULONG dstreg = (opcode & 7) >> 0;
        !          2131: {{     ULONG src = srcreg;
        !          2132: {      CPTR dsta = regs.a[dstreg];
        !          2133:        UWORD dstdp = nextiword();
        !          2134:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          2135: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          2136:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          2137:        dsta += dstdpr;
        !          2138: {      BYTE dst = get_byte(dsta);
        !          2139: {      ULONG newv = dst + src;
        !          2140: {      bool flgs = ((BYTE)(src)) < 0;
        !          2141:        bool flgo = ((BYTE)(dst)) < 0;
        !          2142:        bool flgn = ((BYTE)(newv)) < 0;
        !          2143:        regs.z = ((BYTE)(newv)) == 0;
        !          2144:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2145:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          2146:        regs.n = flgn != 0;
        !          2147:        put_byte(dsta,newv);
        !          2148: }}}}}}}}
        !          2149: void op_5438(UWORD opcode)
        !          2150: {
        !          2151:        ULONG srcreg = 2;
        !          2152: {{     ULONG src = srcreg;
        !          2153: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          2154:        BYTE dst = get_byte(dsta);
        !          2155: {      ULONG newv = dst + src;
        !          2156: {      bool flgs = ((BYTE)(src)) < 0;
        !          2157:        bool flgo = ((BYTE)(dst)) < 0;
        !          2158:        bool flgn = ((BYTE)(newv)) < 0;
        !          2159:        regs.z = ((BYTE)(newv)) == 0;
        !          2160:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2161:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          2162:        regs.n = flgn != 0;
        !          2163:        put_byte(dsta,newv);
        !          2164: }}}}}}
        !          2165: void op_5439(UWORD opcode)
        !          2166: {
        !          2167:        ULONG srcreg = 2;
        !          2168: {{     ULONG src = srcreg;
        !          2169: {      CPTR dsta = nextilong();
        !          2170:        BYTE dst = get_byte(dsta);
        !          2171: {      ULONG newv = dst + src;
        !          2172: {      bool flgs = ((BYTE)(src)) < 0;
        !          2173:        bool flgo = ((BYTE)(dst)) < 0;
        !          2174:        bool flgn = ((BYTE)(newv)) < 0;
        !          2175:        regs.z = ((BYTE)(newv)) == 0;
        !          2176:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2177:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          2178:        regs.n = flgn != 0;
        !          2179:        put_byte(dsta,newv);
        !          2180: }}}}}}
        !          2181: void op_5440(UWORD opcode)
        !          2182: {
        !          2183:        ULONG srcreg = 2;
        !          2184:        ULONG dstreg = (opcode & 7) >> 0;
        !          2185: {{     ULONG src = srcreg;
        !          2186: {      WORD dst = regs.d[dstreg];
        !          2187: {      ULONG newv = dst + src;
        !          2188: {      bool flgs = ((WORD)(src)) < 0;
        !          2189:        bool flgo = ((WORD)(dst)) < 0;
        !          2190:        bool flgn = ((WORD)(newv)) < 0;
        !          2191:        regs.z = ((WORD)(newv)) == 0;
        !          2192:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2193:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          2194:        regs.n = flgn != 0;
        !          2195:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          2196: }}}}}}
        !          2197: void op_5448(UWORD opcode)
        !          2198: {
        !          2199:        ULONG srcreg = 2;
        !          2200:        ULONG dstreg = (opcode & 7) >> 0;
        !          2201: {{     ULONG src = srcreg;
        !          2202: {      LONG dst = regs.a[dstreg];
        !          2203: {      ULONG newv = dst + src;
        !          2204:        regs.a[dstreg] = (newv);
        !          2205: }}}}}
        !          2206: void op_5450(UWORD opcode)
        !          2207: {
        !          2208:        ULONG srcreg = 2;
        !          2209:        ULONG dstreg = (opcode & 7) >> 0;
        !          2210: {{     ULONG src = srcreg;
        !          2211: {      CPTR dsta = regs.a[dstreg];
        !          2212:        WORD dst = get_word(dsta);
        !          2213: {      ULONG newv = dst + src;
        !          2214: {      bool flgs = ((WORD)(src)) < 0;
        !          2215:        bool flgo = ((WORD)(dst)) < 0;
        !          2216:        bool flgn = ((WORD)(newv)) < 0;
        !          2217:        regs.z = ((WORD)(newv)) == 0;
        !          2218:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2219:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          2220:        regs.n = flgn != 0;
        !          2221:        put_word(dsta,newv);
        !          2222: }}}}}}
        !          2223: void op_5458(UWORD opcode)
        !          2224: {
        !          2225:        ULONG srcreg = 2;
        !          2226:        ULONG dstreg = (opcode & 7) >> 0;
        !          2227: {{     ULONG src = srcreg;
        !          2228: {      CPTR dsta = regs.a[dstreg];
        !          2229:        WORD dst = get_word(dsta);
        !          2230: {      regs.a[dstreg] += 2;
        !          2231: {      ULONG newv = dst + src;
        !          2232: {      bool flgs = ((WORD)(src)) < 0;
        !          2233:        bool flgo = ((WORD)(dst)) < 0;
        !          2234:        bool flgn = ((WORD)(newv)) < 0;
        !          2235:        regs.z = ((WORD)(newv)) == 0;
        !          2236:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2237:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          2238:        regs.n = flgn != 0;
        !          2239:        put_word(dsta,newv);
        !          2240: }}}}}}}
        !          2241: void op_5460(UWORD opcode)
        !          2242: {
        !          2243:        ULONG srcreg = 2;
        !          2244:        ULONG dstreg = (opcode & 7) >> 0;
        !          2245: {{     ULONG src = srcreg;
        !          2246: {      regs.a[dstreg] -= 2;
        !          2247: {      CPTR dsta = regs.a[dstreg];
        !          2248:        WORD dst = get_word(dsta);
        !          2249: {      ULONG newv = dst + src;
        !          2250: {      bool flgs = ((WORD)(src)) < 0;
        !          2251:        bool flgo = ((WORD)(dst)) < 0;
        !          2252:        bool flgn = ((WORD)(newv)) < 0;
        !          2253:        regs.z = ((WORD)(newv)) == 0;
        !          2254:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2255:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          2256:        regs.n = flgn != 0;
        !          2257:        put_word(dsta,newv);
        !          2258: }}}}}}}
        !          2259: void op_5468(UWORD opcode)
        !          2260: {
        !          2261:        ULONG srcreg = 2;
        !          2262:        ULONG dstreg = (opcode & 7) >> 0;
        !          2263: {{     ULONG src = srcreg;
        !          2264: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          2265:        WORD dst = get_word(dsta);
        !          2266: {      ULONG newv = dst + src;
        !          2267: {      bool flgs = ((WORD)(src)) < 0;
        !          2268:        bool flgo = ((WORD)(dst)) < 0;
        !          2269:        bool flgn = ((WORD)(newv)) < 0;
        !          2270:        regs.z = ((WORD)(newv)) == 0;
        !          2271:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2272:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          2273:        regs.n = flgn != 0;
        !          2274:        put_word(dsta,newv);
        !          2275: }}}}}}
        !          2276: void op_5470(UWORD opcode)
        !          2277: {
        !          2278:        ULONG srcreg = 2;
        !          2279:        ULONG dstreg = (opcode & 7) >> 0;
        !          2280: {{     ULONG src = srcreg;
        !          2281: {      CPTR dsta = regs.a[dstreg];
        !          2282:        UWORD dstdp = nextiword();
        !          2283:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          2284: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          2285:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          2286:        dsta += dstdpr;
        !          2287: {      WORD dst = get_word(dsta);
        !          2288: {      ULONG newv = dst + src;
        !          2289: {      bool flgs = ((WORD)(src)) < 0;
        !          2290:        bool flgo = ((WORD)(dst)) < 0;
        !          2291:        bool flgn = ((WORD)(newv)) < 0;
        !          2292:        regs.z = ((WORD)(newv)) == 0;
        !          2293:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2294:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          2295:        regs.n = flgn != 0;
        !          2296:        put_word(dsta,newv);
        !          2297: }}}}}}}}
        !          2298: void op_5478(UWORD opcode)
        !          2299: {
        !          2300:        ULONG srcreg = 2;
        !          2301: {{     ULONG src = srcreg;
        !          2302: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          2303:        WORD dst = get_word(dsta);
        !          2304: {      ULONG newv = dst + src;
        !          2305: {      bool flgs = ((WORD)(src)) < 0;
        !          2306:        bool flgo = ((WORD)(dst)) < 0;
        !          2307:        bool flgn = ((WORD)(newv)) < 0;
        !          2308:        regs.z = ((WORD)(newv)) == 0;
        !          2309:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2310:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          2311:        regs.n = flgn != 0;
        !          2312:        put_word(dsta,newv);
        !          2313: }}}}}}
        !          2314: void op_5479(UWORD opcode)
        !          2315: {
        !          2316:        ULONG srcreg = 2;
        !          2317: {{     ULONG src = srcreg;
        !          2318: {      CPTR dsta = nextilong();
        !          2319:        WORD dst = get_word(dsta);
        !          2320: {      ULONG newv = dst + src;
        !          2321: {      bool flgs = ((WORD)(src)) < 0;
        !          2322:        bool flgo = ((WORD)(dst)) < 0;
        !          2323:        bool flgn = ((WORD)(newv)) < 0;
        !          2324:        regs.z = ((WORD)(newv)) == 0;
        !          2325:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2326:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          2327:        regs.n = flgn != 0;
        !          2328:        put_word(dsta,newv);
        !          2329: }}}}}}
        !          2330: void op_5480(UWORD opcode)
        !          2331: {
        !          2332:        ULONG srcreg = 2;
        !          2333:        ULONG dstreg = (opcode & 7) >> 0;
        !          2334: {{     ULONG src = srcreg;
        !          2335: {      LONG dst = regs.d[dstreg];
        !          2336: {      ULONG newv = dst + src;
        !          2337: {      bool flgs = ((LONG)(src)) < 0;
        !          2338:        bool flgo = ((LONG)(dst)) < 0;
        !          2339:        bool flgn = ((LONG)(newv)) < 0;
        !          2340:        regs.z = ((LONG)(newv)) == 0;
        !          2341:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2342:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          2343:        regs.n = flgn != 0;
        !          2344:        regs.d[dstreg] = (newv);
        !          2345: }}}}}}
        !          2346: void op_5488(UWORD opcode)
        !          2347: {
        !          2348:        ULONG srcreg = 2;
        !          2349:        ULONG dstreg = (opcode & 7) >> 0;
        !          2350: {{     ULONG src = srcreg;
        !          2351: {      LONG dst = regs.a[dstreg];
        !          2352: {      ULONG newv = dst + src;
        !          2353:        regs.a[dstreg] = (newv);
        !          2354: }}}}}
        !          2355: void op_5490(UWORD opcode)
        !          2356: {
        !          2357:        ULONG srcreg = 2;
        !          2358:        ULONG dstreg = (opcode & 7) >> 0;
        !          2359: {{     ULONG src = srcreg;
        !          2360: {      CPTR dsta = regs.a[dstreg];
        !          2361:        LONG dst = get_long(dsta);
        !          2362: {      ULONG newv = dst + src;
        !          2363: {      bool flgs = ((LONG)(src)) < 0;
        !          2364:        bool flgo = ((LONG)(dst)) < 0;
        !          2365:        bool flgn = ((LONG)(newv)) < 0;
        !          2366:        regs.z = ((LONG)(newv)) == 0;
        !          2367:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2368:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          2369:        regs.n = flgn != 0;
        !          2370:        put_long(dsta,newv);
        !          2371: }}}}}}
        !          2372: void op_5498(UWORD opcode)
        !          2373: {
        !          2374:        ULONG srcreg = 2;
        !          2375:        ULONG dstreg = (opcode & 7) >> 0;
        !          2376: {{     ULONG src = srcreg;
        !          2377: {      CPTR dsta = regs.a[dstreg];
        !          2378:        LONG dst = get_long(dsta);
        !          2379: {      regs.a[dstreg] += 4;
        !          2380: {      ULONG newv = dst + src;
        !          2381: {      bool flgs = ((LONG)(src)) < 0;
        !          2382:        bool flgo = ((LONG)(dst)) < 0;
        !          2383:        bool flgn = ((LONG)(newv)) < 0;
        !          2384:        regs.z = ((LONG)(newv)) == 0;
        !          2385:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2386:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          2387:        regs.n = flgn != 0;
        !          2388:        put_long(dsta,newv);
        !          2389: }}}}}}}
        !          2390: void op_54a0(UWORD opcode)
        !          2391: {
        !          2392:        ULONG srcreg = 2;
        !          2393:        ULONG dstreg = (opcode & 7) >> 0;
        !          2394: {{     ULONG src = srcreg;
        !          2395: {      regs.a[dstreg] -= 4;
        !          2396: {      CPTR dsta = regs.a[dstreg];
        !          2397:        LONG dst = get_long(dsta);
        !          2398: {      ULONG newv = dst + src;
        !          2399: {      bool flgs = ((LONG)(src)) < 0;
        !          2400:        bool flgo = ((LONG)(dst)) < 0;
        !          2401:        bool flgn = ((LONG)(newv)) < 0;
        !          2402:        regs.z = ((LONG)(newv)) == 0;
        !          2403:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2404:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          2405:        regs.n = flgn != 0;
        !          2406:        put_long(dsta,newv);
        !          2407: }}}}}}}
        !          2408: void op_54a8(UWORD opcode)
        !          2409: {
        !          2410:        ULONG srcreg = 2;
        !          2411:        ULONG dstreg = (opcode & 7) >> 0;
        !          2412: {{     ULONG src = srcreg;
        !          2413: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          2414:        LONG dst = get_long(dsta);
        !          2415: {      ULONG newv = dst + src;
        !          2416: {      bool flgs = ((LONG)(src)) < 0;
        !          2417:        bool flgo = ((LONG)(dst)) < 0;
        !          2418:        bool flgn = ((LONG)(newv)) < 0;
        !          2419:        regs.z = ((LONG)(newv)) == 0;
        !          2420:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2421:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          2422:        regs.n = flgn != 0;
        !          2423:        put_long(dsta,newv);
        !          2424: }}}}}}
        !          2425: void op_54b0(UWORD opcode)
        !          2426: {
        !          2427:        ULONG srcreg = 2;
        !          2428:        ULONG dstreg = (opcode & 7) >> 0;
        !          2429: {{     ULONG src = srcreg;
        !          2430: {      CPTR dsta = regs.a[dstreg];
        !          2431:        UWORD dstdp = nextiword();
        !          2432:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          2433: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          2434:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          2435:        dsta += dstdpr;
        !          2436: {      LONG dst = get_long(dsta);
        !          2437: {      ULONG newv = dst + src;
        !          2438: {      bool flgs = ((LONG)(src)) < 0;
        !          2439:        bool flgo = ((LONG)(dst)) < 0;
        !          2440:        bool flgn = ((LONG)(newv)) < 0;
        !          2441:        regs.z = ((LONG)(newv)) == 0;
        !          2442:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2443:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          2444:        regs.n = flgn != 0;
        !          2445:        put_long(dsta,newv);
        !          2446: }}}}}}}}
        !          2447: void op_54b8(UWORD opcode)
        !          2448: {
        !          2449:        ULONG srcreg = 2;
        !          2450: {{     ULONG src = srcreg;
        !          2451: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          2452:        LONG dst = get_long(dsta);
        !          2453: {      ULONG newv = dst + src;
        !          2454: {      bool flgs = ((LONG)(src)) < 0;
        !          2455:        bool flgo = ((LONG)(dst)) < 0;
        !          2456:        bool flgn = ((LONG)(newv)) < 0;
        !          2457:        regs.z = ((LONG)(newv)) == 0;
        !          2458:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2459:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          2460:        regs.n = flgn != 0;
        !          2461:        put_long(dsta,newv);
        !          2462: }}}}}}
        !          2463: void op_54b9(UWORD opcode)
        !          2464: {
        !          2465:        ULONG srcreg = 2;
        !          2466: {{     ULONG src = srcreg;
        !          2467: {      CPTR dsta = nextilong();
        !          2468:        LONG dst = get_long(dsta);
        !          2469: {      ULONG newv = dst + src;
        !          2470: {      bool flgs = ((LONG)(src)) < 0;
        !          2471:        bool flgo = ((LONG)(dst)) < 0;
        !          2472:        bool flgn = ((LONG)(newv)) < 0;
        !          2473:        regs.z = ((LONG)(newv)) == 0;
        !          2474:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          2475:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          2476:        regs.n = flgn != 0;
        !          2477:        put_long(dsta,newv);
        !          2478: }}}}}}
        !          2479: void op_54c0(UWORD opcode)
        !          2480: {
        !          2481:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2482: {{{    int val = cctrue(4) ? 0xff : 0;
        !          2483:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          2484: }}}}
        !          2485: void op_54c8(UWORD opcode)
        !          2486: {
        !          2487:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2488: {{     WORD src = regs.d[srcreg];
        !          2489: {      WORD offs = nextiword();
        !          2490:        if (!cctrue(4)) {
        !          2491:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          2492:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          2493:        }
        !          2494: }}}}
        !          2495: void op_54d0(UWORD opcode)
        !          2496: {
        !          2497:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2498: {{     CPTR srca = regs.a[srcreg];
        !          2499: {      int val = cctrue(4) ? 0xff : 0;
        !          2500:        put_byte(srca,val);
        !          2501: }}}}
        !          2502: void op_54d8(UWORD opcode)
        !          2503: {
        !          2504:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2505: {{     CPTR srca = regs.a[srcreg];
        !          2506: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          2507: {      int val = cctrue(4) ? 0xff : 0;
        !          2508:        put_byte(srca,val);
        !          2509: }}}}}
        !          2510: void op_54e0(UWORD opcode)
        !          2511: {
        !          2512:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2513: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          2514: {      CPTR srca = regs.a[srcreg];
        !          2515: {      int val = cctrue(4) ? 0xff : 0;
        !          2516:        put_byte(srca,val);
        !          2517: }}}}}
        !          2518: void op_54e8(UWORD opcode)
        !          2519: {
        !          2520:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2521: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          2522: {      int val = cctrue(4) ? 0xff : 0;
        !          2523:        put_byte(srca,val);
        !          2524: }}}}
        !          2525: void op_54f0(UWORD opcode)
        !          2526: {
        !          2527:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2528: {{     CPTR srca = regs.a[srcreg];
        !          2529:        UWORD srcdp = nextiword();
        !          2530:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          2531: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          2532:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          2533:        srca += srcdpr;
        !          2534: {      int val = cctrue(4) ? 0xff : 0;
        !          2535:        put_byte(srca,val);
        !          2536: }}}}}
        !          2537: void op_54f8(UWORD opcode)
        !          2538: {
        !          2539: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          2540: {      int val = cctrue(4) ? 0xff : 0;
        !          2541:        put_byte(srca,val);
        !          2542: }}}}
        !          2543: void op_54f9(UWORD opcode)
        !          2544: {
        !          2545: {{     CPTR srca = nextilong();
        !          2546: {      int val = cctrue(4) ? 0xff : 0;
        !          2547:        put_byte(srca,val);
        !          2548: }}}}
        !          2549: void op_5500(UWORD opcode)
        !          2550: {
        !          2551:        ULONG srcreg = 2;
        !          2552:        ULONG dstreg = (opcode & 7) >> 0;
        !          2553: {{     ULONG src = srcreg;
        !          2554: {      BYTE dst = regs.d[dstreg];
        !          2555: {      ULONG newv = dst - src;
        !          2556: {      bool flgs = ((BYTE)(src)) < 0;
        !          2557:        bool flgo = ((BYTE)(dst)) < 0;
        !          2558:        bool flgn = ((BYTE)(newv)) < 0;
        !          2559:        regs.z = ((BYTE)(newv)) == 0;
        !          2560:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2561:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          2562:        regs.n = flgn != 0;
        !          2563:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          2564: }}}}}}
        !          2565: void op_5510(UWORD opcode)
        !          2566: {
        !          2567:        ULONG srcreg = 2;
        !          2568:        ULONG dstreg = (opcode & 7) >> 0;
        !          2569: {{     ULONG src = srcreg;
        !          2570: {      CPTR dsta = regs.a[dstreg];
        !          2571:        BYTE dst = get_byte(dsta);
        !          2572: {      ULONG newv = dst - src;
        !          2573: {      bool flgs = ((BYTE)(src)) < 0;
        !          2574:        bool flgo = ((BYTE)(dst)) < 0;
        !          2575:        bool flgn = ((BYTE)(newv)) < 0;
        !          2576:        regs.z = ((BYTE)(newv)) == 0;
        !          2577:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2578:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          2579:        regs.n = flgn != 0;
        !          2580:        put_byte(dsta,newv);
        !          2581: }}}}}}
        !          2582: void op_5518(UWORD opcode)
        !          2583: {
        !          2584:        ULONG srcreg = 2;
        !          2585:        ULONG dstreg = (opcode & 7) >> 0;
        !          2586: {{     ULONG src = srcreg;
        !          2587: {      CPTR dsta = regs.a[dstreg];
        !          2588:        BYTE dst = get_byte(dsta);
        !          2589: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          2590: {      ULONG newv = dst - src;
        !          2591: {      bool flgs = ((BYTE)(src)) < 0;
        !          2592:        bool flgo = ((BYTE)(dst)) < 0;
        !          2593:        bool flgn = ((BYTE)(newv)) < 0;
        !          2594:        regs.z = ((BYTE)(newv)) == 0;
        !          2595:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2596:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          2597:        regs.n = flgn != 0;
        !          2598:        put_byte(dsta,newv);
        !          2599: }}}}}}}
        !          2600: void op_5520(UWORD opcode)
        !          2601: {
        !          2602:        ULONG srcreg = 2;
        !          2603:        ULONG dstreg = (opcode & 7) >> 0;
        !          2604: {{     ULONG src = srcreg;
        !          2605: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          2606: {      CPTR dsta = regs.a[dstreg];
        !          2607:        BYTE dst = get_byte(dsta);
        !          2608: {      ULONG newv = dst - src;
        !          2609: {      bool flgs = ((BYTE)(src)) < 0;
        !          2610:        bool flgo = ((BYTE)(dst)) < 0;
        !          2611:        bool flgn = ((BYTE)(newv)) < 0;
        !          2612:        regs.z = ((BYTE)(newv)) == 0;
        !          2613:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2614:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          2615:        regs.n = flgn != 0;
        !          2616:        put_byte(dsta,newv);
        !          2617: }}}}}}}
        !          2618: void op_5528(UWORD opcode)
        !          2619: {
        !          2620:        ULONG srcreg = 2;
        !          2621:        ULONG dstreg = (opcode & 7) >> 0;
        !          2622: {{     ULONG src = srcreg;
        !          2623: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          2624:        BYTE dst = get_byte(dsta);
        !          2625: {      ULONG newv = dst - src;
        !          2626: {      bool flgs = ((BYTE)(src)) < 0;
        !          2627:        bool flgo = ((BYTE)(dst)) < 0;
        !          2628:        bool flgn = ((BYTE)(newv)) < 0;
        !          2629:        regs.z = ((BYTE)(newv)) == 0;
        !          2630:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2631:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          2632:        regs.n = flgn != 0;
        !          2633:        put_byte(dsta,newv);
        !          2634: }}}}}}
        !          2635: void op_5530(UWORD opcode)
        !          2636: {
        !          2637:        ULONG srcreg = 2;
        !          2638:        ULONG dstreg = (opcode & 7) >> 0;
        !          2639: {{     ULONG src = srcreg;
        !          2640: {      CPTR dsta = regs.a[dstreg];
        !          2641:        UWORD dstdp = nextiword();
        !          2642:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          2643: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          2644:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          2645:        dsta += dstdpr;
        !          2646: {      BYTE dst = get_byte(dsta);
        !          2647: {      ULONG newv = dst - src;
        !          2648: {      bool flgs = ((BYTE)(src)) < 0;
        !          2649:        bool flgo = ((BYTE)(dst)) < 0;
        !          2650:        bool flgn = ((BYTE)(newv)) < 0;
        !          2651:        regs.z = ((BYTE)(newv)) == 0;
        !          2652:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2653:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          2654:        regs.n = flgn != 0;
        !          2655:        put_byte(dsta,newv);
        !          2656: }}}}}}}}
        !          2657: void op_5538(UWORD opcode)
        !          2658: {
        !          2659:        ULONG srcreg = 2;
        !          2660: {{     ULONG src = srcreg;
        !          2661: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          2662:        BYTE dst = get_byte(dsta);
        !          2663: {      ULONG newv = dst - src;
        !          2664: {      bool flgs = ((BYTE)(src)) < 0;
        !          2665:        bool flgo = ((BYTE)(dst)) < 0;
        !          2666:        bool flgn = ((BYTE)(newv)) < 0;
        !          2667:        regs.z = ((BYTE)(newv)) == 0;
        !          2668:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2669:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          2670:        regs.n = flgn != 0;
        !          2671:        put_byte(dsta,newv);
        !          2672: }}}}}}
        !          2673: void op_5539(UWORD opcode)
        !          2674: {
        !          2675:        ULONG srcreg = 2;
        !          2676: {{     ULONG src = srcreg;
        !          2677: {      CPTR dsta = nextilong();
        !          2678:        BYTE dst = get_byte(dsta);
        !          2679: {      ULONG newv = dst - src;
        !          2680: {      bool flgs = ((BYTE)(src)) < 0;
        !          2681:        bool flgo = ((BYTE)(dst)) < 0;
        !          2682:        bool flgn = ((BYTE)(newv)) < 0;
        !          2683:        regs.z = ((BYTE)(newv)) == 0;
        !          2684:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2685:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          2686:        regs.n = flgn != 0;
        !          2687:        put_byte(dsta,newv);
        !          2688: }}}}}}
        !          2689: void op_5540(UWORD opcode)
        !          2690: {
        !          2691:        ULONG srcreg = 2;
        !          2692:        ULONG dstreg = (opcode & 7) >> 0;
        !          2693: {{     ULONG src = srcreg;
        !          2694: {      WORD dst = regs.d[dstreg];
        !          2695: {      ULONG newv = dst - src;
        !          2696: {      bool flgs = ((WORD)(src)) < 0;
        !          2697:        bool flgo = ((WORD)(dst)) < 0;
        !          2698:        bool flgn = ((WORD)(newv)) < 0;
        !          2699:        regs.z = ((WORD)(newv)) == 0;
        !          2700:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2701:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          2702:        regs.n = flgn != 0;
        !          2703:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          2704: }}}}}}
        !          2705: void op_5548(UWORD opcode)
        !          2706: {
        !          2707:        ULONG srcreg = 2;
        !          2708:        ULONG dstreg = (opcode & 7) >> 0;
        !          2709: {{     ULONG src = srcreg;
        !          2710: {      LONG dst = regs.a[dstreg];
        !          2711: {      ULONG newv = dst - src;
        !          2712:        regs.a[dstreg] = (newv);
        !          2713: }}}}}
        !          2714: void op_5550(UWORD opcode)
        !          2715: {
        !          2716:        ULONG srcreg = 2;
        !          2717:        ULONG dstreg = (opcode & 7) >> 0;
        !          2718: {{     ULONG src = srcreg;
        !          2719: {      CPTR dsta = regs.a[dstreg];
        !          2720:        WORD dst = get_word(dsta);
        !          2721: {      ULONG newv = dst - src;
        !          2722: {      bool flgs = ((WORD)(src)) < 0;
        !          2723:        bool flgo = ((WORD)(dst)) < 0;
        !          2724:        bool flgn = ((WORD)(newv)) < 0;
        !          2725:        regs.z = ((WORD)(newv)) == 0;
        !          2726:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2727:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          2728:        regs.n = flgn != 0;
        !          2729:        put_word(dsta,newv);
        !          2730: }}}}}}
        !          2731: void op_5558(UWORD opcode)
        !          2732: {
        !          2733:        ULONG srcreg = 2;
        !          2734:        ULONG dstreg = (opcode & 7) >> 0;
        !          2735: {{     ULONG src = srcreg;
        !          2736: {      CPTR dsta = regs.a[dstreg];
        !          2737:        WORD dst = get_word(dsta);
        !          2738: {      regs.a[dstreg] += 2;
        !          2739: {      ULONG newv = dst - src;
        !          2740: {      bool flgs = ((WORD)(src)) < 0;
        !          2741:        bool flgo = ((WORD)(dst)) < 0;
        !          2742:        bool flgn = ((WORD)(newv)) < 0;
        !          2743:        regs.z = ((WORD)(newv)) == 0;
        !          2744:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2745:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          2746:        regs.n = flgn != 0;
        !          2747:        put_word(dsta,newv);
        !          2748: }}}}}}}
        !          2749: void op_5560(UWORD opcode)
        !          2750: {
        !          2751:        ULONG srcreg = 2;
        !          2752:        ULONG dstreg = (opcode & 7) >> 0;
        !          2753: {{     ULONG src = srcreg;
        !          2754: {      regs.a[dstreg] -= 2;
        !          2755: {      CPTR dsta = regs.a[dstreg];
        !          2756:        WORD dst = get_word(dsta);
        !          2757: {      ULONG newv = dst - src;
        !          2758: {      bool flgs = ((WORD)(src)) < 0;
        !          2759:        bool flgo = ((WORD)(dst)) < 0;
        !          2760:        bool flgn = ((WORD)(newv)) < 0;
        !          2761:        regs.z = ((WORD)(newv)) == 0;
        !          2762:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2763:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          2764:        regs.n = flgn != 0;
        !          2765:        put_word(dsta,newv);
        !          2766: }}}}}}}
        !          2767: void op_5568(UWORD opcode)
        !          2768: {
        !          2769:        ULONG srcreg = 2;
        !          2770:        ULONG dstreg = (opcode & 7) >> 0;
        !          2771: {{     ULONG src = srcreg;
        !          2772: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          2773:        WORD dst = get_word(dsta);
        !          2774: {      ULONG newv = dst - src;
        !          2775: {      bool flgs = ((WORD)(src)) < 0;
        !          2776:        bool flgo = ((WORD)(dst)) < 0;
        !          2777:        bool flgn = ((WORD)(newv)) < 0;
        !          2778:        regs.z = ((WORD)(newv)) == 0;
        !          2779:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2780:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          2781:        regs.n = flgn != 0;
        !          2782:        put_word(dsta,newv);
        !          2783: }}}}}}
        !          2784: void op_5570(UWORD opcode)
        !          2785: {
        !          2786:        ULONG srcreg = 2;
        !          2787:        ULONG dstreg = (opcode & 7) >> 0;
        !          2788: {{     ULONG src = srcreg;
        !          2789: {      CPTR dsta = regs.a[dstreg];
        !          2790:        UWORD dstdp = nextiword();
        !          2791:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          2792: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          2793:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          2794:        dsta += dstdpr;
        !          2795: {      WORD dst = get_word(dsta);
        !          2796: {      ULONG newv = dst - src;
        !          2797: {      bool flgs = ((WORD)(src)) < 0;
        !          2798:        bool flgo = ((WORD)(dst)) < 0;
        !          2799:        bool flgn = ((WORD)(newv)) < 0;
        !          2800:        regs.z = ((WORD)(newv)) == 0;
        !          2801:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2802:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          2803:        regs.n = flgn != 0;
        !          2804:        put_word(dsta,newv);
        !          2805: }}}}}}}}
        !          2806: void op_5578(UWORD opcode)
        !          2807: {
        !          2808:        ULONG srcreg = 2;
        !          2809: {{     ULONG src = srcreg;
        !          2810: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          2811:        WORD dst = get_word(dsta);
        !          2812: {      ULONG newv = dst - src;
        !          2813: {      bool flgs = ((WORD)(src)) < 0;
        !          2814:        bool flgo = ((WORD)(dst)) < 0;
        !          2815:        bool flgn = ((WORD)(newv)) < 0;
        !          2816:        regs.z = ((WORD)(newv)) == 0;
        !          2817:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2818:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          2819:        regs.n = flgn != 0;
        !          2820:        put_word(dsta,newv);
        !          2821: }}}}}}
        !          2822: void op_5579(UWORD opcode)
        !          2823: {
        !          2824:        ULONG srcreg = 2;
        !          2825: {{     ULONG src = srcreg;
        !          2826: {      CPTR dsta = nextilong();
        !          2827:        WORD dst = get_word(dsta);
        !          2828: {      ULONG newv = dst - src;
        !          2829: {      bool flgs = ((WORD)(src)) < 0;
        !          2830:        bool flgo = ((WORD)(dst)) < 0;
        !          2831:        bool flgn = ((WORD)(newv)) < 0;
        !          2832:        regs.z = ((WORD)(newv)) == 0;
        !          2833:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2834:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          2835:        regs.n = flgn != 0;
        !          2836:        put_word(dsta,newv);
        !          2837: }}}}}}
        !          2838: void op_5580(UWORD opcode)
        !          2839: {
        !          2840:        ULONG srcreg = 2;
        !          2841:        ULONG dstreg = (opcode & 7) >> 0;
        !          2842: {{     ULONG src = srcreg;
        !          2843: {      LONG dst = regs.d[dstreg];
        !          2844: {      ULONG newv = dst - src;
        !          2845: {      bool flgs = ((LONG)(src)) < 0;
        !          2846:        bool flgo = ((LONG)(dst)) < 0;
        !          2847:        bool flgn = ((LONG)(newv)) < 0;
        !          2848:        regs.z = ((LONG)(newv)) == 0;
        !          2849:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2850:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          2851:        regs.n = flgn != 0;
        !          2852:        regs.d[dstreg] = (newv);
        !          2853: }}}}}}
        !          2854: void op_5588(UWORD opcode)
        !          2855: {
        !          2856:        ULONG srcreg = 2;
        !          2857:        ULONG dstreg = (opcode & 7) >> 0;
        !          2858: {{     ULONG src = srcreg;
        !          2859: {      LONG dst = regs.a[dstreg];
        !          2860: {      ULONG newv = dst - src;
        !          2861:        regs.a[dstreg] = (newv);
        !          2862: }}}}}
        !          2863: void op_5590(UWORD opcode)
        !          2864: {
        !          2865:        ULONG srcreg = 2;
        !          2866:        ULONG dstreg = (opcode & 7) >> 0;
        !          2867: {{     ULONG src = srcreg;
        !          2868: {      CPTR dsta = regs.a[dstreg];
        !          2869:        LONG dst = get_long(dsta);
        !          2870: {      ULONG newv = dst - src;
        !          2871: {      bool flgs = ((LONG)(src)) < 0;
        !          2872:        bool flgo = ((LONG)(dst)) < 0;
        !          2873:        bool flgn = ((LONG)(newv)) < 0;
        !          2874:        regs.z = ((LONG)(newv)) == 0;
        !          2875:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2876:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          2877:        regs.n = flgn != 0;
        !          2878:        put_long(dsta,newv);
        !          2879: }}}}}}
        !          2880: void op_5598(UWORD opcode)
        !          2881: {
        !          2882:        ULONG srcreg = 2;
        !          2883:        ULONG dstreg = (opcode & 7) >> 0;
        !          2884: {{     ULONG src = srcreg;
        !          2885: {      CPTR dsta = regs.a[dstreg];
        !          2886:        LONG dst = get_long(dsta);
        !          2887: {      regs.a[dstreg] += 4;
        !          2888: {      ULONG newv = dst - src;
        !          2889: {      bool flgs = ((LONG)(src)) < 0;
        !          2890:        bool flgo = ((LONG)(dst)) < 0;
        !          2891:        bool flgn = ((LONG)(newv)) < 0;
        !          2892:        regs.z = ((LONG)(newv)) == 0;
        !          2893:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2894:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          2895:        regs.n = flgn != 0;
        !          2896:        put_long(dsta,newv);
        !          2897: }}}}}}}
        !          2898: void op_55a0(UWORD opcode)
        !          2899: {
        !          2900:        ULONG srcreg = 2;
        !          2901:        ULONG dstreg = (opcode & 7) >> 0;
        !          2902: {{     ULONG src = srcreg;
        !          2903: {      regs.a[dstreg] -= 4;
        !          2904: {      CPTR dsta = regs.a[dstreg];
        !          2905:        LONG dst = get_long(dsta);
        !          2906: {      ULONG newv = dst - src;
        !          2907: {      bool flgs = ((LONG)(src)) < 0;
        !          2908:        bool flgo = ((LONG)(dst)) < 0;
        !          2909:        bool flgn = ((LONG)(newv)) < 0;
        !          2910:        regs.z = ((LONG)(newv)) == 0;
        !          2911:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2912:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          2913:        regs.n = flgn != 0;
        !          2914:        put_long(dsta,newv);
        !          2915: }}}}}}}
        !          2916: void op_55a8(UWORD opcode)
        !          2917: {
        !          2918:        ULONG srcreg = 2;
        !          2919:        ULONG dstreg = (opcode & 7) >> 0;
        !          2920: {{     ULONG src = srcreg;
        !          2921: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          2922:        LONG dst = get_long(dsta);
        !          2923: {      ULONG newv = dst - src;
        !          2924: {      bool flgs = ((LONG)(src)) < 0;
        !          2925:        bool flgo = ((LONG)(dst)) < 0;
        !          2926:        bool flgn = ((LONG)(newv)) < 0;
        !          2927:        regs.z = ((LONG)(newv)) == 0;
        !          2928:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2929:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          2930:        regs.n = flgn != 0;
        !          2931:        put_long(dsta,newv);
        !          2932: }}}}}}
        !          2933: void op_55b0(UWORD opcode)
        !          2934: {
        !          2935:        ULONG srcreg = 2;
        !          2936:        ULONG dstreg = (opcode & 7) >> 0;
        !          2937: {{     ULONG src = srcreg;
        !          2938: {      CPTR dsta = regs.a[dstreg];
        !          2939:        UWORD dstdp = nextiword();
        !          2940:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          2941: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          2942:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          2943:        dsta += dstdpr;
        !          2944: {      LONG dst = get_long(dsta);
        !          2945: {      ULONG newv = dst - src;
        !          2946: {      bool flgs = ((LONG)(src)) < 0;
        !          2947:        bool flgo = ((LONG)(dst)) < 0;
        !          2948:        bool flgn = ((LONG)(newv)) < 0;
        !          2949:        regs.z = ((LONG)(newv)) == 0;
        !          2950:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2951:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          2952:        regs.n = flgn != 0;
        !          2953:        put_long(dsta,newv);
        !          2954: }}}}}}}}
        !          2955: void op_55b8(UWORD opcode)
        !          2956: {
        !          2957:        ULONG srcreg = 2;
        !          2958: {{     ULONG src = srcreg;
        !          2959: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          2960:        LONG dst = get_long(dsta);
        !          2961: {      ULONG newv = dst - src;
        !          2962: {      bool flgs = ((LONG)(src)) < 0;
        !          2963:        bool flgo = ((LONG)(dst)) < 0;
        !          2964:        bool flgn = ((LONG)(newv)) < 0;
        !          2965:        regs.z = ((LONG)(newv)) == 0;
        !          2966:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2967:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          2968:        regs.n = flgn != 0;
        !          2969:        put_long(dsta,newv);
        !          2970: }}}}}}
        !          2971: void op_55b9(UWORD opcode)
        !          2972: {
        !          2973:        ULONG srcreg = 2;
        !          2974: {{     ULONG src = srcreg;
        !          2975: {      CPTR dsta = nextilong();
        !          2976:        LONG dst = get_long(dsta);
        !          2977: {      ULONG newv = dst - src;
        !          2978: {      bool flgs = ((LONG)(src)) < 0;
        !          2979:        bool flgo = ((LONG)(dst)) < 0;
        !          2980:        bool flgn = ((LONG)(newv)) < 0;
        !          2981:        regs.z = ((LONG)(newv)) == 0;
        !          2982:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          2983:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          2984:        regs.n = flgn != 0;
        !          2985:        put_long(dsta,newv);
        !          2986: }}}}}}
        !          2987: void op_55c0(UWORD opcode)
        !          2988: {
        !          2989:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2990: {{{    int val = cctrue(5) ? 0xff : 0;
        !          2991:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          2992: }}}}
        !          2993: void op_55c8(UWORD opcode)
        !          2994: {
        !          2995:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2996: {{     WORD src = regs.d[srcreg];
        !          2997: {      WORD offs = nextiword();
        !          2998:        if (!cctrue(5)) {
        !          2999:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          3000:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          3001:        }
        !          3002: }}}}
        !          3003: void op_55d0(UWORD opcode)
        !          3004: {
        !          3005:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3006: {{     CPTR srca = regs.a[srcreg];
        !          3007: {      int val = cctrue(5) ? 0xff : 0;
        !          3008:        put_byte(srca,val);
        !          3009: }}}}
        !          3010: void op_55d8(UWORD opcode)
        !          3011: {
        !          3012:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3013: {{     CPTR srca = regs.a[srcreg];
        !          3014: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          3015: {      int val = cctrue(5) ? 0xff : 0;
        !          3016:        put_byte(srca,val);
        !          3017: }}}}}
        !          3018: void op_55e0(UWORD opcode)
        !          3019: {
        !          3020:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3021: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          3022: {      CPTR srca = regs.a[srcreg];
        !          3023: {      int val = cctrue(5) ? 0xff : 0;
        !          3024:        put_byte(srca,val);
        !          3025: }}}}}
        !          3026: void op_55e8(UWORD opcode)
        !          3027: {
        !          3028:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3029: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          3030: {      int val = cctrue(5) ? 0xff : 0;
        !          3031:        put_byte(srca,val);
        !          3032: }}}}
        !          3033: void op_55f0(UWORD opcode)
        !          3034: {
        !          3035:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3036: {{     CPTR srca = regs.a[srcreg];
        !          3037:        UWORD srcdp = nextiword();
        !          3038:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          3039: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          3040:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          3041:        srca += srcdpr;
        !          3042: {      int val = cctrue(5) ? 0xff : 0;
        !          3043:        put_byte(srca,val);
        !          3044: }}}}}
        !          3045: void op_55f8(UWORD opcode)
        !          3046: {
        !          3047: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          3048: {      int val = cctrue(5) ? 0xff : 0;
        !          3049:        put_byte(srca,val);
        !          3050: }}}}
        !          3051: void op_55f9(UWORD opcode)
        !          3052: {
        !          3053: {{     CPTR srca = nextilong();
        !          3054: {      int val = cctrue(5) ? 0xff : 0;
        !          3055:        put_byte(srca,val);
        !          3056: }}}}
        !          3057: void op_5600(UWORD opcode)
        !          3058: {
        !          3059:        ULONG srcreg = 3;
        !          3060:        ULONG dstreg = (opcode & 7) >> 0;
        !          3061: {{     ULONG src = srcreg;
        !          3062: {      BYTE dst = regs.d[dstreg];
        !          3063: {      ULONG newv = dst + src;
        !          3064: {      bool flgs = ((BYTE)(src)) < 0;
        !          3065:        bool flgo = ((BYTE)(dst)) < 0;
        !          3066:        bool flgn = ((BYTE)(newv)) < 0;
        !          3067:        regs.z = ((BYTE)(newv)) == 0;
        !          3068:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3069:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          3070:        regs.n = flgn != 0;
        !          3071:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          3072: }}}}}}
        !          3073: void op_5610(UWORD opcode)
        !          3074: {
        !          3075:        ULONG srcreg = 3;
        !          3076:        ULONG dstreg = (opcode & 7) >> 0;
        !          3077: {{     ULONG src = srcreg;
        !          3078: {      CPTR dsta = regs.a[dstreg];
        !          3079:        BYTE dst = get_byte(dsta);
        !          3080: {      ULONG newv = dst + src;
        !          3081: {      bool flgs = ((BYTE)(src)) < 0;
        !          3082:        bool flgo = ((BYTE)(dst)) < 0;
        !          3083:        bool flgn = ((BYTE)(newv)) < 0;
        !          3084:        regs.z = ((BYTE)(newv)) == 0;
        !          3085:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3086:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          3087:        regs.n = flgn != 0;
        !          3088:        put_byte(dsta,newv);
        !          3089: }}}}}}
        !          3090: void op_5618(UWORD opcode)
        !          3091: {
        !          3092:        ULONG srcreg = 3;
        !          3093:        ULONG dstreg = (opcode & 7) >> 0;
        !          3094: {{     ULONG src = srcreg;
        !          3095: {      CPTR dsta = regs.a[dstreg];
        !          3096:        BYTE dst = get_byte(dsta);
        !          3097: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          3098: {      ULONG newv = dst + src;
        !          3099: {      bool flgs = ((BYTE)(src)) < 0;
        !          3100:        bool flgo = ((BYTE)(dst)) < 0;
        !          3101:        bool flgn = ((BYTE)(newv)) < 0;
        !          3102:        regs.z = ((BYTE)(newv)) == 0;
        !          3103:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3104:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          3105:        regs.n = flgn != 0;
        !          3106:        put_byte(dsta,newv);
        !          3107: }}}}}}}
        !          3108: void op_5620(UWORD opcode)
        !          3109: {
        !          3110:        ULONG srcreg = 3;
        !          3111:        ULONG dstreg = (opcode & 7) >> 0;
        !          3112: {{     ULONG src = srcreg;
        !          3113: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          3114: {      CPTR dsta = regs.a[dstreg];
        !          3115:        BYTE dst = get_byte(dsta);
        !          3116: {      ULONG newv = dst + src;
        !          3117: {      bool flgs = ((BYTE)(src)) < 0;
        !          3118:        bool flgo = ((BYTE)(dst)) < 0;
        !          3119:        bool flgn = ((BYTE)(newv)) < 0;
        !          3120:        regs.z = ((BYTE)(newv)) == 0;
        !          3121:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3122:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          3123:        regs.n = flgn != 0;
        !          3124:        put_byte(dsta,newv);
        !          3125: }}}}}}}
        !          3126: void op_5628(UWORD opcode)
        !          3127: {
        !          3128:        ULONG srcreg = 3;
        !          3129:        ULONG dstreg = (opcode & 7) >> 0;
        !          3130: {{     ULONG src = srcreg;
        !          3131: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          3132:        BYTE dst = get_byte(dsta);
        !          3133: {      ULONG newv = dst + src;
        !          3134: {      bool flgs = ((BYTE)(src)) < 0;
        !          3135:        bool flgo = ((BYTE)(dst)) < 0;
        !          3136:        bool flgn = ((BYTE)(newv)) < 0;
        !          3137:        regs.z = ((BYTE)(newv)) == 0;
        !          3138:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3139:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          3140:        regs.n = flgn != 0;
        !          3141:        put_byte(dsta,newv);
        !          3142: }}}}}}
        !          3143: void op_5630(UWORD opcode)
        !          3144: {
        !          3145:        ULONG srcreg = 3;
        !          3146:        ULONG dstreg = (opcode & 7) >> 0;
        !          3147: {{     ULONG src = srcreg;
        !          3148: {      CPTR dsta = regs.a[dstreg];
        !          3149:        UWORD dstdp = nextiword();
        !          3150:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          3151: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          3152:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          3153:        dsta += dstdpr;
        !          3154: {      BYTE dst = get_byte(dsta);
        !          3155: {      ULONG newv = dst + src;
        !          3156: {      bool flgs = ((BYTE)(src)) < 0;
        !          3157:        bool flgo = ((BYTE)(dst)) < 0;
        !          3158:        bool flgn = ((BYTE)(newv)) < 0;
        !          3159:        regs.z = ((BYTE)(newv)) == 0;
        !          3160:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3161:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          3162:        regs.n = flgn != 0;
        !          3163:        put_byte(dsta,newv);
        !          3164: }}}}}}}}
        !          3165: void op_5638(UWORD opcode)
        !          3166: {
        !          3167:        ULONG srcreg = 3;
        !          3168: {{     ULONG src = srcreg;
        !          3169: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          3170:        BYTE dst = get_byte(dsta);
        !          3171: {      ULONG newv = dst + src;
        !          3172: {      bool flgs = ((BYTE)(src)) < 0;
        !          3173:        bool flgo = ((BYTE)(dst)) < 0;
        !          3174:        bool flgn = ((BYTE)(newv)) < 0;
        !          3175:        regs.z = ((BYTE)(newv)) == 0;
        !          3176:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3177:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          3178:        regs.n = flgn != 0;
        !          3179:        put_byte(dsta,newv);
        !          3180: }}}}}}
        !          3181: void op_5639(UWORD opcode)
        !          3182: {
        !          3183:        ULONG srcreg = 3;
        !          3184: {{     ULONG src = srcreg;
        !          3185: {      CPTR dsta = nextilong();
        !          3186:        BYTE dst = get_byte(dsta);
        !          3187: {      ULONG newv = dst + src;
        !          3188: {      bool flgs = ((BYTE)(src)) < 0;
        !          3189:        bool flgo = ((BYTE)(dst)) < 0;
        !          3190:        bool flgn = ((BYTE)(newv)) < 0;
        !          3191:        regs.z = ((BYTE)(newv)) == 0;
        !          3192:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3193:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          3194:        regs.n = flgn != 0;
        !          3195:        put_byte(dsta,newv);
        !          3196: }}}}}}
        !          3197: void op_5640(UWORD opcode)
        !          3198: {
        !          3199:        ULONG srcreg = 3;
        !          3200:        ULONG dstreg = (opcode & 7) >> 0;
        !          3201: {{     ULONG src = srcreg;
        !          3202: {      WORD dst = regs.d[dstreg];
        !          3203: {      ULONG newv = dst + src;
        !          3204: {      bool flgs = ((WORD)(src)) < 0;
        !          3205:        bool flgo = ((WORD)(dst)) < 0;
        !          3206:        bool flgn = ((WORD)(newv)) < 0;
        !          3207:        regs.z = ((WORD)(newv)) == 0;
        !          3208:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3209:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          3210:        regs.n = flgn != 0;
        !          3211:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          3212: }}}}}}
        !          3213: void op_5648(UWORD opcode)
        !          3214: {
        !          3215:        ULONG srcreg = 3;
        !          3216:        ULONG dstreg = (opcode & 7) >> 0;
        !          3217: {{     ULONG src = srcreg;
        !          3218: {      LONG dst = regs.a[dstreg];
        !          3219: {      ULONG newv = dst + src;
        !          3220:        regs.a[dstreg] = (newv);
        !          3221: }}}}}
        !          3222: void op_5650(UWORD opcode)
        !          3223: {
        !          3224:        ULONG srcreg = 3;
        !          3225:        ULONG dstreg = (opcode & 7) >> 0;
        !          3226: {{     ULONG src = srcreg;
        !          3227: {      CPTR dsta = regs.a[dstreg];
        !          3228:        WORD dst = get_word(dsta);
        !          3229: {      ULONG newv = dst + src;
        !          3230: {      bool flgs = ((WORD)(src)) < 0;
        !          3231:        bool flgo = ((WORD)(dst)) < 0;
        !          3232:        bool flgn = ((WORD)(newv)) < 0;
        !          3233:        regs.z = ((WORD)(newv)) == 0;
        !          3234:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3235:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          3236:        regs.n = flgn != 0;
        !          3237:        put_word(dsta,newv);
        !          3238: }}}}}}
        !          3239: void op_5658(UWORD opcode)
        !          3240: {
        !          3241:        ULONG srcreg = 3;
        !          3242:        ULONG dstreg = (opcode & 7) >> 0;
        !          3243: {{     ULONG src = srcreg;
        !          3244: {      CPTR dsta = regs.a[dstreg];
        !          3245:        WORD dst = get_word(dsta);
        !          3246: {      regs.a[dstreg] += 2;
        !          3247: {      ULONG newv = dst + src;
        !          3248: {      bool flgs = ((WORD)(src)) < 0;
        !          3249:        bool flgo = ((WORD)(dst)) < 0;
        !          3250:        bool flgn = ((WORD)(newv)) < 0;
        !          3251:        regs.z = ((WORD)(newv)) == 0;
        !          3252:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3253:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          3254:        regs.n = flgn != 0;
        !          3255:        put_word(dsta,newv);
        !          3256: }}}}}}}
        !          3257: void op_5660(UWORD opcode)
        !          3258: {
        !          3259:        ULONG srcreg = 3;
        !          3260:        ULONG dstreg = (opcode & 7) >> 0;
        !          3261: {{     ULONG src = srcreg;
        !          3262: {      regs.a[dstreg] -= 2;
        !          3263: {      CPTR dsta = regs.a[dstreg];
        !          3264:        WORD dst = get_word(dsta);
        !          3265: {      ULONG newv = dst + src;
        !          3266: {      bool flgs = ((WORD)(src)) < 0;
        !          3267:        bool flgo = ((WORD)(dst)) < 0;
        !          3268:        bool flgn = ((WORD)(newv)) < 0;
        !          3269:        regs.z = ((WORD)(newv)) == 0;
        !          3270:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3271:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          3272:        regs.n = flgn != 0;
        !          3273:        put_word(dsta,newv);
        !          3274: }}}}}}}
        !          3275: void op_5668(UWORD opcode)
        !          3276: {
        !          3277:        ULONG srcreg = 3;
        !          3278:        ULONG dstreg = (opcode & 7) >> 0;
        !          3279: {{     ULONG src = srcreg;
        !          3280: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          3281:        WORD dst = get_word(dsta);
        !          3282: {      ULONG newv = dst + src;
        !          3283: {      bool flgs = ((WORD)(src)) < 0;
        !          3284:        bool flgo = ((WORD)(dst)) < 0;
        !          3285:        bool flgn = ((WORD)(newv)) < 0;
        !          3286:        regs.z = ((WORD)(newv)) == 0;
        !          3287:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3288:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          3289:        regs.n = flgn != 0;
        !          3290:        put_word(dsta,newv);
        !          3291: }}}}}}
        !          3292: void op_5670(UWORD opcode)
        !          3293: {
        !          3294:        ULONG srcreg = 3;
        !          3295:        ULONG dstreg = (opcode & 7) >> 0;
        !          3296: {{     ULONG src = srcreg;
        !          3297: {      CPTR dsta = regs.a[dstreg];
        !          3298:        UWORD dstdp = nextiword();
        !          3299:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          3300: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          3301:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          3302:        dsta += dstdpr;
        !          3303: {      WORD dst = get_word(dsta);
        !          3304: {      ULONG newv = dst + src;
        !          3305: {      bool flgs = ((WORD)(src)) < 0;
        !          3306:        bool flgo = ((WORD)(dst)) < 0;
        !          3307:        bool flgn = ((WORD)(newv)) < 0;
        !          3308:        regs.z = ((WORD)(newv)) == 0;
        !          3309:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3310:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          3311:        regs.n = flgn != 0;
        !          3312:        put_word(dsta,newv);
        !          3313: }}}}}}}}
        !          3314: void op_5678(UWORD opcode)
        !          3315: {
        !          3316:        ULONG srcreg = 3;
        !          3317: {{     ULONG src = srcreg;
        !          3318: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          3319:        WORD dst = get_word(dsta);
        !          3320: {      ULONG newv = dst + src;
        !          3321: {      bool flgs = ((WORD)(src)) < 0;
        !          3322:        bool flgo = ((WORD)(dst)) < 0;
        !          3323:        bool flgn = ((WORD)(newv)) < 0;
        !          3324:        regs.z = ((WORD)(newv)) == 0;
        !          3325:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3326:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          3327:        regs.n = flgn != 0;
        !          3328:        put_word(dsta,newv);
        !          3329: }}}}}}
        !          3330: void op_5679(UWORD opcode)
        !          3331: {
        !          3332:        ULONG srcreg = 3;
        !          3333: {{     ULONG src = srcreg;
        !          3334: {      CPTR dsta = nextilong();
        !          3335:        WORD dst = get_word(dsta);
        !          3336: {      ULONG newv = dst + src;
        !          3337: {      bool flgs = ((WORD)(src)) < 0;
        !          3338:        bool flgo = ((WORD)(dst)) < 0;
        !          3339:        bool flgn = ((WORD)(newv)) < 0;
        !          3340:        regs.z = ((WORD)(newv)) == 0;
        !          3341:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3342:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          3343:        regs.n = flgn != 0;
        !          3344:        put_word(dsta,newv);
        !          3345: }}}}}}
        !          3346: void op_5680(UWORD opcode)
        !          3347: {
        !          3348:        ULONG srcreg = 3;
        !          3349:        ULONG dstreg = (opcode & 7) >> 0;
        !          3350: {{     ULONG src = srcreg;
        !          3351: {      LONG dst = regs.d[dstreg];
        !          3352: {      ULONG newv = dst + src;
        !          3353: {      bool flgs = ((LONG)(src)) < 0;
        !          3354:        bool flgo = ((LONG)(dst)) < 0;
        !          3355:        bool flgn = ((LONG)(newv)) < 0;
        !          3356:        regs.z = ((LONG)(newv)) == 0;
        !          3357:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3358:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          3359:        regs.n = flgn != 0;
        !          3360:        regs.d[dstreg] = (newv);
        !          3361: }}}}}}
        !          3362: void op_5688(UWORD opcode)
        !          3363: {
        !          3364:        ULONG srcreg = 3;
        !          3365:        ULONG dstreg = (opcode & 7) >> 0;
        !          3366: {{     ULONG src = srcreg;
        !          3367: {      LONG dst = regs.a[dstreg];
        !          3368: {      ULONG newv = dst + src;
        !          3369:        regs.a[dstreg] = (newv);
        !          3370: }}}}}
        !          3371: void op_5690(UWORD opcode)
        !          3372: {
        !          3373:        ULONG srcreg = 3;
        !          3374:        ULONG dstreg = (opcode & 7) >> 0;
        !          3375: {{     ULONG src = srcreg;
        !          3376: {      CPTR dsta = regs.a[dstreg];
        !          3377:        LONG dst = get_long(dsta);
        !          3378: {      ULONG newv = dst + src;
        !          3379: {      bool flgs = ((LONG)(src)) < 0;
        !          3380:        bool flgo = ((LONG)(dst)) < 0;
        !          3381:        bool flgn = ((LONG)(newv)) < 0;
        !          3382:        regs.z = ((LONG)(newv)) == 0;
        !          3383:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3384:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          3385:        regs.n = flgn != 0;
        !          3386:        put_long(dsta,newv);
        !          3387: }}}}}}
        !          3388: void op_5698(UWORD opcode)
        !          3389: {
        !          3390:        ULONG srcreg = 3;
        !          3391:        ULONG dstreg = (opcode & 7) >> 0;
        !          3392: {{     ULONG src = srcreg;
        !          3393: {      CPTR dsta = regs.a[dstreg];
        !          3394:        LONG dst = get_long(dsta);
        !          3395: {      regs.a[dstreg] += 4;
        !          3396: {      ULONG newv = dst + src;
        !          3397: {      bool flgs = ((LONG)(src)) < 0;
        !          3398:        bool flgo = ((LONG)(dst)) < 0;
        !          3399:        bool flgn = ((LONG)(newv)) < 0;
        !          3400:        regs.z = ((LONG)(newv)) == 0;
        !          3401:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3402:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          3403:        regs.n = flgn != 0;
        !          3404:        put_long(dsta,newv);
        !          3405: }}}}}}}
        !          3406: void op_56a0(UWORD opcode)
        !          3407: {
        !          3408:        ULONG srcreg = 3;
        !          3409:        ULONG dstreg = (opcode & 7) >> 0;
        !          3410: {{     ULONG src = srcreg;
        !          3411: {      regs.a[dstreg] -= 4;
        !          3412: {      CPTR dsta = regs.a[dstreg];
        !          3413:        LONG dst = get_long(dsta);
        !          3414: {      ULONG newv = dst + src;
        !          3415: {      bool flgs = ((LONG)(src)) < 0;
        !          3416:        bool flgo = ((LONG)(dst)) < 0;
        !          3417:        bool flgn = ((LONG)(newv)) < 0;
        !          3418:        regs.z = ((LONG)(newv)) == 0;
        !          3419:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3420:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          3421:        regs.n = flgn != 0;
        !          3422:        put_long(dsta,newv);
        !          3423: }}}}}}}
        !          3424: void op_56a8(UWORD opcode)
        !          3425: {
        !          3426:        ULONG srcreg = 3;
        !          3427:        ULONG dstreg = (opcode & 7) >> 0;
        !          3428: {{     ULONG src = srcreg;
        !          3429: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          3430:        LONG dst = get_long(dsta);
        !          3431: {      ULONG newv = dst + src;
        !          3432: {      bool flgs = ((LONG)(src)) < 0;
        !          3433:        bool flgo = ((LONG)(dst)) < 0;
        !          3434:        bool flgn = ((LONG)(newv)) < 0;
        !          3435:        regs.z = ((LONG)(newv)) == 0;
        !          3436:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3437:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          3438:        regs.n = flgn != 0;
        !          3439:        put_long(dsta,newv);
        !          3440: }}}}}}
        !          3441: void op_56b0(UWORD opcode)
        !          3442: {
        !          3443:        ULONG srcreg = 3;
        !          3444:        ULONG dstreg = (opcode & 7) >> 0;
        !          3445: {{     ULONG src = srcreg;
        !          3446: {      CPTR dsta = regs.a[dstreg];
        !          3447:        UWORD dstdp = nextiword();
        !          3448:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          3449: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          3450:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          3451:        dsta += dstdpr;
        !          3452: {      LONG dst = get_long(dsta);
        !          3453: {      ULONG newv = dst + src;
        !          3454: {      bool flgs = ((LONG)(src)) < 0;
        !          3455:        bool flgo = ((LONG)(dst)) < 0;
        !          3456:        bool flgn = ((LONG)(newv)) < 0;
        !          3457:        regs.z = ((LONG)(newv)) == 0;
        !          3458:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3459:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          3460:        regs.n = flgn != 0;
        !          3461:        put_long(dsta,newv);
        !          3462: }}}}}}}}
        !          3463: void op_56b8(UWORD opcode)
        !          3464: {
        !          3465:        ULONG srcreg = 3;
        !          3466: {{     ULONG src = srcreg;
        !          3467: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          3468:        LONG dst = get_long(dsta);
        !          3469: {      ULONG newv = dst + src;
        !          3470: {      bool flgs = ((LONG)(src)) < 0;
        !          3471:        bool flgo = ((LONG)(dst)) < 0;
        !          3472:        bool flgn = ((LONG)(newv)) < 0;
        !          3473:        regs.z = ((LONG)(newv)) == 0;
        !          3474:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3475:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          3476:        regs.n = flgn != 0;
        !          3477:        put_long(dsta,newv);
        !          3478: }}}}}}
        !          3479: void op_56b9(UWORD opcode)
        !          3480: {
        !          3481:        ULONG srcreg = 3;
        !          3482: {{     ULONG src = srcreg;
        !          3483: {      CPTR dsta = nextilong();
        !          3484:        LONG dst = get_long(dsta);
        !          3485: {      ULONG newv = dst + src;
        !          3486: {      bool flgs = ((LONG)(src)) < 0;
        !          3487:        bool flgo = ((LONG)(dst)) < 0;
        !          3488:        bool flgn = ((LONG)(newv)) < 0;
        !          3489:        regs.z = ((LONG)(newv)) == 0;
        !          3490:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          3491:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          3492:        regs.n = flgn != 0;
        !          3493:        put_long(dsta,newv);
        !          3494: }}}}}}
        !          3495: void op_56c0(UWORD opcode)
        !          3496: {
        !          3497:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3498: {{{    int val = cctrue(6) ? 0xff : 0;
        !          3499:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          3500: }}}}
        !          3501: void op_56c8(UWORD opcode)
        !          3502: {
        !          3503:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3504: {{     WORD src = regs.d[srcreg];
        !          3505: {      WORD offs = nextiword();
        !          3506:        if (!cctrue(6)) {
        !          3507:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          3508:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          3509:        }
        !          3510: }}}}
        !          3511: void op_56d0(UWORD opcode)
        !          3512: {
        !          3513:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3514: {{     CPTR srca = regs.a[srcreg];
        !          3515: {      int val = cctrue(6) ? 0xff : 0;
        !          3516:        put_byte(srca,val);
        !          3517: }}}}
        !          3518: void op_56d8(UWORD opcode)
        !          3519: {
        !          3520:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3521: {{     CPTR srca = regs.a[srcreg];
        !          3522: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          3523: {      int val = cctrue(6) ? 0xff : 0;
        !          3524:        put_byte(srca,val);
        !          3525: }}}}}
        !          3526: void op_56e0(UWORD opcode)
        !          3527: {
        !          3528:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3529: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          3530: {      CPTR srca = regs.a[srcreg];
        !          3531: {      int val = cctrue(6) ? 0xff : 0;
        !          3532:        put_byte(srca,val);
        !          3533: }}}}}
        !          3534: void op_56e8(UWORD opcode)
        !          3535: {
        !          3536:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3537: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          3538: {      int val = cctrue(6) ? 0xff : 0;
        !          3539:        put_byte(srca,val);
        !          3540: }}}}
        !          3541: void op_56f0(UWORD opcode)
        !          3542: {
        !          3543:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3544: {{     CPTR srca = regs.a[srcreg];
        !          3545:        UWORD srcdp = nextiword();
        !          3546:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          3547: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          3548:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          3549:        srca += srcdpr;
        !          3550: {      int val = cctrue(6) ? 0xff : 0;
        !          3551:        put_byte(srca,val);
        !          3552: }}}}}
        !          3553: void op_56f8(UWORD opcode)
        !          3554: {
        !          3555: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          3556: {      int val = cctrue(6) ? 0xff : 0;
        !          3557:        put_byte(srca,val);
        !          3558: }}}}
        !          3559: void op_56f9(UWORD opcode)
        !          3560: {
        !          3561: {{     CPTR srca = nextilong();
        !          3562: {      int val = cctrue(6) ? 0xff : 0;
        !          3563:        put_byte(srca,val);
        !          3564: }}}}
        !          3565: void op_5700(UWORD opcode)
        !          3566: {
        !          3567:        ULONG srcreg = 3;
        !          3568:        ULONG dstreg = (opcode & 7) >> 0;
        !          3569: {{     ULONG src = srcreg;
        !          3570: {      BYTE dst = regs.d[dstreg];
        !          3571: {      ULONG newv = dst - src;
        !          3572: {      bool flgs = ((BYTE)(src)) < 0;
        !          3573:        bool flgo = ((BYTE)(dst)) < 0;
        !          3574:        bool flgn = ((BYTE)(newv)) < 0;
        !          3575:        regs.z = ((BYTE)(newv)) == 0;
        !          3576:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3577:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          3578:        regs.n = flgn != 0;
        !          3579:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          3580: }}}}}}
        !          3581: void op_5710(UWORD opcode)
        !          3582: {
        !          3583:        ULONG srcreg = 3;
        !          3584:        ULONG dstreg = (opcode & 7) >> 0;
        !          3585: {{     ULONG src = srcreg;
        !          3586: {      CPTR dsta = regs.a[dstreg];
        !          3587:        BYTE dst = get_byte(dsta);
        !          3588: {      ULONG newv = dst - src;
        !          3589: {      bool flgs = ((BYTE)(src)) < 0;
        !          3590:        bool flgo = ((BYTE)(dst)) < 0;
        !          3591:        bool flgn = ((BYTE)(newv)) < 0;
        !          3592:        regs.z = ((BYTE)(newv)) == 0;
        !          3593:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3594:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          3595:        regs.n = flgn != 0;
        !          3596:        put_byte(dsta,newv);
        !          3597: }}}}}}
        !          3598: void op_5718(UWORD opcode)
        !          3599: {
        !          3600:        ULONG srcreg = 3;
        !          3601:        ULONG dstreg = (opcode & 7) >> 0;
        !          3602: {{     ULONG src = srcreg;
        !          3603: {      CPTR dsta = regs.a[dstreg];
        !          3604:        BYTE dst = get_byte(dsta);
        !          3605: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          3606: {      ULONG newv = dst - src;
        !          3607: {      bool flgs = ((BYTE)(src)) < 0;
        !          3608:        bool flgo = ((BYTE)(dst)) < 0;
        !          3609:        bool flgn = ((BYTE)(newv)) < 0;
        !          3610:        regs.z = ((BYTE)(newv)) == 0;
        !          3611:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3612:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          3613:        regs.n = flgn != 0;
        !          3614:        put_byte(dsta,newv);
        !          3615: }}}}}}}
        !          3616: void op_5720(UWORD opcode)
        !          3617: {
        !          3618:        ULONG srcreg = 3;
        !          3619:        ULONG dstreg = (opcode & 7) >> 0;
        !          3620: {{     ULONG src = srcreg;
        !          3621: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          3622: {      CPTR dsta = regs.a[dstreg];
        !          3623:        BYTE dst = get_byte(dsta);
        !          3624: {      ULONG newv = dst - src;
        !          3625: {      bool flgs = ((BYTE)(src)) < 0;
        !          3626:        bool flgo = ((BYTE)(dst)) < 0;
        !          3627:        bool flgn = ((BYTE)(newv)) < 0;
        !          3628:        regs.z = ((BYTE)(newv)) == 0;
        !          3629:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3630:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          3631:        regs.n = flgn != 0;
        !          3632:        put_byte(dsta,newv);
        !          3633: }}}}}}}
        !          3634: void op_5728(UWORD opcode)
        !          3635: {
        !          3636:        ULONG srcreg = 3;
        !          3637:        ULONG dstreg = (opcode & 7) >> 0;
        !          3638: {{     ULONG src = srcreg;
        !          3639: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          3640:        BYTE dst = get_byte(dsta);
        !          3641: {      ULONG newv = dst - src;
        !          3642: {      bool flgs = ((BYTE)(src)) < 0;
        !          3643:        bool flgo = ((BYTE)(dst)) < 0;
        !          3644:        bool flgn = ((BYTE)(newv)) < 0;
        !          3645:        regs.z = ((BYTE)(newv)) == 0;
        !          3646:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3647:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          3648:        regs.n = flgn != 0;
        !          3649:        put_byte(dsta,newv);
        !          3650: }}}}}}
        !          3651: void op_5730(UWORD opcode)
        !          3652: {
        !          3653:        ULONG srcreg = 3;
        !          3654:        ULONG dstreg = (opcode & 7) >> 0;
        !          3655: {{     ULONG src = srcreg;
        !          3656: {      CPTR dsta = regs.a[dstreg];
        !          3657:        UWORD dstdp = nextiword();
        !          3658:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          3659: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          3660:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          3661:        dsta += dstdpr;
        !          3662: {      BYTE dst = get_byte(dsta);
        !          3663: {      ULONG newv = dst - src;
        !          3664: {      bool flgs = ((BYTE)(src)) < 0;
        !          3665:        bool flgo = ((BYTE)(dst)) < 0;
        !          3666:        bool flgn = ((BYTE)(newv)) < 0;
        !          3667:        regs.z = ((BYTE)(newv)) == 0;
        !          3668:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3669:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          3670:        regs.n = flgn != 0;
        !          3671:        put_byte(dsta,newv);
        !          3672: }}}}}}}}
        !          3673: void op_5738(UWORD opcode)
        !          3674: {
        !          3675:        ULONG srcreg = 3;
        !          3676: {{     ULONG src = srcreg;
        !          3677: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          3678:        BYTE dst = get_byte(dsta);
        !          3679: {      ULONG newv = dst - src;
        !          3680: {      bool flgs = ((BYTE)(src)) < 0;
        !          3681:        bool flgo = ((BYTE)(dst)) < 0;
        !          3682:        bool flgn = ((BYTE)(newv)) < 0;
        !          3683:        regs.z = ((BYTE)(newv)) == 0;
        !          3684:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3685:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          3686:        regs.n = flgn != 0;
        !          3687:        put_byte(dsta,newv);
        !          3688: }}}}}}
        !          3689: void op_5739(UWORD opcode)
        !          3690: {
        !          3691:        ULONG srcreg = 3;
        !          3692: {{     ULONG src = srcreg;
        !          3693: {      CPTR dsta = nextilong();
        !          3694:        BYTE dst = get_byte(dsta);
        !          3695: {      ULONG newv = dst - src;
        !          3696: {      bool flgs = ((BYTE)(src)) < 0;
        !          3697:        bool flgo = ((BYTE)(dst)) < 0;
        !          3698:        bool flgn = ((BYTE)(newv)) < 0;
        !          3699:        regs.z = ((BYTE)(newv)) == 0;
        !          3700:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3701:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          3702:        regs.n = flgn != 0;
        !          3703:        put_byte(dsta,newv);
        !          3704: }}}}}}
        !          3705: void op_5740(UWORD opcode)
        !          3706: {
        !          3707:        ULONG srcreg = 3;
        !          3708:        ULONG dstreg = (opcode & 7) >> 0;
        !          3709: {{     ULONG src = srcreg;
        !          3710: {      WORD dst = regs.d[dstreg];
        !          3711: {      ULONG newv = dst - src;
        !          3712: {      bool flgs = ((WORD)(src)) < 0;
        !          3713:        bool flgo = ((WORD)(dst)) < 0;
        !          3714:        bool flgn = ((WORD)(newv)) < 0;
        !          3715:        regs.z = ((WORD)(newv)) == 0;
        !          3716:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3717:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          3718:        regs.n = flgn != 0;
        !          3719:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          3720: }}}}}}
        !          3721: void op_5748(UWORD opcode)
        !          3722: {
        !          3723:        ULONG srcreg = 3;
        !          3724:        ULONG dstreg = (opcode & 7) >> 0;
        !          3725: {{     ULONG src = srcreg;
        !          3726: {      LONG dst = regs.a[dstreg];
        !          3727: {      ULONG newv = dst - src;
        !          3728:        regs.a[dstreg] = (newv);
        !          3729: }}}}}
        !          3730: void op_5750(UWORD opcode)
        !          3731: {
        !          3732:        ULONG srcreg = 3;
        !          3733:        ULONG dstreg = (opcode & 7) >> 0;
        !          3734: {{     ULONG src = srcreg;
        !          3735: {      CPTR dsta = regs.a[dstreg];
        !          3736:        WORD dst = get_word(dsta);
        !          3737: {      ULONG newv = dst - src;
        !          3738: {      bool flgs = ((WORD)(src)) < 0;
        !          3739:        bool flgo = ((WORD)(dst)) < 0;
        !          3740:        bool flgn = ((WORD)(newv)) < 0;
        !          3741:        regs.z = ((WORD)(newv)) == 0;
        !          3742:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3743:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          3744:        regs.n = flgn != 0;
        !          3745:        put_word(dsta,newv);
        !          3746: }}}}}}
        !          3747: void op_5758(UWORD opcode)
        !          3748: {
        !          3749:        ULONG srcreg = 3;
        !          3750:        ULONG dstreg = (opcode & 7) >> 0;
        !          3751: {{     ULONG src = srcreg;
        !          3752: {      CPTR dsta = regs.a[dstreg];
        !          3753:        WORD dst = get_word(dsta);
        !          3754: {      regs.a[dstreg] += 2;
        !          3755: {      ULONG newv = dst - src;
        !          3756: {      bool flgs = ((WORD)(src)) < 0;
        !          3757:        bool flgo = ((WORD)(dst)) < 0;
        !          3758:        bool flgn = ((WORD)(newv)) < 0;
        !          3759:        regs.z = ((WORD)(newv)) == 0;
        !          3760:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3761:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          3762:        regs.n = flgn != 0;
        !          3763:        put_word(dsta,newv);
        !          3764: }}}}}}}
        !          3765: void op_5760(UWORD opcode)
        !          3766: {
        !          3767:        ULONG srcreg = 3;
        !          3768:        ULONG dstreg = (opcode & 7) >> 0;
        !          3769: {{     ULONG src = srcreg;
        !          3770: {      regs.a[dstreg] -= 2;
        !          3771: {      CPTR dsta = regs.a[dstreg];
        !          3772:        WORD dst = get_word(dsta);
        !          3773: {      ULONG newv = dst - src;
        !          3774: {      bool flgs = ((WORD)(src)) < 0;
        !          3775:        bool flgo = ((WORD)(dst)) < 0;
        !          3776:        bool flgn = ((WORD)(newv)) < 0;
        !          3777:        regs.z = ((WORD)(newv)) == 0;
        !          3778:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3779:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          3780:        regs.n = flgn != 0;
        !          3781:        put_word(dsta,newv);
        !          3782: }}}}}}}
        !          3783: void op_5768(UWORD opcode)
        !          3784: {
        !          3785:        ULONG srcreg = 3;
        !          3786:        ULONG dstreg = (opcode & 7) >> 0;
        !          3787: {{     ULONG src = srcreg;
        !          3788: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          3789:        WORD dst = get_word(dsta);
        !          3790: {      ULONG newv = dst - src;
        !          3791: {      bool flgs = ((WORD)(src)) < 0;
        !          3792:        bool flgo = ((WORD)(dst)) < 0;
        !          3793:        bool flgn = ((WORD)(newv)) < 0;
        !          3794:        regs.z = ((WORD)(newv)) == 0;
        !          3795:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3796:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          3797:        regs.n = flgn != 0;
        !          3798:        put_word(dsta,newv);
        !          3799: }}}}}}
        !          3800: void op_5770(UWORD opcode)
        !          3801: {
        !          3802:        ULONG srcreg = 3;
        !          3803:        ULONG dstreg = (opcode & 7) >> 0;
        !          3804: {{     ULONG src = srcreg;
        !          3805: {      CPTR dsta = regs.a[dstreg];
        !          3806:        UWORD dstdp = nextiword();
        !          3807:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          3808: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          3809:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          3810:        dsta += dstdpr;
        !          3811: {      WORD dst = get_word(dsta);
        !          3812: {      ULONG newv = dst - src;
        !          3813: {      bool flgs = ((WORD)(src)) < 0;
        !          3814:        bool flgo = ((WORD)(dst)) < 0;
        !          3815:        bool flgn = ((WORD)(newv)) < 0;
        !          3816:        regs.z = ((WORD)(newv)) == 0;
        !          3817:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3818:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          3819:        regs.n = flgn != 0;
        !          3820:        put_word(dsta,newv);
        !          3821: }}}}}}}}
        !          3822: void op_5778(UWORD opcode)
        !          3823: {
        !          3824:        ULONG srcreg = 3;
        !          3825: {{     ULONG src = srcreg;
        !          3826: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          3827:        WORD dst = get_word(dsta);
        !          3828: {      ULONG newv = dst - src;
        !          3829: {      bool flgs = ((WORD)(src)) < 0;
        !          3830:        bool flgo = ((WORD)(dst)) < 0;
        !          3831:        bool flgn = ((WORD)(newv)) < 0;
        !          3832:        regs.z = ((WORD)(newv)) == 0;
        !          3833:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3834:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          3835:        regs.n = flgn != 0;
        !          3836:        put_word(dsta,newv);
        !          3837: }}}}}}
        !          3838: void op_5779(UWORD opcode)
        !          3839: {
        !          3840:        ULONG srcreg = 3;
        !          3841: {{     ULONG src = srcreg;
        !          3842: {      CPTR dsta = nextilong();
        !          3843:        WORD dst = get_word(dsta);
        !          3844: {      ULONG newv = dst - src;
        !          3845: {      bool flgs = ((WORD)(src)) < 0;
        !          3846:        bool flgo = ((WORD)(dst)) < 0;
        !          3847:        bool flgn = ((WORD)(newv)) < 0;
        !          3848:        regs.z = ((WORD)(newv)) == 0;
        !          3849:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3850:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          3851:        regs.n = flgn != 0;
        !          3852:        put_word(dsta,newv);
        !          3853: }}}}}}
        !          3854: void op_5780(UWORD opcode)
        !          3855: {
        !          3856:        ULONG srcreg = 3;
        !          3857:        ULONG dstreg = (opcode & 7) >> 0;
        !          3858: {{     ULONG src = srcreg;
        !          3859: {      LONG dst = regs.d[dstreg];
        !          3860: {      ULONG newv = dst - src;
        !          3861: {      bool flgs = ((LONG)(src)) < 0;
        !          3862:        bool flgo = ((LONG)(dst)) < 0;
        !          3863:        bool flgn = ((LONG)(newv)) < 0;
        !          3864:        regs.z = ((LONG)(newv)) == 0;
        !          3865:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3866:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          3867:        regs.n = flgn != 0;
        !          3868:        regs.d[dstreg] = (newv);
        !          3869: }}}}}}
        !          3870: void op_5788(UWORD opcode)
        !          3871: {
        !          3872:        ULONG srcreg = 3;
        !          3873:        ULONG dstreg = (opcode & 7) >> 0;
        !          3874: {{     ULONG src = srcreg;
        !          3875: {      LONG dst = regs.a[dstreg];
        !          3876: {      ULONG newv = dst - src;
        !          3877:        regs.a[dstreg] = (newv);
        !          3878: }}}}}
        !          3879: void op_5790(UWORD opcode)
        !          3880: {
        !          3881:        ULONG srcreg = 3;
        !          3882:        ULONG dstreg = (opcode & 7) >> 0;
        !          3883: {{     ULONG src = srcreg;
        !          3884: {      CPTR dsta = regs.a[dstreg];
        !          3885:        LONG dst = get_long(dsta);
        !          3886: {      ULONG newv = dst - src;
        !          3887: {      bool flgs = ((LONG)(src)) < 0;
        !          3888:        bool flgo = ((LONG)(dst)) < 0;
        !          3889:        bool flgn = ((LONG)(newv)) < 0;
        !          3890:        regs.z = ((LONG)(newv)) == 0;
        !          3891:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3892:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          3893:        regs.n = flgn != 0;
        !          3894:        put_long(dsta,newv);
        !          3895: }}}}}}
        !          3896: void op_5798(UWORD opcode)
        !          3897: {
        !          3898:        ULONG srcreg = 3;
        !          3899:        ULONG dstreg = (opcode & 7) >> 0;
        !          3900: {{     ULONG src = srcreg;
        !          3901: {      CPTR dsta = regs.a[dstreg];
        !          3902:        LONG dst = get_long(dsta);
        !          3903: {      regs.a[dstreg] += 4;
        !          3904: {      ULONG newv = dst - src;
        !          3905: {      bool flgs = ((LONG)(src)) < 0;
        !          3906:        bool flgo = ((LONG)(dst)) < 0;
        !          3907:        bool flgn = ((LONG)(newv)) < 0;
        !          3908:        regs.z = ((LONG)(newv)) == 0;
        !          3909:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3910:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          3911:        regs.n = flgn != 0;
        !          3912:        put_long(dsta,newv);
        !          3913: }}}}}}}
        !          3914: void op_57a0(UWORD opcode)
        !          3915: {
        !          3916:        ULONG srcreg = 3;
        !          3917:        ULONG dstreg = (opcode & 7) >> 0;
        !          3918: {{     ULONG src = srcreg;
        !          3919: {      regs.a[dstreg] -= 4;
        !          3920: {      CPTR dsta = regs.a[dstreg];
        !          3921:        LONG dst = get_long(dsta);
        !          3922: {      ULONG newv = dst - src;
        !          3923: {      bool flgs = ((LONG)(src)) < 0;
        !          3924:        bool flgo = ((LONG)(dst)) < 0;
        !          3925:        bool flgn = ((LONG)(newv)) < 0;
        !          3926:        regs.z = ((LONG)(newv)) == 0;
        !          3927:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3928:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          3929:        regs.n = flgn != 0;
        !          3930:        put_long(dsta,newv);
        !          3931: }}}}}}}
        !          3932: void op_57a8(UWORD opcode)
        !          3933: {
        !          3934:        ULONG srcreg = 3;
        !          3935:        ULONG dstreg = (opcode & 7) >> 0;
        !          3936: {{     ULONG src = srcreg;
        !          3937: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          3938:        LONG dst = get_long(dsta);
        !          3939: {      ULONG newv = dst - src;
        !          3940: {      bool flgs = ((LONG)(src)) < 0;
        !          3941:        bool flgo = ((LONG)(dst)) < 0;
        !          3942:        bool flgn = ((LONG)(newv)) < 0;
        !          3943:        regs.z = ((LONG)(newv)) == 0;
        !          3944:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3945:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          3946:        regs.n = flgn != 0;
        !          3947:        put_long(dsta,newv);
        !          3948: }}}}}}
        !          3949: void op_57b0(UWORD opcode)
        !          3950: {
        !          3951:        ULONG srcreg = 3;
        !          3952:        ULONG dstreg = (opcode & 7) >> 0;
        !          3953: {{     ULONG src = srcreg;
        !          3954: {      CPTR dsta = regs.a[dstreg];
        !          3955:        UWORD dstdp = nextiword();
        !          3956:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          3957: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          3958:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          3959:        dsta += dstdpr;
        !          3960: {      LONG dst = get_long(dsta);
        !          3961: {      ULONG newv = dst - src;
        !          3962: {      bool flgs = ((LONG)(src)) < 0;
        !          3963:        bool flgo = ((LONG)(dst)) < 0;
        !          3964:        bool flgn = ((LONG)(newv)) < 0;
        !          3965:        regs.z = ((LONG)(newv)) == 0;
        !          3966:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3967:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          3968:        regs.n = flgn != 0;
        !          3969:        put_long(dsta,newv);
        !          3970: }}}}}}}}
        !          3971: void op_57b8(UWORD opcode)
        !          3972: {
        !          3973:        ULONG srcreg = 3;
        !          3974: {{     ULONG src = srcreg;
        !          3975: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          3976:        LONG dst = get_long(dsta);
        !          3977: {      ULONG newv = dst - src;
        !          3978: {      bool flgs = ((LONG)(src)) < 0;
        !          3979:        bool flgo = ((LONG)(dst)) < 0;
        !          3980:        bool flgn = ((LONG)(newv)) < 0;
        !          3981:        regs.z = ((LONG)(newv)) == 0;
        !          3982:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3983:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          3984:        regs.n = flgn != 0;
        !          3985:        put_long(dsta,newv);
        !          3986: }}}}}}
        !          3987: void op_57b9(UWORD opcode)
        !          3988: {
        !          3989:        ULONG srcreg = 3;
        !          3990: {{     ULONG src = srcreg;
        !          3991: {      CPTR dsta = nextilong();
        !          3992:        LONG dst = get_long(dsta);
        !          3993: {      ULONG newv = dst - src;
        !          3994: {      bool flgs = ((LONG)(src)) < 0;
        !          3995:        bool flgo = ((LONG)(dst)) < 0;
        !          3996:        bool flgn = ((LONG)(newv)) < 0;
        !          3997:        regs.z = ((LONG)(newv)) == 0;
        !          3998:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          3999:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          4000:        regs.n = flgn != 0;
        !          4001:        put_long(dsta,newv);
        !          4002: }}}}}}
        !          4003: void op_57c0(UWORD opcode)
        !          4004: {
        !          4005:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4006: {{{    int val = cctrue(7) ? 0xff : 0;
        !          4007:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          4008: }}}}
        !          4009: void op_57c8(UWORD opcode)
        !          4010: {
        !          4011:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4012: {{     WORD src = regs.d[srcreg];
        !          4013: {      WORD offs = nextiword();
        !          4014:        if (!cctrue(7)) {
        !          4015:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          4016:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          4017:        }
        !          4018: }}}}
        !          4019: void op_57d0(UWORD opcode)
        !          4020: {
        !          4021:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4022: {{     CPTR srca = regs.a[srcreg];
        !          4023: {      int val = cctrue(7) ? 0xff : 0;
        !          4024:        put_byte(srca,val);
        !          4025: }}}}
        !          4026: void op_57d8(UWORD opcode)
        !          4027: {
        !          4028:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4029: {{     CPTR srca = regs.a[srcreg];
        !          4030: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          4031: {      int val = cctrue(7) ? 0xff : 0;
        !          4032:        put_byte(srca,val);
        !          4033: }}}}}
        !          4034: void op_57e0(UWORD opcode)
        !          4035: {
        !          4036:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4037: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          4038: {      CPTR srca = regs.a[srcreg];
        !          4039: {      int val = cctrue(7) ? 0xff : 0;
        !          4040:        put_byte(srca,val);
        !          4041: }}}}}
        !          4042: void op_57e8(UWORD opcode)
        !          4043: {
        !          4044:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4045: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          4046: {      int val = cctrue(7) ? 0xff : 0;
        !          4047:        put_byte(srca,val);
        !          4048: }}}}
        !          4049: void op_57f0(UWORD opcode)
        !          4050: {
        !          4051:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4052: {{     CPTR srca = regs.a[srcreg];
        !          4053:        UWORD srcdp = nextiword();
        !          4054:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          4055: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          4056:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          4057:        srca += srcdpr;
        !          4058: {      int val = cctrue(7) ? 0xff : 0;
        !          4059:        put_byte(srca,val);
        !          4060: }}}}}
        !          4061: void op_57f8(UWORD opcode)
        !          4062: {
        !          4063: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          4064: {      int val = cctrue(7) ? 0xff : 0;
        !          4065:        put_byte(srca,val);
        !          4066: }}}}
        !          4067: void op_57f9(UWORD opcode)
        !          4068: {
        !          4069: {{     CPTR srca = nextilong();
        !          4070: {      int val = cctrue(7) ? 0xff : 0;
        !          4071:        put_byte(srca,val);
        !          4072: }}}}
        !          4073: void op_5800(UWORD opcode)
        !          4074: {
        !          4075:        ULONG srcreg = 4;
        !          4076:        ULONG dstreg = (opcode & 7) >> 0;
        !          4077: {{     ULONG src = srcreg;
        !          4078: {      BYTE dst = regs.d[dstreg];
        !          4079: {      ULONG newv = dst + src;
        !          4080: {      bool flgs = ((BYTE)(src)) < 0;
        !          4081:        bool flgo = ((BYTE)(dst)) < 0;
        !          4082:        bool flgn = ((BYTE)(newv)) < 0;
        !          4083:        regs.z = ((BYTE)(newv)) == 0;
        !          4084:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4085:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          4086:        regs.n = flgn != 0;
        !          4087:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          4088: }}}}}}
        !          4089: void op_5810(UWORD opcode)
        !          4090: {
        !          4091:        ULONG srcreg = 4;
        !          4092:        ULONG dstreg = (opcode & 7) >> 0;
        !          4093: {{     ULONG src = srcreg;
        !          4094: {      CPTR dsta = regs.a[dstreg];
        !          4095:        BYTE dst = get_byte(dsta);
        !          4096: {      ULONG newv = dst + src;
        !          4097: {      bool flgs = ((BYTE)(src)) < 0;
        !          4098:        bool flgo = ((BYTE)(dst)) < 0;
        !          4099:        bool flgn = ((BYTE)(newv)) < 0;
        !          4100:        regs.z = ((BYTE)(newv)) == 0;
        !          4101:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4102:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          4103:        regs.n = flgn != 0;
        !          4104:        put_byte(dsta,newv);
        !          4105: }}}}}}
        !          4106: void op_5818(UWORD opcode)
        !          4107: {
        !          4108:        ULONG srcreg = 4;
        !          4109:        ULONG dstreg = (opcode & 7) >> 0;
        !          4110: {{     ULONG src = srcreg;
        !          4111: {      CPTR dsta = regs.a[dstreg];
        !          4112:        BYTE dst = get_byte(dsta);
        !          4113: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          4114: {      ULONG newv = dst + src;
        !          4115: {      bool flgs = ((BYTE)(src)) < 0;
        !          4116:        bool flgo = ((BYTE)(dst)) < 0;
        !          4117:        bool flgn = ((BYTE)(newv)) < 0;
        !          4118:        regs.z = ((BYTE)(newv)) == 0;
        !          4119:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4120:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          4121:        regs.n = flgn != 0;
        !          4122:        put_byte(dsta,newv);
        !          4123: }}}}}}}
        !          4124: void op_5820(UWORD opcode)
        !          4125: {
        !          4126:        ULONG srcreg = 4;
        !          4127:        ULONG dstreg = (opcode & 7) >> 0;
        !          4128: {{     ULONG src = srcreg;
        !          4129: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          4130: {      CPTR dsta = regs.a[dstreg];
        !          4131:        BYTE dst = get_byte(dsta);
        !          4132: {      ULONG newv = dst + src;
        !          4133: {      bool flgs = ((BYTE)(src)) < 0;
        !          4134:        bool flgo = ((BYTE)(dst)) < 0;
        !          4135:        bool flgn = ((BYTE)(newv)) < 0;
        !          4136:        regs.z = ((BYTE)(newv)) == 0;
        !          4137:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4138:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          4139:        regs.n = flgn != 0;
        !          4140:        put_byte(dsta,newv);
        !          4141: }}}}}}}
        !          4142: void op_5828(UWORD opcode)
        !          4143: {
        !          4144:        ULONG srcreg = 4;
        !          4145:        ULONG dstreg = (opcode & 7) >> 0;
        !          4146: {{     ULONG src = srcreg;
        !          4147: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          4148:        BYTE dst = get_byte(dsta);
        !          4149: {      ULONG newv = dst + src;
        !          4150: {      bool flgs = ((BYTE)(src)) < 0;
        !          4151:        bool flgo = ((BYTE)(dst)) < 0;
        !          4152:        bool flgn = ((BYTE)(newv)) < 0;
        !          4153:        regs.z = ((BYTE)(newv)) == 0;
        !          4154:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4155:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          4156:        regs.n = flgn != 0;
        !          4157:        put_byte(dsta,newv);
        !          4158: }}}}}}
        !          4159: void op_5830(UWORD opcode)
        !          4160: {
        !          4161:        ULONG srcreg = 4;
        !          4162:        ULONG dstreg = (opcode & 7) >> 0;
        !          4163: {{     ULONG src = srcreg;
        !          4164: {      CPTR dsta = regs.a[dstreg];
        !          4165:        UWORD dstdp = nextiword();
        !          4166:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          4167: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          4168:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          4169:        dsta += dstdpr;
        !          4170: {      BYTE dst = get_byte(dsta);
        !          4171: {      ULONG newv = dst + src;
        !          4172: {      bool flgs = ((BYTE)(src)) < 0;
        !          4173:        bool flgo = ((BYTE)(dst)) < 0;
        !          4174:        bool flgn = ((BYTE)(newv)) < 0;
        !          4175:        regs.z = ((BYTE)(newv)) == 0;
        !          4176:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4177:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          4178:        regs.n = flgn != 0;
        !          4179:        put_byte(dsta,newv);
        !          4180: }}}}}}}}
        !          4181: void op_5838(UWORD opcode)
        !          4182: {
        !          4183:        ULONG srcreg = 4;
        !          4184: {{     ULONG src = srcreg;
        !          4185: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          4186:        BYTE dst = get_byte(dsta);
        !          4187: {      ULONG newv = dst + src;
        !          4188: {      bool flgs = ((BYTE)(src)) < 0;
        !          4189:        bool flgo = ((BYTE)(dst)) < 0;
        !          4190:        bool flgn = ((BYTE)(newv)) < 0;
        !          4191:        regs.z = ((BYTE)(newv)) == 0;
        !          4192:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4193:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          4194:        regs.n = flgn != 0;
        !          4195:        put_byte(dsta,newv);
        !          4196: }}}}}}
        !          4197: void op_5839(UWORD opcode)
        !          4198: {
        !          4199:        ULONG srcreg = 4;
        !          4200: {{     ULONG src = srcreg;
        !          4201: {      CPTR dsta = nextilong();
        !          4202:        BYTE dst = get_byte(dsta);
        !          4203: {      ULONG newv = dst + src;
        !          4204: {      bool flgs = ((BYTE)(src)) < 0;
        !          4205:        bool flgo = ((BYTE)(dst)) < 0;
        !          4206:        bool flgn = ((BYTE)(newv)) < 0;
        !          4207:        regs.z = ((BYTE)(newv)) == 0;
        !          4208:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4209:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          4210:        regs.n = flgn != 0;
        !          4211:        put_byte(dsta,newv);
        !          4212: }}}}}}
        !          4213: void op_5840(UWORD opcode)
        !          4214: {
        !          4215:        ULONG srcreg = 4;
        !          4216:        ULONG dstreg = (opcode & 7) >> 0;
        !          4217: {{     ULONG src = srcreg;
        !          4218: {      WORD dst = regs.d[dstreg];
        !          4219: {      ULONG newv = dst + src;
        !          4220: {      bool flgs = ((WORD)(src)) < 0;
        !          4221:        bool flgo = ((WORD)(dst)) < 0;
        !          4222:        bool flgn = ((WORD)(newv)) < 0;
        !          4223:        regs.z = ((WORD)(newv)) == 0;
        !          4224:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4225:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          4226:        regs.n = flgn != 0;
        !          4227:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          4228: }}}}}}
        !          4229: void op_5848(UWORD opcode)
        !          4230: {
        !          4231:        ULONG srcreg = 4;
        !          4232:        ULONG dstreg = (opcode & 7) >> 0;
        !          4233: {{     ULONG src = srcreg;
        !          4234: {      LONG dst = regs.a[dstreg];
        !          4235: {      ULONG newv = dst + src;
        !          4236:        regs.a[dstreg] = (newv);
        !          4237: }}}}}
        !          4238: void op_5850(UWORD opcode)
        !          4239: {
        !          4240:        ULONG srcreg = 4;
        !          4241:        ULONG dstreg = (opcode & 7) >> 0;
        !          4242: {{     ULONG src = srcreg;
        !          4243: {      CPTR dsta = regs.a[dstreg];
        !          4244:        WORD dst = get_word(dsta);
        !          4245: {      ULONG newv = dst + src;
        !          4246: {      bool flgs = ((WORD)(src)) < 0;
        !          4247:        bool flgo = ((WORD)(dst)) < 0;
        !          4248:        bool flgn = ((WORD)(newv)) < 0;
        !          4249:        regs.z = ((WORD)(newv)) == 0;
        !          4250:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4251:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          4252:        regs.n = flgn != 0;
        !          4253:        put_word(dsta,newv);
        !          4254: }}}}}}
        !          4255: void op_5858(UWORD opcode)
        !          4256: {
        !          4257:        ULONG srcreg = 4;
        !          4258:        ULONG dstreg = (opcode & 7) >> 0;
        !          4259: {{     ULONG src = srcreg;
        !          4260: {      CPTR dsta = regs.a[dstreg];
        !          4261:        WORD dst = get_word(dsta);
        !          4262: {      regs.a[dstreg] += 2;
        !          4263: {      ULONG newv = dst + src;
        !          4264: {      bool flgs = ((WORD)(src)) < 0;
        !          4265:        bool flgo = ((WORD)(dst)) < 0;
        !          4266:        bool flgn = ((WORD)(newv)) < 0;
        !          4267:        regs.z = ((WORD)(newv)) == 0;
        !          4268:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4269:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          4270:        regs.n = flgn != 0;
        !          4271:        put_word(dsta,newv);
        !          4272: }}}}}}}
        !          4273: void op_5860(UWORD opcode)
        !          4274: {
        !          4275:        ULONG srcreg = 4;
        !          4276:        ULONG dstreg = (opcode & 7) >> 0;
        !          4277: {{     ULONG src = srcreg;
        !          4278: {      regs.a[dstreg] -= 2;
        !          4279: {      CPTR dsta = regs.a[dstreg];
        !          4280:        WORD dst = get_word(dsta);
        !          4281: {      ULONG newv = dst + src;
        !          4282: {      bool flgs = ((WORD)(src)) < 0;
        !          4283:        bool flgo = ((WORD)(dst)) < 0;
        !          4284:        bool flgn = ((WORD)(newv)) < 0;
        !          4285:        regs.z = ((WORD)(newv)) == 0;
        !          4286:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4287:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          4288:        regs.n = flgn != 0;
        !          4289:        put_word(dsta,newv);
        !          4290: }}}}}}}
        !          4291: void op_5868(UWORD opcode)
        !          4292: {
        !          4293:        ULONG srcreg = 4;
        !          4294:        ULONG dstreg = (opcode & 7) >> 0;
        !          4295: {{     ULONG src = srcreg;
        !          4296: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          4297:        WORD dst = get_word(dsta);
        !          4298: {      ULONG newv = dst + src;
        !          4299: {      bool flgs = ((WORD)(src)) < 0;
        !          4300:        bool flgo = ((WORD)(dst)) < 0;
        !          4301:        bool flgn = ((WORD)(newv)) < 0;
        !          4302:        regs.z = ((WORD)(newv)) == 0;
        !          4303:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4304:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          4305:        regs.n = flgn != 0;
        !          4306:        put_word(dsta,newv);
        !          4307: }}}}}}
        !          4308: void op_5870(UWORD opcode)
        !          4309: {
        !          4310:        ULONG srcreg = 4;
        !          4311:        ULONG dstreg = (opcode & 7) >> 0;
        !          4312: {{     ULONG src = srcreg;
        !          4313: {      CPTR dsta = regs.a[dstreg];
        !          4314:        UWORD dstdp = nextiword();
        !          4315:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          4316: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          4317:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          4318:        dsta += dstdpr;
        !          4319: {      WORD dst = get_word(dsta);
        !          4320: {      ULONG newv = dst + src;
        !          4321: {      bool flgs = ((WORD)(src)) < 0;
        !          4322:        bool flgo = ((WORD)(dst)) < 0;
        !          4323:        bool flgn = ((WORD)(newv)) < 0;
        !          4324:        regs.z = ((WORD)(newv)) == 0;
        !          4325:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4326:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          4327:        regs.n = flgn != 0;
        !          4328:        put_word(dsta,newv);
        !          4329: }}}}}}}}
        !          4330: void op_5878(UWORD opcode)
        !          4331: {
        !          4332:        ULONG srcreg = 4;
        !          4333: {{     ULONG src = srcreg;
        !          4334: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          4335:        WORD dst = get_word(dsta);
        !          4336: {      ULONG newv = dst + src;
        !          4337: {      bool flgs = ((WORD)(src)) < 0;
        !          4338:        bool flgo = ((WORD)(dst)) < 0;
        !          4339:        bool flgn = ((WORD)(newv)) < 0;
        !          4340:        regs.z = ((WORD)(newv)) == 0;
        !          4341:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4342:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          4343:        regs.n = flgn != 0;
        !          4344:        put_word(dsta,newv);
        !          4345: }}}}}}
        !          4346: void op_5879(UWORD opcode)
        !          4347: {
        !          4348:        ULONG srcreg = 4;
        !          4349: {{     ULONG src = srcreg;
        !          4350: {      CPTR dsta = nextilong();
        !          4351:        WORD dst = get_word(dsta);
        !          4352: {      ULONG newv = dst + src;
        !          4353: {      bool flgs = ((WORD)(src)) < 0;
        !          4354:        bool flgo = ((WORD)(dst)) < 0;
        !          4355:        bool flgn = ((WORD)(newv)) < 0;
        !          4356:        regs.z = ((WORD)(newv)) == 0;
        !          4357:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4358:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          4359:        regs.n = flgn != 0;
        !          4360:        put_word(dsta,newv);
        !          4361: }}}}}}
        !          4362: void op_5880(UWORD opcode)
        !          4363: {
        !          4364:        ULONG srcreg = 4;
        !          4365:        ULONG dstreg = (opcode & 7) >> 0;
        !          4366: {{     ULONG src = srcreg;
        !          4367: {      LONG dst = regs.d[dstreg];
        !          4368: {      ULONG newv = dst + src;
        !          4369: {      bool flgs = ((LONG)(src)) < 0;
        !          4370:        bool flgo = ((LONG)(dst)) < 0;
        !          4371:        bool flgn = ((LONG)(newv)) < 0;
        !          4372:        regs.z = ((LONG)(newv)) == 0;
        !          4373:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4374:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          4375:        regs.n = flgn != 0;
        !          4376:        regs.d[dstreg] = (newv);
        !          4377: }}}}}}
        !          4378: void op_5888(UWORD opcode)
        !          4379: {
        !          4380:        ULONG srcreg = 4;
        !          4381:        ULONG dstreg = (opcode & 7) >> 0;
        !          4382: {{     ULONG src = srcreg;
        !          4383: {      LONG dst = regs.a[dstreg];
        !          4384: {      ULONG newv = dst + src;
        !          4385:        regs.a[dstreg] = (newv);
        !          4386: }}}}}
        !          4387: void op_5890(UWORD opcode)
        !          4388: {
        !          4389:        ULONG srcreg = 4;
        !          4390:        ULONG dstreg = (opcode & 7) >> 0;
        !          4391: {{     ULONG src = srcreg;
        !          4392: {      CPTR dsta = regs.a[dstreg];
        !          4393:        LONG dst = get_long(dsta);
        !          4394: {      ULONG newv = dst + src;
        !          4395: {      bool flgs = ((LONG)(src)) < 0;
        !          4396:        bool flgo = ((LONG)(dst)) < 0;
        !          4397:        bool flgn = ((LONG)(newv)) < 0;
        !          4398:        regs.z = ((LONG)(newv)) == 0;
        !          4399:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4400:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          4401:        regs.n = flgn != 0;
        !          4402:        put_long(dsta,newv);
        !          4403: }}}}}}
        !          4404: void op_5898(UWORD opcode)
        !          4405: {
        !          4406:        ULONG srcreg = 4;
        !          4407:        ULONG dstreg = (opcode & 7) >> 0;
        !          4408: {{     ULONG src = srcreg;
        !          4409: {      CPTR dsta = regs.a[dstreg];
        !          4410:        LONG dst = get_long(dsta);
        !          4411: {      regs.a[dstreg] += 4;
        !          4412: {      ULONG newv = dst + src;
        !          4413: {      bool flgs = ((LONG)(src)) < 0;
        !          4414:        bool flgo = ((LONG)(dst)) < 0;
        !          4415:        bool flgn = ((LONG)(newv)) < 0;
        !          4416:        regs.z = ((LONG)(newv)) == 0;
        !          4417:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4418:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          4419:        regs.n = flgn != 0;
        !          4420:        put_long(dsta,newv);
        !          4421: }}}}}}}
        !          4422: void op_58a0(UWORD opcode)
        !          4423: {
        !          4424:        ULONG srcreg = 4;
        !          4425:        ULONG dstreg = (opcode & 7) >> 0;
        !          4426: {{     ULONG src = srcreg;
        !          4427: {      regs.a[dstreg] -= 4;
        !          4428: {      CPTR dsta = regs.a[dstreg];
        !          4429:        LONG dst = get_long(dsta);
        !          4430: {      ULONG newv = dst + src;
        !          4431: {      bool flgs = ((LONG)(src)) < 0;
        !          4432:        bool flgo = ((LONG)(dst)) < 0;
        !          4433:        bool flgn = ((LONG)(newv)) < 0;
        !          4434:        regs.z = ((LONG)(newv)) == 0;
        !          4435:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4436:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          4437:        regs.n = flgn != 0;
        !          4438:        put_long(dsta,newv);
        !          4439: }}}}}}}
        !          4440: void op_58a8(UWORD opcode)
        !          4441: {
        !          4442:        ULONG srcreg = 4;
        !          4443:        ULONG dstreg = (opcode & 7) >> 0;
        !          4444: {{     ULONG src = srcreg;
        !          4445: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          4446:        LONG dst = get_long(dsta);
        !          4447: {      ULONG newv = dst + src;
        !          4448: {      bool flgs = ((LONG)(src)) < 0;
        !          4449:        bool flgo = ((LONG)(dst)) < 0;
        !          4450:        bool flgn = ((LONG)(newv)) < 0;
        !          4451:        regs.z = ((LONG)(newv)) == 0;
        !          4452:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4453:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          4454:        regs.n = flgn != 0;
        !          4455:        put_long(dsta,newv);
        !          4456: }}}}}}
        !          4457: void op_58b0(UWORD opcode)
        !          4458: {
        !          4459:        ULONG srcreg = 4;
        !          4460:        ULONG dstreg = (opcode & 7) >> 0;
        !          4461: {{     ULONG src = srcreg;
        !          4462: {      CPTR dsta = regs.a[dstreg];
        !          4463:        UWORD dstdp = nextiword();
        !          4464:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          4465: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          4466:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          4467:        dsta += dstdpr;
        !          4468: {      LONG dst = get_long(dsta);
        !          4469: {      ULONG newv = dst + src;
        !          4470: {      bool flgs = ((LONG)(src)) < 0;
        !          4471:        bool flgo = ((LONG)(dst)) < 0;
        !          4472:        bool flgn = ((LONG)(newv)) < 0;
        !          4473:        regs.z = ((LONG)(newv)) == 0;
        !          4474:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4475:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          4476:        regs.n = flgn != 0;
        !          4477:        put_long(dsta,newv);
        !          4478: }}}}}}}}
        !          4479: void op_58b8(UWORD opcode)
        !          4480: {
        !          4481:        ULONG srcreg = 4;
        !          4482: {{     ULONG src = srcreg;
        !          4483: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          4484:        LONG dst = get_long(dsta);
        !          4485: {      ULONG newv = dst + src;
        !          4486: {      bool flgs = ((LONG)(src)) < 0;
        !          4487:        bool flgo = ((LONG)(dst)) < 0;
        !          4488:        bool flgn = ((LONG)(newv)) < 0;
        !          4489:        regs.z = ((LONG)(newv)) == 0;
        !          4490:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4491:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          4492:        regs.n = flgn != 0;
        !          4493:        put_long(dsta,newv);
        !          4494: }}}}}}
        !          4495: void op_58b9(UWORD opcode)
        !          4496: {
        !          4497:        ULONG srcreg = 4;
        !          4498: {{     ULONG src = srcreg;
        !          4499: {      CPTR dsta = nextilong();
        !          4500:        LONG dst = get_long(dsta);
        !          4501: {      ULONG newv = dst + src;
        !          4502: {      bool flgs = ((LONG)(src)) < 0;
        !          4503:        bool flgo = ((LONG)(dst)) < 0;
        !          4504:        bool flgn = ((LONG)(newv)) < 0;
        !          4505:        regs.z = ((LONG)(newv)) == 0;
        !          4506:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          4507:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          4508:        regs.n = flgn != 0;
        !          4509:        put_long(dsta,newv);
        !          4510: }}}}}}
        !          4511: void op_58c0(UWORD opcode)
        !          4512: {
        !          4513:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4514: {{{    int val = cctrue(8) ? 0xff : 0;
        !          4515:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          4516: }}}}
        !          4517: void op_58c8(UWORD opcode)
        !          4518: {
        !          4519:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4520: {{     WORD src = regs.d[srcreg];
        !          4521: {      WORD offs = nextiword();
        !          4522:        if (!cctrue(8)) {
        !          4523:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          4524:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          4525:        }
        !          4526: }}}}
        !          4527: void op_58d0(UWORD opcode)
        !          4528: {
        !          4529:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4530: {{     CPTR srca = regs.a[srcreg];
        !          4531: {      int val = cctrue(8) ? 0xff : 0;
        !          4532:        put_byte(srca,val);
        !          4533: }}}}
        !          4534: void op_58d8(UWORD opcode)
        !          4535: {
        !          4536:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4537: {{     CPTR srca = regs.a[srcreg];
        !          4538: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          4539: {      int val = cctrue(8) ? 0xff : 0;
        !          4540:        put_byte(srca,val);
        !          4541: }}}}}
        !          4542: void op_58e0(UWORD opcode)
        !          4543: {
        !          4544:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4545: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          4546: {      CPTR srca = regs.a[srcreg];
        !          4547: {      int val = cctrue(8) ? 0xff : 0;
        !          4548:        put_byte(srca,val);
        !          4549: }}}}}
        !          4550: void op_58e8(UWORD opcode)
        !          4551: {
        !          4552:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4553: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          4554: {      int val = cctrue(8) ? 0xff : 0;
        !          4555:        put_byte(srca,val);
        !          4556: }}}}
        !          4557: void op_58f0(UWORD opcode)
        !          4558: {
        !          4559:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          4560: {{     CPTR srca = regs.a[srcreg];
        !          4561:        UWORD srcdp = nextiword();
        !          4562:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          4563: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          4564:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          4565:        srca += srcdpr;
        !          4566: {      int val = cctrue(8) ? 0xff : 0;
        !          4567:        put_byte(srca,val);
        !          4568: }}}}}
        !          4569: void op_58f8(UWORD opcode)
        !          4570: {
        !          4571: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          4572: {      int val = cctrue(8) ? 0xff : 0;
        !          4573:        put_byte(srca,val);
        !          4574: }}}}
        !          4575: void op_58f9(UWORD opcode)
        !          4576: {
        !          4577: {{     CPTR srca = nextilong();
        !          4578: {      int val = cctrue(8) ? 0xff : 0;
        !          4579:        put_byte(srca,val);
        !          4580: }}}}
        !          4581: void op_5900(UWORD opcode)
        !          4582: {
        !          4583:        ULONG srcreg = 4;
        !          4584:        ULONG dstreg = (opcode & 7) >> 0;
        !          4585: {{     ULONG src = srcreg;
        !          4586: {      BYTE dst = regs.d[dstreg];
        !          4587: {      ULONG newv = dst - src;
        !          4588: {      bool flgs = ((BYTE)(src)) < 0;
        !          4589:        bool flgo = ((BYTE)(dst)) < 0;
        !          4590:        bool flgn = ((BYTE)(newv)) < 0;
        !          4591:        regs.z = ((BYTE)(newv)) == 0;
        !          4592:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4593:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          4594:        regs.n = flgn != 0;
        !          4595:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          4596: }}}}}}
        !          4597: void op_5910(UWORD opcode)
        !          4598: {
        !          4599:        ULONG srcreg = 4;
        !          4600:        ULONG dstreg = (opcode & 7) >> 0;
        !          4601: {{     ULONG src = srcreg;
        !          4602: {      CPTR dsta = regs.a[dstreg];
        !          4603:        BYTE dst = get_byte(dsta);
        !          4604: {      ULONG newv = dst - src;
        !          4605: {      bool flgs = ((BYTE)(src)) < 0;
        !          4606:        bool flgo = ((BYTE)(dst)) < 0;
        !          4607:        bool flgn = ((BYTE)(newv)) < 0;
        !          4608:        regs.z = ((BYTE)(newv)) == 0;
        !          4609:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4610:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          4611:        regs.n = flgn != 0;
        !          4612:        put_byte(dsta,newv);
        !          4613: }}}}}}
        !          4614: void op_5918(UWORD opcode)
        !          4615: {
        !          4616:        ULONG srcreg = 4;
        !          4617:        ULONG dstreg = (opcode & 7) >> 0;
        !          4618: {{     ULONG src = srcreg;
        !          4619: {      CPTR dsta = regs.a[dstreg];
        !          4620:        BYTE dst = get_byte(dsta);
        !          4621: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          4622: {      ULONG newv = dst - src;
        !          4623: {      bool flgs = ((BYTE)(src)) < 0;
        !          4624:        bool flgo = ((BYTE)(dst)) < 0;
        !          4625:        bool flgn = ((BYTE)(newv)) < 0;
        !          4626:        regs.z = ((BYTE)(newv)) == 0;
        !          4627:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4628:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          4629:        regs.n = flgn != 0;
        !          4630:        put_byte(dsta,newv);
        !          4631: }}}}}}}
        !          4632: void op_5920(UWORD opcode)
        !          4633: {
        !          4634:        ULONG srcreg = 4;
        !          4635:        ULONG dstreg = (opcode & 7) >> 0;
        !          4636: {{     ULONG src = srcreg;
        !          4637: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          4638: {      CPTR dsta = regs.a[dstreg];
        !          4639:        BYTE dst = get_byte(dsta);
        !          4640: {      ULONG newv = dst - src;
        !          4641: {      bool flgs = ((BYTE)(src)) < 0;
        !          4642:        bool flgo = ((BYTE)(dst)) < 0;
        !          4643:        bool flgn = ((BYTE)(newv)) < 0;
        !          4644:        regs.z = ((BYTE)(newv)) == 0;
        !          4645:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4646:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          4647:        regs.n = flgn != 0;
        !          4648:        put_byte(dsta,newv);
        !          4649: }}}}}}}
        !          4650: void op_5928(UWORD opcode)
        !          4651: {
        !          4652:        ULONG srcreg = 4;
        !          4653:        ULONG dstreg = (opcode & 7) >> 0;
        !          4654: {{     ULONG src = srcreg;
        !          4655: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          4656:        BYTE dst = get_byte(dsta);
        !          4657: {      ULONG newv = dst - src;
        !          4658: {      bool flgs = ((BYTE)(src)) < 0;
        !          4659:        bool flgo = ((BYTE)(dst)) < 0;
        !          4660:        bool flgn = ((BYTE)(newv)) < 0;
        !          4661:        regs.z = ((BYTE)(newv)) == 0;
        !          4662:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4663:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          4664:        regs.n = flgn != 0;
        !          4665:        put_byte(dsta,newv);
        !          4666: }}}}}}
        !          4667: void op_5930(UWORD opcode)
        !          4668: {
        !          4669:        ULONG srcreg = 4;
        !          4670:        ULONG dstreg = (opcode & 7) >> 0;
        !          4671: {{     ULONG src = srcreg;
        !          4672: {      CPTR dsta = regs.a[dstreg];
        !          4673:        UWORD dstdp = nextiword();
        !          4674:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          4675: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          4676:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          4677:        dsta += dstdpr;
        !          4678: {      BYTE dst = get_byte(dsta);
        !          4679: {      ULONG newv = dst - src;
        !          4680: {      bool flgs = ((BYTE)(src)) < 0;
        !          4681:        bool flgo = ((BYTE)(dst)) < 0;
        !          4682:        bool flgn = ((BYTE)(newv)) < 0;
        !          4683:        regs.z = ((BYTE)(newv)) == 0;
        !          4684:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4685:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          4686:        regs.n = flgn != 0;
        !          4687:        put_byte(dsta,newv);
        !          4688: }}}}}}}}
        !          4689: void op_5938(UWORD opcode)
        !          4690: {
        !          4691:        ULONG srcreg = 4;
        !          4692: {{     ULONG src = srcreg;
        !          4693: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          4694:        BYTE dst = get_byte(dsta);
        !          4695: {      ULONG newv = dst - src;
        !          4696: {      bool flgs = ((BYTE)(src)) < 0;
        !          4697:        bool flgo = ((BYTE)(dst)) < 0;
        !          4698:        bool flgn = ((BYTE)(newv)) < 0;
        !          4699:        regs.z = ((BYTE)(newv)) == 0;
        !          4700:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4701:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          4702:        regs.n = flgn != 0;
        !          4703:        put_byte(dsta,newv);
        !          4704: }}}}}}
        !          4705: void op_5939(UWORD opcode)
        !          4706: {
        !          4707:        ULONG srcreg = 4;
        !          4708: {{     ULONG src = srcreg;
        !          4709: {      CPTR dsta = nextilong();
        !          4710:        BYTE dst = get_byte(dsta);
        !          4711: {      ULONG newv = dst - src;
        !          4712: {      bool flgs = ((BYTE)(src)) < 0;
        !          4713:        bool flgo = ((BYTE)(dst)) < 0;
        !          4714:        bool flgn = ((BYTE)(newv)) < 0;
        !          4715:        regs.z = ((BYTE)(newv)) == 0;
        !          4716:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4717:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          4718:        regs.n = flgn != 0;
        !          4719:        put_byte(dsta,newv);
        !          4720: }}}}}}
        !          4721: void op_5940(UWORD opcode)
        !          4722: {
        !          4723:        ULONG srcreg = 4;
        !          4724:        ULONG dstreg = (opcode & 7) >> 0;
        !          4725: {{     ULONG src = srcreg;
        !          4726: {      WORD dst = regs.d[dstreg];
        !          4727: {      ULONG newv = dst - src;
        !          4728: {      bool flgs = ((WORD)(src)) < 0;
        !          4729:        bool flgo = ((WORD)(dst)) < 0;
        !          4730:        bool flgn = ((WORD)(newv)) < 0;
        !          4731:        regs.z = ((WORD)(newv)) == 0;
        !          4732:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4733:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          4734:        regs.n = flgn != 0;
        !          4735:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          4736: }}}}}}
        !          4737: void op_5948(UWORD opcode)
        !          4738: {
        !          4739:        ULONG srcreg = 4;
        !          4740:        ULONG dstreg = (opcode & 7) >> 0;
        !          4741: {{     ULONG src = srcreg;
        !          4742: {      LONG dst = regs.a[dstreg];
        !          4743: {      ULONG newv = dst - src;
        !          4744:        regs.a[dstreg] = (newv);
        !          4745: }}}}}
        !          4746: void op_5950(UWORD opcode)
        !          4747: {
        !          4748:        ULONG srcreg = 4;
        !          4749:        ULONG dstreg = (opcode & 7) >> 0;
        !          4750: {{     ULONG src = srcreg;
        !          4751: {      CPTR dsta = regs.a[dstreg];
        !          4752:        WORD dst = get_word(dsta);
        !          4753: {      ULONG newv = dst - src;
        !          4754: {      bool flgs = ((WORD)(src)) < 0;
        !          4755:        bool flgo = ((WORD)(dst)) < 0;
        !          4756:        bool flgn = ((WORD)(newv)) < 0;
        !          4757:        regs.z = ((WORD)(newv)) == 0;
        !          4758:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4759:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          4760:        regs.n = flgn != 0;
        !          4761:        put_word(dsta,newv);
        !          4762: }}}}}}
        !          4763: void op_5958(UWORD opcode)
        !          4764: {
        !          4765:        ULONG srcreg = 4;
        !          4766:        ULONG dstreg = (opcode & 7) >> 0;
        !          4767: {{     ULONG src = srcreg;
        !          4768: {      CPTR dsta = regs.a[dstreg];
        !          4769:        WORD dst = get_word(dsta);
        !          4770: {      regs.a[dstreg] += 2;
        !          4771: {      ULONG newv = dst - src;
        !          4772: {      bool flgs = ((WORD)(src)) < 0;
        !          4773:        bool flgo = ((WORD)(dst)) < 0;
        !          4774:        bool flgn = ((WORD)(newv)) < 0;
        !          4775:        regs.z = ((WORD)(newv)) == 0;
        !          4776:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4777:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          4778:        regs.n = flgn != 0;
        !          4779:        put_word(dsta,newv);
        !          4780: }}}}}}}
        !          4781: void op_5960(UWORD opcode)
        !          4782: {
        !          4783:        ULONG srcreg = 4;
        !          4784:        ULONG dstreg = (opcode & 7) >> 0;
        !          4785: {{     ULONG src = srcreg;
        !          4786: {      regs.a[dstreg] -= 2;
        !          4787: {      CPTR dsta = regs.a[dstreg];
        !          4788:        WORD dst = get_word(dsta);
        !          4789: {      ULONG newv = dst - src;
        !          4790: {      bool flgs = ((WORD)(src)) < 0;
        !          4791:        bool flgo = ((WORD)(dst)) < 0;
        !          4792:        bool flgn = ((WORD)(newv)) < 0;
        !          4793:        regs.z = ((WORD)(newv)) == 0;
        !          4794:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4795:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          4796:        regs.n = flgn != 0;
        !          4797:        put_word(dsta,newv);
        !          4798: }}}}}}}
        !          4799: void op_5968(UWORD opcode)
        !          4800: {
        !          4801:        ULONG srcreg = 4;
        !          4802:        ULONG dstreg = (opcode & 7) >> 0;
        !          4803: {{     ULONG src = srcreg;
        !          4804: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          4805:        WORD dst = get_word(dsta);
        !          4806: {      ULONG newv = dst - src;
        !          4807: {      bool flgs = ((WORD)(src)) < 0;
        !          4808:        bool flgo = ((WORD)(dst)) < 0;
        !          4809:        bool flgn = ((WORD)(newv)) < 0;
        !          4810:        regs.z = ((WORD)(newv)) == 0;
        !          4811:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4812:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          4813:        regs.n = flgn != 0;
        !          4814:        put_word(dsta,newv);
        !          4815: }}}}}}
        !          4816: void op_5970(UWORD opcode)
        !          4817: {
        !          4818:        ULONG srcreg = 4;
        !          4819:        ULONG dstreg = (opcode & 7) >> 0;
        !          4820: {{     ULONG src = srcreg;
        !          4821: {      CPTR dsta = regs.a[dstreg];
        !          4822:        UWORD dstdp = nextiword();
        !          4823:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          4824: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          4825:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          4826:        dsta += dstdpr;
        !          4827: {      WORD dst = get_word(dsta);
        !          4828: {      ULONG newv = dst - src;
        !          4829: {      bool flgs = ((WORD)(src)) < 0;
        !          4830:        bool flgo = ((WORD)(dst)) < 0;
        !          4831:        bool flgn = ((WORD)(newv)) < 0;
        !          4832:        regs.z = ((WORD)(newv)) == 0;
        !          4833:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4834:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          4835:        regs.n = flgn != 0;
        !          4836:        put_word(dsta,newv);
        !          4837: }}}}}}}}
        !          4838: void op_5978(UWORD opcode)
        !          4839: {
        !          4840:        ULONG srcreg = 4;
        !          4841: {{     ULONG src = srcreg;
        !          4842: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          4843:        WORD dst = get_word(dsta);
        !          4844: {      ULONG newv = dst - src;
        !          4845: {      bool flgs = ((WORD)(src)) < 0;
        !          4846:        bool flgo = ((WORD)(dst)) < 0;
        !          4847:        bool flgn = ((WORD)(newv)) < 0;
        !          4848:        regs.z = ((WORD)(newv)) == 0;
        !          4849:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4850:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          4851:        regs.n = flgn != 0;
        !          4852:        put_word(dsta,newv);
        !          4853: }}}}}}
        !          4854: void op_5979(UWORD opcode)
        !          4855: {
        !          4856:        ULONG srcreg = 4;
        !          4857: {{     ULONG src = srcreg;
        !          4858: {      CPTR dsta = nextilong();
        !          4859:        WORD dst = get_word(dsta);
        !          4860: {      ULONG newv = dst - src;
        !          4861: {      bool flgs = ((WORD)(src)) < 0;
        !          4862:        bool flgo = ((WORD)(dst)) < 0;
        !          4863:        bool flgn = ((WORD)(newv)) < 0;
        !          4864:        regs.z = ((WORD)(newv)) == 0;
        !          4865:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4866:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          4867:        regs.n = flgn != 0;
        !          4868:        put_word(dsta,newv);
        !          4869: }}}}}}
        !          4870: void op_5980(UWORD opcode)
        !          4871: {
        !          4872:        ULONG srcreg = 4;
        !          4873:        ULONG dstreg = (opcode & 7) >> 0;
        !          4874: {{     ULONG src = srcreg;
        !          4875: {      LONG dst = regs.d[dstreg];
        !          4876: {      ULONG newv = dst - src;
        !          4877: {      bool flgs = ((LONG)(src)) < 0;
        !          4878:        bool flgo = ((LONG)(dst)) < 0;
        !          4879:        bool flgn = ((LONG)(newv)) < 0;
        !          4880:        regs.z = ((LONG)(newv)) == 0;
        !          4881:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4882:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          4883:        regs.n = flgn != 0;
        !          4884:        regs.d[dstreg] = (newv);
        !          4885: }}}}}}
        !          4886: void op_5988(UWORD opcode)
        !          4887: {
        !          4888:        ULONG srcreg = 4;
        !          4889:        ULONG dstreg = (opcode & 7) >> 0;
        !          4890: {{     ULONG src = srcreg;
        !          4891: {      LONG dst = regs.a[dstreg];
        !          4892: {      ULONG newv = dst - src;
        !          4893:        regs.a[dstreg] = (newv);
        !          4894: }}}}}
        !          4895: void op_5990(UWORD opcode)
        !          4896: {
        !          4897:        ULONG srcreg = 4;
        !          4898:        ULONG dstreg = (opcode & 7) >> 0;
        !          4899: {{     ULONG src = srcreg;
        !          4900: {      CPTR dsta = regs.a[dstreg];
        !          4901:        LONG dst = get_long(dsta);
        !          4902: {      ULONG newv = dst - src;
        !          4903: {      bool flgs = ((LONG)(src)) < 0;
        !          4904:        bool flgo = ((LONG)(dst)) < 0;
        !          4905:        bool flgn = ((LONG)(newv)) < 0;
        !          4906:        regs.z = ((LONG)(newv)) == 0;
        !          4907:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4908:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          4909:        regs.n = flgn != 0;
        !          4910:        put_long(dsta,newv);
        !          4911: }}}}}}
        !          4912: void op_5998(UWORD opcode)
        !          4913: {
        !          4914:        ULONG srcreg = 4;
        !          4915:        ULONG dstreg = (opcode & 7) >> 0;
        !          4916: {{     ULONG src = srcreg;
        !          4917: {      CPTR dsta = regs.a[dstreg];
        !          4918:        LONG dst = get_long(dsta);
        !          4919: {      regs.a[dstreg] += 4;
        !          4920: {      ULONG newv = dst - src;
        !          4921: {      bool flgs = ((LONG)(src)) < 0;
        !          4922:        bool flgo = ((LONG)(dst)) < 0;
        !          4923:        bool flgn = ((LONG)(newv)) < 0;
        !          4924:        regs.z = ((LONG)(newv)) == 0;
        !          4925:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4926:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          4927:        regs.n = flgn != 0;
        !          4928:        put_long(dsta,newv);
        !          4929: }}}}}}}
        !          4930: void op_59a0(UWORD opcode)
        !          4931: {
        !          4932:        ULONG srcreg = 4;
        !          4933:        ULONG dstreg = (opcode & 7) >> 0;
        !          4934: {{     ULONG src = srcreg;
        !          4935: {      regs.a[dstreg] -= 4;
        !          4936: {      CPTR dsta = regs.a[dstreg];
        !          4937:        LONG dst = get_long(dsta);
        !          4938: {      ULONG newv = dst - src;
        !          4939: {      bool flgs = ((LONG)(src)) < 0;
        !          4940:        bool flgo = ((LONG)(dst)) < 0;
        !          4941:        bool flgn = ((LONG)(newv)) < 0;
        !          4942:        regs.z = ((LONG)(newv)) == 0;
        !          4943:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4944:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          4945:        regs.n = flgn != 0;
        !          4946:        put_long(dsta,newv);
        !          4947: }}}}}}}
        !          4948: void op_59a8(UWORD opcode)
        !          4949: {
        !          4950:        ULONG srcreg = 4;
        !          4951:        ULONG dstreg = (opcode & 7) >> 0;
        !          4952: {{     ULONG src = srcreg;
        !          4953: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          4954:        LONG dst = get_long(dsta);
        !          4955: {      ULONG newv = dst - src;
        !          4956: {      bool flgs = ((LONG)(src)) < 0;
        !          4957:        bool flgo = ((LONG)(dst)) < 0;
        !          4958:        bool flgn = ((LONG)(newv)) < 0;
        !          4959:        regs.z = ((LONG)(newv)) == 0;
        !          4960:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4961:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          4962:        regs.n = flgn != 0;
        !          4963:        put_long(dsta,newv);
        !          4964: }}}}}}
        !          4965: void op_59b0(UWORD opcode)
        !          4966: {
        !          4967:        ULONG srcreg = 4;
        !          4968:        ULONG dstreg = (opcode & 7) >> 0;
        !          4969: {{     ULONG src = srcreg;
        !          4970: {      CPTR dsta = regs.a[dstreg];
        !          4971:        UWORD dstdp = nextiword();
        !          4972:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          4973: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          4974:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          4975:        dsta += dstdpr;
        !          4976: {      LONG dst = get_long(dsta);
        !          4977: {      ULONG newv = dst - src;
        !          4978: {      bool flgs = ((LONG)(src)) < 0;
        !          4979:        bool flgo = ((LONG)(dst)) < 0;
        !          4980:        bool flgn = ((LONG)(newv)) < 0;
        !          4981:        regs.z = ((LONG)(newv)) == 0;
        !          4982:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4983:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          4984:        regs.n = flgn != 0;
        !          4985:        put_long(dsta,newv);
        !          4986: }}}}}}}}
        !          4987: void op_59b8(UWORD opcode)
        !          4988: {
        !          4989:        ULONG srcreg = 4;
        !          4990: {{     ULONG src = srcreg;
        !          4991: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          4992:        LONG dst = get_long(dsta);
        !          4993: {      ULONG newv = dst - src;
        !          4994: {      bool flgs = ((LONG)(src)) < 0;
        !          4995:        bool flgo = ((LONG)(dst)) < 0;
        !          4996:        bool flgn = ((LONG)(newv)) < 0;
        !          4997:        regs.z = ((LONG)(newv)) == 0;
        !          4998:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          4999:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          5000:        regs.n = flgn != 0;
        !          5001:        put_long(dsta,newv);
        !          5002: }}}}}}
        !          5003: void op_59b9(UWORD opcode)
        !          5004: {
        !          5005:        ULONG srcreg = 4;
        !          5006: {{     ULONG src = srcreg;
        !          5007: {      CPTR dsta = nextilong();
        !          5008:        LONG dst = get_long(dsta);
        !          5009: {      ULONG newv = dst - src;
        !          5010: {      bool flgs = ((LONG)(src)) < 0;
        !          5011:        bool flgo = ((LONG)(dst)) < 0;
        !          5012:        bool flgn = ((LONG)(newv)) < 0;
        !          5013:        regs.z = ((LONG)(newv)) == 0;
        !          5014:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5015:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          5016:        regs.n = flgn != 0;
        !          5017:        put_long(dsta,newv);
        !          5018: }}}}}}
        !          5019: void op_59c0(UWORD opcode)
        !          5020: {
        !          5021:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5022: {{{    int val = cctrue(9) ? 0xff : 0;
        !          5023:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          5024: }}}}
        !          5025: void op_59c8(UWORD opcode)
        !          5026: {
        !          5027:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5028: {{     WORD src = regs.d[srcreg];
        !          5029: {      WORD offs = nextiword();
        !          5030:        if (!cctrue(9)) {
        !          5031:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          5032:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          5033:        }
        !          5034: }}}}
        !          5035: void op_59d0(UWORD opcode)
        !          5036: {
        !          5037:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5038: {{     CPTR srca = regs.a[srcreg];
        !          5039: {      int val = cctrue(9) ? 0xff : 0;
        !          5040:        put_byte(srca,val);
        !          5041: }}}}
        !          5042: void op_59d8(UWORD opcode)
        !          5043: {
        !          5044:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5045: {{     CPTR srca = regs.a[srcreg];
        !          5046: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          5047: {      int val = cctrue(9) ? 0xff : 0;
        !          5048:        put_byte(srca,val);
        !          5049: }}}}}
        !          5050: void op_59e0(UWORD opcode)
        !          5051: {
        !          5052:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5053: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          5054: {      CPTR srca = regs.a[srcreg];
        !          5055: {      int val = cctrue(9) ? 0xff : 0;
        !          5056:        put_byte(srca,val);
        !          5057: }}}}}
        !          5058: void op_59e8(UWORD opcode)
        !          5059: {
        !          5060:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5061: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          5062: {      int val = cctrue(9) ? 0xff : 0;
        !          5063:        put_byte(srca,val);
        !          5064: }}}}
        !          5065: void op_59f0(UWORD opcode)
        !          5066: {
        !          5067:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5068: {{     CPTR srca = regs.a[srcreg];
        !          5069:        UWORD srcdp = nextiword();
        !          5070:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          5071: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          5072:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          5073:        srca += srcdpr;
        !          5074: {      int val = cctrue(9) ? 0xff : 0;
        !          5075:        put_byte(srca,val);
        !          5076: }}}}}
        !          5077: void op_59f8(UWORD opcode)
        !          5078: {
        !          5079: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          5080: {      int val = cctrue(9) ? 0xff : 0;
        !          5081:        put_byte(srca,val);
        !          5082: }}}}
        !          5083: void op_59f9(UWORD opcode)
        !          5084: {
        !          5085: {{     CPTR srca = nextilong();
        !          5086: {      int val = cctrue(9) ? 0xff : 0;
        !          5087:        put_byte(srca,val);
        !          5088: }}}}
        !          5089: void op_5a00(UWORD opcode)
        !          5090: {
        !          5091:        ULONG srcreg = 5;
        !          5092:        ULONG dstreg = (opcode & 7) >> 0;
        !          5093: {{     ULONG src = srcreg;
        !          5094: {      BYTE dst = regs.d[dstreg];
        !          5095: {      ULONG newv = dst + src;
        !          5096: {      bool flgs = ((BYTE)(src)) < 0;
        !          5097:        bool flgo = ((BYTE)(dst)) < 0;
        !          5098:        bool flgn = ((BYTE)(newv)) < 0;
        !          5099:        regs.z = ((BYTE)(newv)) == 0;
        !          5100:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5101:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          5102:        regs.n = flgn != 0;
        !          5103:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          5104: }}}}}}
        !          5105: void op_5a10(UWORD opcode)
        !          5106: {
        !          5107:        ULONG srcreg = 5;
        !          5108:        ULONG dstreg = (opcode & 7) >> 0;
        !          5109: {{     ULONG src = srcreg;
        !          5110: {      CPTR dsta = regs.a[dstreg];
        !          5111:        BYTE dst = get_byte(dsta);
        !          5112: {      ULONG newv = dst + src;
        !          5113: {      bool flgs = ((BYTE)(src)) < 0;
        !          5114:        bool flgo = ((BYTE)(dst)) < 0;
        !          5115:        bool flgn = ((BYTE)(newv)) < 0;
        !          5116:        regs.z = ((BYTE)(newv)) == 0;
        !          5117:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5118:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          5119:        regs.n = flgn != 0;
        !          5120:        put_byte(dsta,newv);
        !          5121: }}}}}}
        !          5122: void op_5a18(UWORD opcode)
        !          5123: {
        !          5124:        ULONG srcreg = 5;
        !          5125:        ULONG dstreg = (opcode & 7) >> 0;
        !          5126: {{     ULONG src = srcreg;
        !          5127: {      CPTR dsta = regs.a[dstreg];
        !          5128:        BYTE dst = get_byte(dsta);
        !          5129: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          5130: {      ULONG newv = dst + src;
        !          5131: {      bool flgs = ((BYTE)(src)) < 0;
        !          5132:        bool flgo = ((BYTE)(dst)) < 0;
        !          5133:        bool flgn = ((BYTE)(newv)) < 0;
        !          5134:        regs.z = ((BYTE)(newv)) == 0;
        !          5135:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5136:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          5137:        regs.n = flgn != 0;
        !          5138:        put_byte(dsta,newv);
        !          5139: }}}}}}}
        !          5140: void op_5a20(UWORD opcode)
        !          5141: {
        !          5142:        ULONG srcreg = 5;
        !          5143:        ULONG dstreg = (opcode & 7) >> 0;
        !          5144: {{     ULONG src = srcreg;
        !          5145: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          5146: {      CPTR dsta = regs.a[dstreg];
        !          5147:        BYTE dst = get_byte(dsta);
        !          5148: {      ULONG newv = dst + src;
        !          5149: {      bool flgs = ((BYTE)(src)) < 0;
        !          5150:        bool flgo = ((BYTE)(dst)) < 0;
        !          5151:        bool flgn = ((BYTE)(newv)) < 0;
        !          5152:        regs.z = ((BYTE)(newv)) == 0;
        !          5153:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5154:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          5155:        regs.n = flgn != 0;
        !          5156:        put_byte(dsta,newv);
        !          5157: }}}}}}}
        !          5158: void op_5a28(UWORD opcode)
        !          5159: {
        !          5160:        ULONG srcreg = 5;
        !          5161:        ULONG dstreg = (opcode & 7) >> 0;
        !          5162: {{     ULONG src = srcreg;
        !          5163: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          5164:        BYTE dst = get_byte(dsta);
        !          5165: {      ULONG newv = dst + src;
        !          5166: {      bool flgs = ((BYTE)(src)) < 0;
        !          5167:        bool flgo = ((BYTE)(dst)) < 0;
        !          5168:        bool flgn = ((BYTE)(newv)) < 0;
        !          5169:        regs.z = ((BYTE)(newv)) == 0;
        !          5170:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5171:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          5172:        regs.n = flgn != 0;
        !          5173:        put_byte(dsta,newv);
        !          5174: }}}}}}
        !          5175: void op_5a30(UWORD opcode)
        !          5176: {
        !          5177:        ULONG srcreg = 5;
        !          5178:        ULONG dstreg = (opcode & 7) >> 0;
        !          5179: {{     ULONG src = srcreg;
        !          5180: {      CPTR dsta = regs.a[dstreg];
        !          5181:        UWORD dstdp = nextiword();
        !          5182:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          5183: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          5184:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          5185:        dsta += dstdpr;
        !          5186: {      BYTE dst = get_byte(dsta);
        !          5187: {      ULONG newv = dst + src;
        !          5188: {      bool flgs = ((BYTE)(src)) < 0;
        !          5189:        bool flgo = ((BYTE)(dst)) < 0;
        !          5190:        bool flgn = ((BYTE)(newv)) < 0;
        !          5191:        regs.z = ((BYTE)(newv)) == 0;
        !          5192:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5193:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          5194:        regs.n = flgn != 0;
        !          5195:        put_byte(dsta,newv);
        !          5196: }}}}}}}}
        !          5197: void op_5a38(UWORD opcode)
        !          5198: {
        !          5199:        ULONG srcreg = 5;
        !          5200: {{     ULONG src = srcreg;
        !          5201: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          5202:        BYTE dst = get_byte(dsta);
        !          5203: {      ULONG newv = dst + src;
        !          5204: {      bool flgs = ((BYTE)(src)) < 0;
        !          5205:        bool flgo = ((BYTE)(dst)) < 0;
        !          5206:        bool flgn = ((BYTE)(newv)) < 0;
        !          5207:        regs.z = ((BYTE)(newv)) == 0;
        !          5208:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5209:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          5210:        regs.n = flgn != 0;
        !          5211:        put_byte(dsta,newv);
        !          5212: }}}}}}
        !          5213: void op_5a39(UWORD opcode)
        !          5214: {
        !          5215:        ULONG srcreg = 5;
        !          5216: {{     ULONG src = srcreg;
        !          5217: {      CPTR dsta = nextilong();
        !          5218:        BYTE dst = get_byte(dsta);
        !          5219: {      ULONG newv = dst + src;
        !          5220: {      bool flgs = ((BYTE)(src)) < 0;
        !          5221:        bool flgo = ((BYTE)(dst)) < 0;
        !          5222:        bool flgn = ((BYTE)(newv)) < 0;
        !          5223:        regs.z = ((BYTE)(newv)) == 0;
        !          5224:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5225:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          5226:        regs.n = flgn != 0;
        !          5227:        put_byte(dsta,newv);
        !          5228: }}}}}}
        !          5229: void op_5a40(UWORD opcode)
        !          5230: {
        !          5231:        ULONG srcreg = 5;
        !          5232:        ULONG dstreg = (opcode & 7) >> 0;
        !          5233: {{     ULONG src = srcreg;
        !          5234: {      WORD dst = regs.d[dstreg];
        !          5235: {      ULONG newv = dst + src;
        !          5236: {      bool flgs = ((WORD)(src)) < 0;
        !          5237:        bool flgo = ((WORD)(dst)) < 0;
        !          5238:        bool flgn = ((WORD)(newv)) < 0;
        !          5239:        regs.z = ((WORD)(newv)) == 0;
        !          5240:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5241:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          5242:        regs.n = flgn != 0;
        !          5243:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          5244: }}}}}}
        !          5245: void op_5a48(UWORD opcode)
        !          5246: {
        !          5247:        ULONG srcreg = 5;
        !          5248:        ULONG dstreg = (opcode & 7) >> 0;
        !          5249: {{     ULONG src = srcreg;
        !          5250: {      LONG dst = regs.a[dstreg];
        !          5251: {      ULONG newv = dst + src;
        !          5252:        regs.a[dstreg] = (newv);
        !          5253: }}}}}
        !          5254: void op_5a50(UWORD opcode)
        !          5255: {
        !          5256:        ULONG srcreg = 5;
        !          5257:        ULONG dstreg = (opcode & 7) >> 0;
        !          5258: {{     ULONG src = srcreg;
        !          5259: {      CPTR dsta = regs.a[dstreg];
        !          5260:        WORD dst = get_word(dsta);
        !          5261: {      ULONG newv = dst + src;
        !          5262: {      bool flgs = ((WORD)(src)) < 0;
        !          5263:        bool flgo = ((WORD)(dst)) < 0;
        !          5264:        bool flgn = ((WORD)(newv)) < 0;
        !          5265:        regs.z = ((WORD)(newv)) == 0;
        !          5266:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5267:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          5268:        regs.n = flgn != 0;
        !          5269:        put_word(dsta,newv);
        !          5270: }}}}}}
        !          5271: void op_5a58(UWORD opcode)
        !          5272: {
        !          5273:        ULONG srcreg = 5;
        !          5274:        ULONG dstreg = (opcode & 7) >> 0;
        !          5275: {{     ULONG src = srcreg;
        !          5276: {      CPTR dsta = regs.a[dstreg];
        !          5277:        WORD dst = get_word(dsta);
        !          5278: {      regs.a[dstreg] += 2;
        !          5279: {      ULONG newv = dst + src;
        !          5280: {      bool flgs = ((WORD)(src)) < 0;
        !          5281:        bool flgo = ((WORD)(dst)) < 0;
        !          5282:        bool flgn = ((WORD)(newv)) < 0;
        !          5283:        regs.z = ((WORD)(newv)) == 0;
        !          5284:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5285:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          5286:        regs.n = flgn != 0;
        !          5287:        put_word(dsta,newv);
        !          5288: }}}}}}}
        !          5289: void op_5a60(UWORD opcode)
        !          5290: {
        !          5291:        ULONG srcreg = 5;
        !          5292:        ULONG dstreg = (opcode & 7) >> 0;
        !          5293: {{     ULONG src = srcreg;
        !          5294: {      regs.a[dstreg] -= 2;
        !          5295: {      CPTR dsta = regs.a[dstreg];
        !          5296:        WORD dst = get_word(dsta);
        !          5297: {      ULONG newv = dst + src;
        !          5298: {      bool flgs = ((WORD)(src)) < 0;
        !          5299:        bool flgo = ((WORD)(dst)) < 0;
        !          5300:        bool flgn = ((WORD)(newv)) < 0;
        !          5301:        regs.z = ((WORD)(newv)) == 0;
        !          5302:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5303:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          5304:        regs.n = flgn != 0;
        !          5305:        put_word(dsta,newv);
        !          5306: }}}}}}}
        !          5307: void op_5a68(UWORD opcode)
        !          5308: {
        !          5309:        ULONG srcreg = 5;
        !          5310:        ULONG dstreg = (opcode & 7) >> 0;
        !          5311: {{     ULONG src = srcreg;
        !          5312: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          5313:        WORD dst = get_word(dsta);
        !          5314: {      ULONG newv = dst + src;
        !          5315: {      bool flgs = ((WORD)(src)) < 0;
        !          5316:        bool flgo = ((WORD)(dst)) < 0;
        !          5317:        bool flgn = ((WORD)(newv)) < 0;
        !          5318:        regs.z = ((WORD)(newv)) == 0;
        !          5319:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5320:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          5321:        regs.n = flgn != 0;
        !          5322:        put_word(dsta,newv);
        !          5323: }}}}}}
        !          5324: void op_5a70(UWORD opcode)
        !          5325: {
        !          5326:        ULONG srcreg = 5;
        !          5327:        ULONG dstreg = (opcode & 7) >> 0;
        !          5328: {{     ULONG src = srcreg;
        !          5329: {      CPTR dsta = regs.a[dstreg];
        !          5330:        UWORD dstdp = nextiword();
        !          5331:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          5332: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          5333:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          5334:        dsta += dstdpr;
        !          5335: {      WORD dst = get_word(dsta);
        !          5336: {      ULONG newv = dst + src;
        !          5337: {      bool flgs = ((WORD)(src)) < 0;
        !          5338:        bool flgo = ((WORD)(dst)) < 0;
        !          5339:        bool flgn = ((WORD)(newv)) < 0;
        !          5340:        regs.z = ((WORD)(newv)) == 0;
        !          5341:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5342:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          5343:        regs.n = flgn != 0;
        !          5344:        put_word(dsta,newv);
        !          5345: }}}}}}}}
        !          5346: void op_5a78(UWORD opcode)
        !          5347: {
        !          5348:        ULONG srcreg = 5;
        !          5349: {{     ULONG src = srcreg;
        !          5350: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          5351:        WORD dst = get_word(dsta);
        !          5352: {      ULONG newv = dst + src;
        !          5353: {      bool flgs = ((WORD)(src)) < 0;
        !          5354:        bool flgo = ((WORD)(dst)) < 0;
        !          5355:        bool flgn = ((WORD)(newv)) < 0;
        !          5356:        regs.z = ((WORD)(newv)) == 0;
        !          5357:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5358:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          5359:        regs.n = flgn != 0;
        !          5360:        put_word(dsta,newv);
        !          5361: }}}}}}
        !          5362: void op_5a79(UWORD opcode)
        !          5363: {
        !          5364:        ULONG srcreg = 5;
        !          5365: {{     ULONG src = srcreg;
        !          5366: {      CPTR dsta = nextilong();
        !          5367:        WORD dst = get_word(dsta);
        !          5368: {      ULONG newv = dst + src;
        !          5369: {      bool flgs = ((WORD)(src)) < 0;
        !          5370:        bool flgo = ((WORD)(dst)) < 0;
        !          5371:        bool flgn = ((WORD)(newv)) < 0;
        !          5372:        regs.z = ((WORD)(newv)) == 0;
        !          5373:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5374:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          5375:        regs.n = flgn != 0;
        !          5376:        put_word(dsta,newv);
        !          5377: }}}}}}
        !          5378: void op_5a80(UWORD opcode)
        !          5379: {
        !          5380:        ULONG srcreg = 5;
        !          5381:        ULONG dstreg = (opcode & 7) >> 0;
        !          5382: {{     ULONG src = srcreg;
        !          5383: {      LONG dst = regs.d[dstreg];
        !          5384: {      ULONG newv = dst + src;
        !          5385: {      bool flgs = ((LONG)(src)) < 0;
        !          5386:        bool flgo = ((LONG)(dst)) < 0;
        !          5387:        bool flgn = ((LONG)(newv)) < 0;
        !          5388:        regs.z = ((LONG)(newv)) == 0;
        !          5389:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5390:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          5391:        regs.n = flgn != 0;
        !          5392:        regs.d[dstreg] = (newv);
        !          5393: }}}}}}
        !          5394: void op_5a88(UWORD opcode)
        !          5395: {
        !          5396:        ULONG srcreg = 5;
        !          5397:        ULONG dstreg = (opcode & 7) >> 0;
        !          5398: {{     ULONG src = srcreg;
        !          5399: {      LONG dst = regs.a[dstreg];
        !          5400: {      ULONG newv = dst + src;
        !          5401:        regs.a[dstreg] = (newv);
        !          5402: }}}}}
        !          5403: void op_5a90(UWORD opcode)
        !          5404: {
        !          5405:        ULONG srcreg = 5;
        !          5406:        ULONG dstreg = (opcode & 7) >> 0;
        !          5407: {{     ULONG src = srcreg;
        !          5408: {      CPTR dsta = regs.a[dstreg];
        !          5409:        LONG dst = get_long(dsta);
        !          5410: {      ULONG newv = dst + src;
        !          5411: {      bool flgs = ((LONG)(src)) < 0;
        !          5412:        bool flgo = ((LONG)(dst)) < 0;
        !          5413:        bool flgn = ((LONG)(newv)) < 0;
        !          5414:        regs.z = ((LONG)(newv)) == 0;
        !          5415:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5416:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          5417:        regs.n = flgn != 0;
        !          5418:        put_long(dsta,newv);
        !          5419: }}}}}}
        !          5420: void op_5a98(UWORD opcode)
        !          5421: {
        !          5422:        ULONG srcreg = 5;
        !          5423:        ULONG dstreg = (opcode & 7) >> 0;
        !          5424: {{     ULONG src = srcreg;
        !          5425: {      CPTR dsta = regs.a[dstreg];
        !          5426:        LONG dst = get_long(dsta);
        !          5427: {      regs.a[dstreg] += 4;
        !          5428: {      ULONG newv = dst + src;
        !          5429: {      bool flgs = ((LONG)(src)) < 0;
        !          5430:        bool flgo = ((LONG)(dst)) < 0;
        !          5431:        bool flgn = ((LONG)(newv)) < 0;
        !          5432:        regs.z = ((LONG)(newv)) == 0;
        !          5433:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5434:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          5435:        regs.n = flgn != 0;
        !          5436:        put_long(dsta,newv);
        !          5437: }}}}}}}
        !          5438: void op_5aa0(UWORD opcode)
        !          5439: {
        !          5440:        ULONG srcreg = 5;
        !          5441:        ULONG dstreg = (opcode & 7) >> 0;
        !          5442: {{     ULONG src = srcreg;
        !          5443: {      regs.a[dstreg] -= 4;
        !          5444: {      CPTR dsta = regs.a[dstreg];
        !          5445:        LONG dst = get_long(dsta);
        !          5446: {      ULONG newv = dst + src;
        !          5447: {      bool flgs = ((LONG)(src)) < 0;
        !          5448:        bool flgo = ((LONG)(dst)) < 0;
        !          5449:        bool flgn = ((LONG)(newv)) < 0;
        !          5450:        regs.z = ((LONG)(newv)) == 0;
        !          5451:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5452:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          5453:        regs.n = flgn != 0;
        !          5454:        put_long(dsta,newv);
        !          5455: }}}}}}}
        !          5456: void op_5aa8(UWORD opcode)
        !          5457: {
        !          5458:        ULONG srcreg = 5;
        !          5459:        ULONG dstreg = (opcode & 7) >> 0;
        !          5460: {{     ULONG src = srcreg;
        !          5461: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          5462:        LONG dst = get_long(dsta);
        !          5463: {      ULONG newv = dst + src;
        !          5464: {      bool flgs = ((LONG)(src)) < 0;
        !          5465:        bool flgo = ((LONG)(dst)) < 0;
        !          5466:        bool flgn = ((LONG)(newv)) < 0;
        !          5467:        regs.z = ((LONG)(newv)) == 0;
        !          5468:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5469:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          5470:        regs.n = flgn != 0;
        !          5471:        put_long(dsta,newv);
        !          5472: }}}}}}
        !          5473: void op_5ab0(UWORD opcode)
        !          5474: {
        !          5475:        ULONG srcreg = 5;
        !          5476:        ULONG dstreg = (opcode & 7) >> 0;
        !          5477: {{     ULONG src = srcreg;
        !          5478: {      CPTR dsta = regs.a[dstreg];
        !          5479:        UWORD dstdp = nextiword();
        !          5480:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          5481: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          5482:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          5483:        dsta += dstdpr;
        !          5484: {      LONG dst = get_long(dsta);
        !          5485: {      ULONG newv = dst + src;
        !          5486: {      bool flgs = ((LONG)(src)) < 0;
        !          5487:        bool flgo = ((LONG)(dst)) < 0;
        !          5488:        bool flgn = ((LONG)(newv)) < 0;
        !          5489:        regs.z = ((LONG)(newv)) == 0;
        !          5490:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5491:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          5492:        regs.n = flgn != 0;
        !          5493:        put_long(dsta,newv);
        !          5494: }}}}}}}}
        !          5495: void op_5ab8(UWORD opcode)
        !          5496: {
        !          5497:        ULONG srcreg = 5;
        !          5498: {{     ULONG src = srcreg;
        !          5499: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          5500:        LONG dst = get_long(dsta);
        !          5501: {      ULONG newv = dst + src;
        !          5502: {      bool flgs = ((LONG)(src)) < 0;
        !          5503:        bool flgo = ((LONG)(dst)) < 0;
        !          5504:        bool flgn = ((LONG)(newv)) < 0;
        !          5505:        regs.z = ((LONG)(newv)) == 0;
        !          5506:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5507:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          5508:        regs.n = flgn != 0;
        !          5509:        put_long(dsta,newv);
        !          5510: }}}}}}
        !          5511: void op_5ab9(UWORD opcode)
        !          5512: {
        !          5513:        ULONG srcreg = 5;
        !          5514: {{     ULONG src = srcreg;
        !          5515: {      CPTR dsta = nextilong();
        !          5516:        LONG dst = get_long(dsta);
        !          5517: {      ULONG newv = dst + src;
        !          5518: {      bool flgs = ((LONG)(src)) < 0;
        !          5519:        bool flgo = ((LONG)(dst)) < 0;
        !          5520:        bool flgn = ((LONG)(newv)) < 0;
        !          5521:        regs.z = ((LONG)(newv)) == 0;
        !          5522:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          5523:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          5524:        regs.n = flgn != 0;
        !          5525:        put_long(dsta,newv);
        !          5526: }}}}}}
        !          5527: void op_5ac0(UWORD opcode)
        !          5528: {
        !          5529:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5530: {{{    int val = cctrue(10) ? 0xff : 0;
        !          5531:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          5532: }}}}
        !          5533: void op_5ac8(UWORD opcode)
        !          5534: {
        !          5535:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5536: {{     WORD src = regs.d[srcreg];
        !          5537: {      WORD offs = nextiword();
        !          5538:        if (!cctrue(10)) {
        !          5539:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          5540:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          5541:        }
        !          5542: }}}}
        !          5543: void op_5ad0(UWORD opcode)
        !          5544: {
        !          5545:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5546: {{     CPTR srca = regs.a[srcreg];
        !          5547: {      int val = cctrue(10) ? 0xff : 0;
        !          5548:        put_byte(srca,val);
        !          5549: }}}}
        !          5550: void op_5ad8(UWORD opcode)
        !          5551: {
        !          5552:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5553: {{     CPTR srca = regs.a[srcreg];
        !          5554: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          5555: {      int val = cctrue(10) ? 0xff : 0;
        !          5556:        put_byte(srca,val);
        !          5557: }}}}}
        !          5558: void op_5ae0(UWORD opcode)
        !          5559: {
        !          5560:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5561: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          5562: {      CPTR srca = regs.a[srcreg];
        !          5563: {      int val = cctrue(10) ? 0xff : 0;
        !          5564:        put_byte(srca,val);
        !          5565: }}}}}
        !          5566: void op_5ae8(UWORD opcode)
        !          5567: {
        !          5568:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5569: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          5570: {      int val = cctrue(10) ? 0xff : 0;
        !          5571:        put_byte(srca,val);
        !          5572: }}}}
        !          5573: void op_5af0(UWORD opcode)
        !          5574: {
        !          5575:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          5576: {{     CPTR srca = regs.a[srcreg];
        !          5577:        UWORD srcdp = nextiword();
        !          5578:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          5579: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          5580:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          5581:        srca += srcdpr;
        !          5582: {      int val = cctrue(10) ? 0xff : 0;
        !          5583:        put_byte(srca,val);
        !          5584: }}}}}
        !          5585: void op_5af8(UWORD opcode)
        !          5586: {
        !          5587: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          5588: {      int val = cctrue(10) ? 0xff : 0;
        !          5589:        put_byte(srca,val);
        !          5590: }}}}
        !          5591: void op_5af9(UWORD opcode)
        !          5592: {
        !          5593: {{     CPTR srca = nextilong();
        !          5594: {      int val = cctrue(10) ? 0xff : 0;
        !          5595:        put_byte(srca,val);
        !          5596: }}}}
        !          5597: void op_5b00(UWORD opcode)
        !          5598: {
        !          5599:        ULONG srcreg = 5;
        !          5600:        ULONG dstreg = (opcode & 7) >> 0;
        !          5601: {{     ULONG src = srcreg;
        !          5602: {      BYTE dst = regs.d[dstreg];
        !          5603: {      ULONG newv = dst - src;
        !          5604: {      bool flgs = ((BYTE)(src)) < 0;
        !          5605:        bool flgo = ((BYTE)(dst)) < 0;
        !          5606:        bool flgn = ((BYTE)(newv)) < 0;
        !          5607:        regs.z = ((BYTE)(newv)) == 0;
        !          5608:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5609:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          5610:        regs.n = flgn != 0;
        !          5611:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          5612: }}}}}}
        !          5613: void op_5b10(UWORD opcode)
        !          5614: {
        !          5615:        ULONG srcreg = 5;
        !          5616:        ULONG dstreg = (opcode & 7) >> 0;
        !          5617: {{     ULONG src = srcreg;
        !          5618: {      CPTR dsta = regs.a[dstreg];
        !          5619:        BYTE dst = get_byte(dsta);
        !          5620: {      ULONG newv = dst - src;
        !          5621: {      bool flgs = ((BYTE)(src)) < 0;
        !          5622:        bool flgo = ((BYTE)(dst)) < 0;
        !          5623:        bool flgn = ((BYTE)(newv)) < 0;
        !          5624:        regs.z = ((BYTE)(newv)) == 0;
        !          5625:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5626:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          5627:        regs.n = flgn != 0;
        !          5628:        put_byte(dsta,newv);
        !          5629: }}}}}}
        !          5630: void op_5b18(UWORD opcode)
        !          5631: {
        !          5632:        ULONG srcreg = 5;
        !          5633:        ULONG dstreg = (opcode & 7) >> 0;
        !          5634: {{     ULONG src = srcreg;
        !          5635: {      CPTR dsta = regs.a[dstreg];
        !          5636:        BYTE dst = get_byte(dsta);
        !          5637: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          5638: {      ULONG newv = dst - src;
        !          5639: {      bool flgs = ((BYTE)(src)) < 0;
        !          5640:        bool flgo = ((BYTE)(dst)) < 0;
        !          5641:        bool flgn = ((BYTE)(newv)) < 0;
        !          5642:        regs.z = ((BYTE)(newv)) == 0;
        !          5643:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5644:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          5645:        regs.n = flgn != 0;
        !          5646:        put_byte(dsta,newv);
        !          5647: }}}}}}}
        !          5648: void op_5b20(UWORD opcode)
        !          5649: {
        !          5650:        ULONG srcreg = 5;
        !          5651:        ULONG dstreg = (opcode & 7) >> 0;
        !          5652: {{     ULONG src = srcreg;
        !          5653: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          5654: {      CPTR dsta = regs.a[dstreg];
        !          5655:        BYTE dst = get_byte(dsta);
        !          5656: {      ULONG newv = dst - src;
        !          5657: {      bool flgs = ((BYTE)(src)) < 0;
        !          5658:        bool flgo = ((BYTE)(dst)) < 0;
        !          5659:        bool flgn = ((BYTE)(newv)) < 0;
        !          5660:        regs.z = ((BYTE)(newv)) == 0;
        !          5661:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5662:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          5663:        regs.n = flgn != 0;
        !          5664:        put_byte(dsta,newv);
        !          5665: }}}}}}}
        !          5666: void op_5b28(UWORD opcode)
        !          5667: {
        !          5668:        ULONG srcreg = 5;
        !          5669:        ULONG dstreg = (opcode & 7) >> 0;
        !          5670: {{     ULONG src = srcreg;
        !          5671: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          5672:        BYTE dst = get_byte(dsta);
        !          5673: {      ULONG newv = dst - src;
        !          5674: {      bool flgs = ((BYTE)(src)) < 0;
        !          5675:        bool flgo = ((BYTE)(dst)) < 0;
        !          5676:        bool flgn = ((BYTE)(newv)) < 0;
        !          5677:        regs.z = ((BYTE)(newv)) == 0;
        !          5678:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5679:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          5680:        regs.n = flgn != 0;
        !          5681:        put_byte(dsta,newv);
        !          5682: }}}}}}
        !          5683: void op_5b30(UWORD opcode)
        !          5684: {
        !          5685:        ULONG srcreg = 5;
        !          5686:        ULONG dstreg = (opcode & 7) >> 0;
        !          5687: {{     ULONG src = srcreg;
        !          5688: {      CPTR dsta = regs.a[dstreg];
        !          5689:        UWORD dstdp = nextiword();
        !          5690:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          5691: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          5692:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          5693:        dsta += dstdpr;
        !          5694: {      BYTE dst = get_byte(dsta);
        !          5695: {      ULONG newv = dst - src;
        !          5696: {      bool flgs = ((BYTE)(src)) < 0;
        !          5697:        bool flgo = ((BYTE)(dst)) < 0;
        !          5698:        bool flgn = ((BYTE)(newv)) < 0;
        !          5699:        regs.z = ((BYTE)(newv)) == 0;
        !          5700:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5701:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          5702:        regs.n = flgn != 0;
        !          5703:        put_byte(dsta,newv);
        !          5704: }}}}}}}}
        !          5705: void op_5b38(UWORD opcode)
        !          5706: {
        !          5707:        ULONG srcreg = 5;
        !          5708: {{     ULONG src = srcreg;
        !          5709: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          5710:        BYTE dst = get_byte(dsta);
        !          5711: {      ULONG newv = dst - src;
        !          5712: {      bool flgs = ((BYTE)(src)) < 0;
        !          5713:        bool flgo = ((BYTE)(dst)) < 0;
        !          5714:        bool flgn = ((BYTE)(newv)) < 0;
        !          5715:        regs.z = ((BYTE)(newv)) == 0;
        !          5716:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5717:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          5718:        regs.n = flgn != 0;
        !          5719:        put_byte(dsta,newv);
        !          5720: }}}}}}
        !          5721: void op_5b39(UWORD opcode)
        !          5722: {
        !          5723:        ULONG srcreg = 5;
        !          5724: {{     ULONG src = srcreg;
        !          5725: {      CPTR dsta = nextilong();
        !          5726:        BYTE dst = get_byte(dsta);
        !          5727: {      ULONG newv = dst - src;
        !          5728: {      bool flgs = ((BYTE)(src)) < 0;
        !          5729:        bool flgo = ((BYTE)(dst)) < 0;
        !          5730:        bool flgn = ((BYTE)(newv)) < 0;
        !          5731:        regs.z = ((BYTE)(newv)) == 0;
        !          5732:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5733:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          5734:        regs.n = flgn != 0;
        !          5735:        put_byte(dsta,newv);
        !          5736: }}}}}}
        !          5737: void op_5b40(UWORD opcode)
        !          5738: {
        !          5739:        ULONG srcreg = 5;
        !          5740:        ULONG dstreg = (opcode & 7) >> 0;
        !          5741: {{     ULONG src = srcreg;
        !          5742: {      WORD dst = regs.d[dstreg];
        !          5743: {      ULONG newv = dst - src;
        !          5744: {      bool flgs = ((WORD)(src)) < 0;
        !          5745:        bool flgo = ((WORD)(dst)) < 0;
        !          5746:        bool flgn = ((WORD)(newv)) < 0;
        !          5747:        regs.z = ((WORD)(newv)) == 0;
        !          5748:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5749:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          5750:        regs.n = flgn != 0;
        !          5751:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          5752: }}}}}}
        !          5753: void op_5b48(UWORD opcode)
        !          5754: {
        !          5755:        ULONG srcreg = 5;
        !          5756:        ULONG dstreg = (opcode & 7) >> 0;
        !          5757: {{     ULONG src = srcreg;
        !          5758: {      LONG dst = regs.a[dstreg];
        !          5759: {      ULONG newv = dst - src;
        !          5760:        regs.a[dstreg] = (newv);
        !          5761: }}}}}
        !          5762: void op_5b50(UWORD opcode)
        !          5763: {
        !          5764:        ULONG srcreg = 5;
        !          5765:        ULONG dstreg = (opcode & 7) >> 0;
        !          5766: {{     ULONG src = srcreg;
        !          5767: {      CPTR dsta = regs.a[dstreg];
        !          5768:        WORD dst = get_word(dsta);
        !          5769: {      ULONG newv = dst - src;
        !          5770: {      bool flgs = ((WORD)(src)) < 0;
        !          5771:        bool flgo = ((WORD)(dst)) < 0;
        !          5772:        bool flgn = ((WORD)(newv)) < 0;
        !          5773:        regs.z = ((WORD)(newv)) == 0;
        !          5774:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5775:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          5776:        regs.n = flgn != 0;
        !          5777:        put_word(dsta,newv);
        !          5778: }}}}}}
        !          5779: void op_5b58(UWORD opcode)
        !          5780: {
        !          5781:        ULONG srcreg = 5;
        !          5782:        ULONG dstreg = (opcode & 7) >> 0;
        !          5783: {{     ULONG src = srcreg;
        !          5784: {      CPTR dsta = regs.a[dstreg];
        !          5785:        WORD dst = get_word(dsta);
        !          5786: {      regs.a[dstreg] += 2;
        !          5787: {      ULONG newv = dst - src;
        !          5788: {      bool flgs = ((WORD)(src)) < 0;
        !          5789:        bool flgo = ((WORD)(dst)) < 0;
        !          5790:        bool flgn = ((WORD)(newv)) < 0;
        !          5791:        regs.z = ((WORD)(newv)) == 0;
        !          5792:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5793:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          5794:        regs.n = flgn != 0;
        !          5795:        put_word(dsta,newv);
        !          5796: }}}}}}}
        !          5797: void op_5b60(UWORD opcode)
        !          5798: {
        !          5799:        ULONG srcreg = 5;
        !          5800:        ULONG dstreg = (opcode & 7) >> 0;
        !          5801: {{     ULONG src = srcreg;
        !          5802: {      regs.a[dstreg] -= 2;
        !          5803: {      CPTR dsta = regs.a[dstreg];
        !          5804:        WORD dst = get_word(dsta);
        !          5805: {      ULONG newv = dst - src;
        !          5806: {      bool flgs = ((WORD)(src)) < 0;
        !          5807:        bool flgo = ((WORD)(dst)) < 0;
        !          5808:        bool flgn = ((WORD)(newv)) < 0;
        !          5809:        regs.z = ((WORD)(newv)) == 0;
        !          5810:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5811:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          5812:        regs.n = flgn != 0;
        !          5813:        put_word(dsta,newv);
        !          5814: }}}}}}}
        !          5815: void op_5b68(UWORD opcode)
        !          5816: {
        !          5817:        ULONG srcreg = 5;
        !          5818:        ULONG dstreg = (opcode & 7) >> 0;
        !          5819: {{     ULONG src = srcreg;
        !          5820: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          5821:        WORD dst = get_word(dsta);
        !          5822: {      ULONG newv = dst - src;
        !          5823: {      bool flgs = ((WORD)(src)) < 0;
        !          5824:        bool flgo = ((WORD)(dst)) < 0;
        !          5825:        bool flgn = ((WORD)(newv)) < 0;
        !          5826:        regs.z = ((WORD)(newv)) == 0;
        !          5827:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5828:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          5829:        regs.n = flgn != 0;
        !          5830:        put_word(dsta,newv);
        !          5831: }}}}}}
        !          5832: void op_5b70(UWORD opcode)
        !          5833: {
        !          5834:        ULONG srcreg = 5;
        !          5835:        ULONG dstreg = (opcode & 7) >> 0;
        !          5836: {{     ULONG src = srcreg;
        !          5837: {      CPTR dsta = regs.a[dstreg];
        !          5838:        UWORD dstdp = nextiword();
        !          5839:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          5840: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          5841:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          5842:        dsta += dstdpr;
        !          5843: {      WORD dst = get_word(dsta);
        !          5844: {      ULONG newv = dst - src;
        !          5845: {      bool flgs = ((WORD)(src)) < 0;
        !          5846:        bool flgo = ((WORD)(dst)) < 0;
        !          5847:        bool flgn = ((WORD)(newv)) < 0;
        !          5848:        regs.z = ((WORD)(newv)) == 0;
        !          5849:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5850:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          5851:        regs.n = flgn != 0;
        !          5852:        put_word(dsta,newv);
        !          5853: }}}}}}}}
        !          5854: void op_5b78(UWORD opcode)
        !          5855: {
        !          5856:        ULONG srcreg = 5;
        !          5857: {{     ULONG src = srcreg;
        !          5858: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          5859:        WORD dst = get_word(dsta);
        !          5860: {      ULONG newv = dst - src;
        !          5861: {      bool flgs = ((WORD)(src)) < 0;
        !          5862:        bool flgo = ((WORD)(dst)) < 0;
        !          5863:        bool flgn = ((WORD)(newv)) < 0;
        !          5864:        regs.z = ((WORD)(newv)) == 0;
        !          5865:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5866:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          5867:        regs.n = flgn != 0;
        !          5868:        put_word(dsta,newv);
        !          5869: }}}}}}
        !          5870: void op_5b79(UWORD opcode)
        !          5871: {
        !          5872:        ULONG srcreg = 5;
        !          5873: {{     ULONG src = srcreg;
        !          5874: {      CPTR dsta = nextilong();
        !          5875:        WORD dst = get_word(dsta);
        !          5876: {      ULONG newv = dst - src;
        !          5877: {      bool flgs = ((WORD)(src)) < 0;
        !          5878:        bool flgo = ((WORD)(dst)) < 0;
        !          5879:        bool flgn = ((WORD)(newv)) < 0;
        !          5880:        regs.z = ((WORD)(newv)) == 0;
        !          5881:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5882:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          5883:        regs.n = flgn != 0;
        !          5884:        put_word(dsta,newv);
        !          5885: }}}}}}
        !          5886: void op_5b80(UWORD opcode)
        !          5887: {
        !          5888:        ULONG srcreg = 5;
        !          5889:        ULONG dstreg = (opcode & 7) >> 0;
        !          5890: {{     ULONG src = srcreg;
        !          5891: {      LONG dst = regs.d[dstreg];
        !          5892: {      ULONG newv = dst - src;
        !          5893: {      bool flgs = ((LONG)(src)) < 0;
        !          5894:        bool flgo = ((LONG)(dst)) < 0;
        !          5895:        bool flgn = ((LONG)(newv)) < 0;
        !          5896:        regs.z = ((LONG)(newv)) == 0;
        !          5897:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5898:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          5899:        regs.n = flgn != 0;
        !          5900:        regs.d[dstreg] = (newv);
        !          5901: }}}}}}
        !          5902: void op_5b88(UWORD opcode)
        !          5903: {
        !          5904:        ULONG srcreg = 5;
        !          5905:        ULONG dstreg = (opcode & 7) >> 0;
        !          5906: {{     ULONG src = srcreg;
        !          5907: {      LONG dst = regs.a[dstreg];
        !          5908: {      ULONG newv = dst - src;
        !          5909:        regs.a[dstreg] = (newv);
        !          5910: }}}}}
        !          5911: void op_5b90(UWORD opcode)
        !          5912: {
        !          5913:        ULONG srcreg = 5;
        !          5914:        ULONG dstreg = (opcode & 7) >> 0;
        !          5915: {{     ULONG src = srcreg;
        !          5916: {      CPTR dsta = regs.a[dstreg];
        !          5917:        LONG dst = get_long(dsta);
        !          5918: {      ULONG newv = dst - src;
        !          5919: {      bool flgs = ((LONG)(src)) < 0;
        !          5920:        bool flgo = ((LONG)(dst)) < 0;
        !          5921:        bool flgn = ((LONG)(newv)) < 0;
        !          5922:        regs.z = ((LONG)(newv)) == 0;
        !          5923:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5924:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          5925:        regs.n = flgn != 0;
        !          5926:        put_long(dsta,newv);
        !          5927: }}}}}}
        !          5928: void op_5b98(UWORD opcode)
        !          5929: {
        !          5930:        ULONG srcreg = 5;
        !          5931:        ULONG dstreg = (opcode & 7) >> 0;
        !          5932: {{     ULONG src = srcreg;
        !          5933: {      CPTR dsta = regs.a[dstreg];
        !          5934:        LONG dst = get_long(dsta);
        !          5935: {      regs.a[dstreg] += 4;
        !          5936: {      ULONG newv = dst - src;
        !          5937: {      bool flgs = ((LONG)(src)) < 0;
        !          5938:        bool flgo = ((LONG)(dst)) < 0;
        !          5939:        bool flgn = ((LONG)(newv)) < 0;
        !          5940:        regs.z = ((LONG)(newv)) == 0;
        !          5941:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5942:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          5943:        regs.n = flgn != 0;
        !          5944:        put_long(dsta,newv);
        !          5945: }}}}}}}
        !          5946: void op_5ba0(UWORD opcode)
        !          5947: {
        !          5948:        ULONG srcreg = 5;
        !          5949:        ULONG dstreg = (opcode & 7) >> 0;
        !          5950: {{     ULONG src = srcreg;
        !          5951: {      regs.a[dstreg] -= 4;
        !          5952: {      CPTR dsta = regs.a[dstreg];
        !          5953:        LONG dst = get_long(dsta);
        !          5954: {      ULONG newv = dst - src;
        !          5955: {      bool flgs = ((LONG)(src)) < 0;
        !          5956:        bool flgo = ((LONG)(dst)) < 0;
        !          5957:        bool flgn = ((LONG)(newv)) < 0;
        !          5958:        regs.z = ((LONG)(newv)) == 0;
        !          5959:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5960:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          5961:        regs.n = flgn != 0;
        !          5962:        put_long(dsta,newv);
        !          5963: }}}}}}}
        !          5964: void op_5ba8(UWORD opcode)
        !          5965: {
        !          5966:        ULONG srcreg = 5;
        !          5967:        ULONG dstreg = (opcode & 7) >> 0;
        !          5968: {{     ULONG src = srcreg;
        !          5969: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          5970:        LONG dst = get_long(dsta);
        !          5971: {      ULONG newv = dst - src;
        !          5972: {      bool flgs = ((LONG)(src)) < 0;
        !          5973:        bool flgo = ((LONG)(dst)) < 0;
        !          5974:        bool flgn = ((LONG)(newv)) < 0;
        !          5975:        regs.z = ((LONG)(newv)) == 0;
        !          5976:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5977:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          5978:        regs.n = flgn != 0;
        !          5979:        put_long(dsta,newv);
        !          5980: }}}}}}
        !          5981: void op_5bb0(UWORD opcode)
        !          5982: {
        !          5983:        ULONG srcreg = 5;
        !          5984:        ULONG dstreg = (opcode & 7) >> 0;
        !          5985: {{     ULONG src = srcreg;
        !          5986: {      CPTR dsta = regs.a[dstreg];
        !          5987:        UWORD dstdp = nextiword();
        !          5988:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          5989: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          5990:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          5991:        dsta += dstdpr;
        !          5992: {      LONG dst = get_long(dsta);
        !          5993: {      ULONG newv = dst - src;
        !          5994: {      bool flgs = ((LONG)(src)) < 0;
        !          5995:        bool flgo = ((LONG)(dst)) < 0;
        !          5996:        bool flgn = ((LONG)(newv)) < 0;
        !          5997:        regs.z = ((LONG)(newv)) == 0;
        !          5998:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          5999:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          6000:        regs.n = flgn != 0;
        !          6001:        put_long(dsta,newv);
        !          6002: }}}}}}}}
        !          6003: void op_5bb8(UWORD opcode)
        !          6004: {
        !          6005:        ULONG srcreg = 5;
        !          6006: {{     ULONG src = srcreg;
        !          6007: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          6008:        LONG dst = get_long(dsta);
        !          6009: {      ULONG newv = dst - src;
        !          6010: {      bool flgs = ((LONG)(src)) < 0;
        !          6011:        bool flgo = ((LONG)(dst)) < 0;
        !          6012:        bool flgn = ((LONG)(newv)) < 0;
        !          6013:        regs.z = ((LONG)(newv)) == 0;
        !          6014:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6015:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          6016:        regs.n = flgn != 0;
        !          6017:        put_long(dsta,newv);
        !          6018: }}}}}}
        !          6019: void op_5bb9(UWORD opcode)
        !          6020: {
        !          6021:        ULONG srcreg = 5;
        !          6022: {{     ULONG src = srcreg;
        !          6023: {      CPTR dsta = nextilong();
        !          6024:        LONG dst = get_long(dsta);
        !          6025: {      ULONG newv = dst - src;
        !          6026: {      bool flgs = ((LONG)(src)) < 0;
        !          6027:        bool flgo = ((LONG)(dst)) < 0;
        !          6028:        bool flgn = ((LONG)(newv)) < 0;
        !          6029:        regs.z = ((LONG)(newv)) == 0;
        !          6030:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6031:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          6032:        regs.n = flgn != 0;
        !          6033:        put_long(dsta,newv);
        !          6034: }}}}}}
        !          6035: void op_5bc0(UWORD opcode)
        !          6036: {
        !          6037:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6038: {{{    int val = cctrue(11) ? 0xff : 0;
        !          6039:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          6040: }}}}
        !          6041: void op_5bc8(UWORD opcode)
        !          6042: {
        !          6043:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6044: {{     WORD src = regs.d[srcreg];
        !          6045: {      WORD offs = nextiword();
        !          6046:        if (!cctrue(11)) {
        !          6047:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          6048:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          6049:        }
        !          6050: }}}}
        !          6051: void op_5bd0(UWORD opcode)
        !          6052: {
        !          6053:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6054: {{     CPTR srca = regs.a[srcreg];
        !          6055: {      int val = cctrue(11) ? 0xff : 0;
        !          6056:        put_byte(srca,val);
        !          6057: }}}}
        !          6058: void op_5bd8(UWORD opcode)
        !          6059: {
        !          6060:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6061: {{     CPTR srca = regs.a[srcreg];
        !          6062: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          6063: {      int val = cctrue(11) ? 0xff : 0;
        !          6064:        put_byte(srca,val);
        !          6065: }}}}}
        !          6066: void op_5be0(UWORD opcode)
        !          6067: {
        !          6068:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6069: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          6070: {      CPTR srca = regs.a[srcreg];
        !          6071: {      int val = cctrue(11) ? 0xff : 0;
        !          6072:        put_byte(srca,val);
        !          6073: }}}}}
        !          6074: void op_5be8(UWORD opcode)
        !          6075: {
        !          6076:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6077: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          6078: {      int val = cctrue(11) ? 0xff : 0;
        !          6079:        put_byte(srca,val);
        !          6080: }}}}
        !          6081: void op_5bf0(UWORD opcode)
        !          6082: {
        !          6083:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6084: {{     CPTR srca = regs.a[srcreg];
        !          6085:        UWORD srcdp = nextiword();
        !          6086:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          6087: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          6088:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          6089:        srca += srcdpr;
        !          6090: {      int val = cctrue(11) ? 0xff : 0;
        !          6091:        put_byte(srca,val);
        !          6092: }}}}}
        !          6093: void op_5bf8(UWORD opcode)
        !          6094: {
        !          6095: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          6096: {      int val = cctrue(11) ? 0xff : 0;
        !          6097:        put_byte(srca,val);
        !          6098: }}}}
        !          6099: void op_5bf9(UWORD opcode)
        !          6100: {
        !          6101: {{     CPTR srca = nextilong();
        !          6102: {      int val = cctrue(11) ? 0xff : 0;
        !          6103:        put_byte(srca,val);
        !          6104: }}}}
        !          6105: void op_5c00(UWORD opcode)
        !          6106: {
        !          6107:        ULONG srcreg = 6;
        !          6108:        ULONG dstreg = (opcode & 7) >> 0;
        !          6109: {{     ULONG src = srcreg;
        !          6110: {      BYTE dst = regs.d[dstreg];
        !          6111: {      ULONG newv = dst + src;
        !          6112: {      bool flgs = ((BYTE)(src)) < 0;
        !          6113:        bool flgo = ((BYTE)(dst)) < 0;
        !          6114:        bool flgn = ((BYTE)(newv)) < 0;
        !          6115:        regs.z = ((BYTE)(newv)) == 0;
        !          6116:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6117:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          6118:        regs.n = flgn != 0;
        !          6119:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          6120: }}}}}}
        !          6121: void op_5c10(UWORD opcode)
        !          6122: {
        !          6123:        ULONG srcreg = 6;
        !          6124:        ULONG dstreg = (opcode & 7) >> 0;
        !          6125: {{     ULONG src = srcreg;
        !          6126: {      CPTR dsta = regs.a[dstreg];
        !          6127:        BYTE dst = get_byte(dsta);
        !          6128: {      ULONG newv = dst + src;
        !          6129: {      bool flgs = ((BYTE)(src)) < 0;
        !          6130:        bool flgo = ((BYTE)(dst)) < 0;
        !          6131:        bool flgn = ((BYTE)(newv)) < 0;
        !          6132:        regs.z = ((BYTE)(newv)) == 0;
        !          6133:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6134:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          6135:        regs.n = flgn != 0;
        !          6136:        put_byte(dsta,newv);
        !          6137: }}}}}}
        !          6138: void op_5c18(UWORD opcode)
        !          6139: {
        !          6140:        ULONG srcreg = 6;
        !          6141:        ULONG dstreg = (opcode & 7) >> 0;
        !          6142: {{     ULONG src = srcreg;
        !          6143: {      CPTR dsta = regs.a[dstreg];
        !          6144:        BYTE dst = get_byte(dsta);
        !          6145: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          6146: {      ULONG newv = dst + src;
        !          6147: {      bool flgs = ((BYTE)(src)) < 0;
        !          6148:        bool flgo = ((BYTE)(dst)) < 0;
        !          6149:        bool flgn = ((BYTE)(newv)) < 0;
        !          6150:        regs.z = ((BYTE)(newv)) == 0;
        !          6151:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6152:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          6153:        regs.n = flgn != 0;
        !          6154:        put_byte(dsta,newv);
        !          6155: }}}}}}}
        !          6156: void op_5c20(UWORD opcode)
        !          6157: {
        !          6158:        ULONG srcreg = 6;
        !          6159:        ULONG dstreg = (opcode & 7) >> 0;
        !          6160: {{     ULONG src = srcreg;
        !          6161: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          6162: {      CPTR dsta = regs.a[dstreg];
        !          6163:        BYTE dst = get_byte(dsta);
        !          6164: {      ULONG newv = dst + src;
        !          6165: {      bool flgs = ((BYTE)(src)) < 0;
        !          6166:        bool flgo = ((BYTE)(dst)) < 0;
        !          6167:        bool flgn = ((BYTE)(newv)) < 0;
        !          6168:        regs.z = ((BYTE)(newv)) == 0;
        !          6169:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6170:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          6171:        regs.n = flgn != 0;
        !          6172:        put_byte(dsta,newv);
        !          6173: }}}}}}}
        !          6174: void op_5c28(UWORD opcode)
        !          6175: {
        !          6176:        ULONG srcreg = 6;
        !          6177:        ULONG dstreg = (opcode & 7) >> 0;
        !          6178: {{     ULONG src = srcreg;
        !          6179: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          6180:        BYTE dst = get_byte(dsta);
        !          6181: {      ULONG newv = dst + src;
        !          6182: {      bool flgs = ((BYTE)(src)) < 0;
        !          6183:        bool flgo = ((BYTE)(dst)) < 0;
        !          6184:        bool flgn = ((BYTE)(newv)) < 0;
        !          6185:        regs.z = ((BYTE)(newv)) == 0;
        !          6186:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6187:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          6188:        regs.n = flgn != 0;
        !          6189:        put_byte(dsta,newv);
        !          6190: }}}}}}
        !          6191: void op_5c30(UWORD opcode)
        !          6192: {
        !          6193:        ULONG srcreg = 6;
        !          6194:        ULONG dstreg = (opcode & 7) >> 0;
        !          6195: {{     ULONG src = srcreg;
        !          6196: {      CPTR dsta = regs.a[dstreg];
        !          6197:        UWORD dstdp = nextiword();
        !          6198:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          6199: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          6200:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          6201:        dsta += dstdpr;
        !          6202: {      BYTE dst = get_byte(dsta);
        !          6203: {      ULONG newv = dst + src;
        !          6204: {      bool flgs = ((BYTE)(src)) < 0;
        !          6205:        bool flgo = ((BYTE)(dst)) < 0;
        !          6206:        bool flgn = ((BYTE)(newv)) < 0;
        !          6207:        regs.z = ((BYTE)(newv)) == 0;
        !          6208:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6209:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          6210:        regs.n = flgn != 0;
        !          6211:        put_byte(dsta,newv);
        !          6212: }}}}}}}}
        !          6213: void op_5c38(UWORD opcode)
        !          6214: {
        !          6215:        ULONG srcreg = 6;
        !          6216: {{     ULONG src = srcreg;
        !          6217: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          6218:        BYTE dst = get_byte(dsta);
        !          6219: {      ULONG newv = dst + src;
        !          6220: {      bool flgs = ((BYTE)(src)) < 0;
        !          6221:        bool flgo = ((BYTE)(dst)) < 0;
        !          6222:        bool flgn = ((BYTE)(newv)) < 0;
        !          6223:        regs.z = ((BYTE)(newv)) == 0;
        !          6224:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6225:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          6226:        regs.n = flgn != 0;
        !          6227:        put_byte(dsta,newv);
        !          6228: }}}}}}
        !          6229: void op_5c39(UWORD opcode)
        !          6230: {
        !          6231:        ULONG srcreg = 6;
        !          6232: {{     ULONG src = srcreg;
        !          6233: {      CPTR dsta = nextilong();
        !          6234:        BYTE dst = get_byte(dsta);
        !          6235: {      ULONG newv = dst + src;
        !          6236: {      bool flgs = ((BYTE)(src)) < 0;
        !          6237:        bool flgo = ((BYTE)(dst)) < 0;
        !          6238:        bool flgn = ((BYTE)(newv)) < 0;
        !          6239:        regs.z = ((BYTE)(newv)) == 0;
        !          6240:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6241:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          6242:        regs.n = flgn != 0;
        !          6243:        put_byte(dsta,newv);
        !          6244: }}}}}}
        !          6245: void op_5c40(UWORD opcode)
        !          6246: {
        !          6247:        ULONG srcreg = 6;
        !          6248:        ULONG dstreg = (opcode & 7) >> 0;
        !          6249: {{     ULONG src = srcreg;
        !          6250: {      WORD dst = regs.d[dstreg];
        !          6251: {      ULONG newv = dst + src;
        !          6252: {      bool flgs = ((WORD)(src)) < 0;
        !          6253:        bool flgo = ((WORD)(dst)) < 0;
        !          6254:        bool flgn = ((WORD)(newv)) < 0;
        !          6255:        regs.z = ((WORD)(newv)) == 0;
        !          6256:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6257:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          6258:        regs.n = flgn != 0;
        !          6259:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          6260: }}}}}}
        !          6261: void op_5c48(UWORD opcode)
        !          6262: {
        !          6263:        ULONG srcreg = 6;
        !          6264:        ULONG dstreg = (opcode & 7) >> 0;
        !          6265: {{     ULONG src = srcreg;
        !          6266: {      LONG dst = regs.a[dstreg];
        !          6267: {      ULONG newv = dst + src;
        !          6268:        regs.a[dstreg] = (newv);
        !          6269: }}}}}
        !          6270: void op_5c50(UWORD opcode)
        !          6271: {
        !          6272:        ULONG srcreg = 6;
        !          6273:        ULONG dstreg = (opcode & 7) >> 0;
        !          6274: {{     ULONG src = srcreg;
        !          6275: {      CPTR dsta = regs.a[dstreg];
        !          6276:        WORD dst = get_word(dsta);
        !          6277: {      ULONG newv = dst + src;
        !          6278: {      bool flgs = ((WORD)(src)) < 0;
        !          6279:        bool flgo = ((WORD)(dst)) < 0;
        !          6280:        bool flgn = ((WORD)(newv)) < 0;
        !          6281:        regs.z = ((WORD)(newv)) == 0;
        !          6282:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6283:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          6284:        regs.n = flgn != 0;
        !          6285:        put_word(dsta,newv);
        !          6286: }}}}}}
        !          6287: void op_5c58(UWORD opcode)
        !          6288: {
        !          6289:        ULONG srcreg = 6;
        !          6290:        ULONG dstreg = (opcode & 7) >> 0;
        !          6291: {{     ULONG src = srcreg;
        !          6292: {      CPTR dsta = regs.a[dstreg];
        !          6293:        WORD dst = get_word(dsta);
        !          6294: {      regs.a[dstreg] += 2;
        !          6295: {      ULONG newv = dst + src;
        !          6296: {      bool flgs = ((WORD)(src)) < 0;
        !          6297:        bool flgo = ((WORD)(dst)) < 0;
        !          6298:        bool flgn = ((WORD)(newv)) < 0;
        !          6299:        regs.z = ((WORD)(newv)) == 0;
        !          6300:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6301:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          6302:        regs.n = flgn != 0;
        !          6303:        put_word(dsta,newv);
        !          6304: }}}}}}}
        !          6305: void op_5c60(UWORD opcode)
        !          6306: {
        !          6307:        ULONG srcreg = 6;
        !          6308:        ULONG dstreg = (opcode & 7) >> 0;
        !          6309: {{     ULONG src = srcreg;
        !          6310: {      regs.a[dstreg] -= 2;
        !          6311: {      CPTR dsta = regs.a[dstreg];
        !          6312:        WORD dst = get_word(dsta);
        !          6313: {      ULONG newv = dst + src;
        !          6314: {      bool flgs = ((WORD)(src)) < 0;
        !          6315:        bool flgo = ((WORD)(dst)) < 0;
        !          6316:        bool flgn = ((WORD)(newv)) < 0;
        !          6317:        regs.z = ((WORD)(newv)) == 0;
        !          6318:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6319:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          6320:        regs.n = flgn != 0;
        !          6321:        put_word(dsta,newv);
        !          6322: }}}}}}}
        !          6323: void op_5c68(UWORD opcode)
        !          6324: {
        !          6325:        ULONG srcreg = 6;
        !          6326:        ULONG dstreg = (opcode & 7) >> 0;
        !          6327: {{     ULONG src = srcreg;
        !          6328: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          6329:        WORD dst = get_word(dsta);
        !          6330: {      ULONG newv = dst + src;
        !          6331: {      bool flgs = ((WORD)(src)) < 0;
        !          6332:        bool flgo = ((WORD)(dst)) < 0;
        !          6333:        bool flgn = ((WORD)(newv)) < 0;
        !          6334:        regs.z = ((WORD)(newv)) == 0;
        !          6335:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6336:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          6337:        regs.n = flgn != 0;
        !          6338:        put_word(dsta,newv);
        !          6339: }}}}}}
        !          6340: void op_5c70(UWORD opcode)
        !          6341: {
        !          6342:        ULONG srcreg = 6;
        !          6343:        ULONG dstreg = (opcode & 7) >> 0;
        !          6344: {{     ULONG src = srcreg;
        !          6345: {      CPTR dsta = regs.a[dstreg];
        !          6346:        UWORD dstdp = nextiword();
        !          6347:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          6348: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          6349:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          6350:        dsta += dstdpr;
        !          6351: {      WORD dst = get_word(dsta);
        !          6352: {      ULONG newv = dst + src;
        !          6353: {      bool flgs = ((WORD)(src)) < 0;
        !          6354:        bool flgo = ((WORD)(dst)) < 0;
        !          6355:        bool flgn = ((WORD)(newv)) < 0;
        !          6356:        regs.z = ((WORD)(newv)) == 0;
        !          6357:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6358:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          6359:        regs.n = flgn != 0;
        !          6360:        put_word(dsta,newv);
        !          6361: }}}}}}}}
        !          6362: void op_5c78(UWORD opcode)
        !          6363: {
        !          6364:        ULONG srcreg = 6;
        !          6365: {{     ULONG src = srcreg;
        !          6366: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          6367:        WORD dst = get_word(dsta);
        !          6368: {      ULONG newv = dst + src;
        !          6369: {      bool flgs = ((WORD)(src)) < 0;
        !          6370:        bool flgo = ((WORD)(dst)) < 0;
        !          6371:        bool flgn = ((WORD)(newv)) < 0;
        !          6372:        regs.z = ((WORD)(newv)) == 0;
        !          6373:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6374:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          6375:        regs.n = flgn != 0;
        !          6376:        put_word(dsta,newv);
        !          6377: }}}}}}
        !          6378: void op_5c79(UWORD opcode)
        !          6379: {
        !          6380:        ULONG srcreg = 6;
        !          6381: {{     ULONG src = srcreg;
        !          6382: {      CPTR dsta = nextilong();
        !          6383:        WORD dst = get_word(dsta);
        !          6384: {      ULONG newv = dst + src;
        !          6385: {      bool flgs = ((WORD)(src)) < 0;
        !          6386:        bool flgo = ((WORD)(dst)) < 0;
        !          6387:        bool flgn = ((WORD)(newv)) < 0;
        !          6388:        regs.z = ((WORD)(newv)) == 0;
        !          6389:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6390:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          6391:        regs.n = flgn != 0;
        !          6392:        put_word(dsta,newv);
        !          6393: }}}}}}
        !          6394: void op_5c80(UWORD opcode)
        !          6395: {
        !          6396:        ULONG srcreg = 6;
        !          6397:        ULONG dstreg = (opcode & 7) >> 0;
        !          6398: {{     ULONG src = srcreg;
        !          6399: {      LONG dst = regs.d[dstreg];
        !          6400: {      ULONG newv = dst + src;
        !          6401: {      bool flgs = ((LONG)(src)) < 0;
        !          6402:        bool flgo = ((LONG)(dst)) < 0;
        !          6403:        bool flgn = ((LONG)(newv)) < 0;
        !          6404:        regs.z = ((LONG)(newv)) == 0;
        !          6405:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6406:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          6407:        regs.n = flgn != 0;
        !          6408:        regs.d[dstreg] = (newv);
        !          6409: }}}}}}
        !          6410: void op_5c88(UWORD opcode)
        !          6411: {
        !          6412:        ULONG srcreg = 6;
        !          6413:        ULONG dstreg = (opcode & 7) >> 0;
        !          6414: {{     ULONG src = srcreg;
        !          6415: {      LONG dst = regs.a[dstreg];
        !          6416: {      ULONG newv = dst + src;
        !          6417:        regs.a[dstreg] = (newv);
        !          6418: }}}}}
        !          6419: void op_5c90(UWORD opcode)
        !          6420: {
        !          6421:        ULONG srcreg = 6;
        !          6422:        ULONG dstreg = (opcode & 7) >> 0;
        !          6423: {{     ULONG src = srcreg;
        !          6424: {      CPTR dsta = regs.a[dstreg];
        !          6425:        LONG dst = get_long(dsta);
        !          6426: {      ULONG newv = dst + src;
        !          6427: {      bool flgs = ((LONG)(src)) < 0;
        !          6428:        bool flgo = ((LONG)(dst)) < 0;
        !          6429:        bool flgn = ((LONG)(newv)) < 0;
        !          6430:        regs.z = ((LONG)(newv)) == 0;
        !          6431:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6432:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          6433:        regs.n = flgn != 0;
        !          6434:        put_long(dsta,newv);
        !          6435: }}}}}}
        !          6436: void op_5c98(UWORD opcode)
        !          6437: {
        !          6438:        ULONG srcreg = 6;
        !          6439:        ULONG dstreg = (opcode & 7) >> 0;
        !          6440: {{     ULONG src = srcreg;
        !          6441: {      CPTR dsta = regs.a[dstreg];
        !          6442:        LONG dst = get_long(dsta);
        !          6443: {      regs.a[dstreg] += 4;
        !          6444: {      ULONG newv = dst + src;
        !          6445: {      bool flgs = ((LONG)(src)) < 0;
        !          6446:        bool flgo = ((LONG)(dst)) < 0;
        !          6447:        bool flgn = ((LONG)(newv)) < 0;
        !          6448:        regs.z = ((LONG)(newv)) == 0;
        !          6449:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6450:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          6451:        regs.n = flgn != 0;
        !          6452:        put_long(dsta,newv);
        !          6453: }}}}}}}
        !          6454: void op_5ca0(UWORD opcode)
        !          6455: {
        !          6456:        ULONG srcreg = 6;
        !          6457:        ULONG dstreg = (opcode & 7) >> 0;
        !          6458: {{     ULONG src = srcreg;
        !          6459: {      regs.a[dstreg] -= 4;
        !          6460: {      CPTR dsta = regs.a[dstreg];
        !          6461:        LONG dst = get_long(dsta);
        !          6462: {      ULONG newv = dst + src;
        !          6463: {      bool flgs = ((LONG)(src)) < 0;
        !          6464:        bool flgo = ((LONG)(dst)) < 0;
        !          6465:        bool flgn = ((LONG)(newv)) < 0;
        !          6466:        regs.z = ((LONG)(newv)) == 0;
        !          6467:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6468:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          6469:        regs.n = flgn != 0;
        !          6470:        put_long(dsta,newv);
        !          6471: }}}}}}}
        !          6472: void op_5ca8(UWORD opcode)
        !          6473: {
        !          6474:        ULONG srcreg = 6;
        !          6475:        ULONG dstreg = (opcode & 7) >> 0;
        !          6476: {{     ULONG src = srcreg;
        !          6477: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          6478:        LONG dst = get_long(dsta);
        !          6479: {      ULONG newv = dst + src;
        !          6480: {      bool flgs = ((LONG)(src)) < 0;
        !          6481:        bool flgo = ((LONG)(dst)) < 0;
        !          6482:        bool flgn = ((LONG)(newv)) < 0;
        !          6483:        regs.z = ((LONG)(newv)) == 0;
        !          6484:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6485:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          6486:        regs.n = flgn != 0;
        !          6487:        put_long(dsta,newv);
        !          6488: }}}}}}
        !          6489: void op_5cb0(UWORD opcode)
        !          6490: {
        !          6491:        ULONG srcreg = 6;
        !          6492:        ULONG dstreg = (opcode & 7) >> 0;
        !          6493: {{     ULONG src = srcreg;
        !          6494: {      CPTR dsta = regs.a[dstreg];
        !          6495:        UWORD dstdp = nextiword();
        !          6496:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          6497: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          6498:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          6499:        dsta += dstdpr;
        !          6500: {      LONG dst = get_long(dsta);
        !          6501: {      ULONG newv = dst + src;
        !          6502: {      bool flgs = ((LONG)(src)) < 0;
        !          6503:        bool flgo = ((LONG)(dst)) < 0;
        !          6504:        bool flgn = ((LONG)(newv)) < 0;
        !          6505:        regs.z = ((LONG)(newv)) == 0;
        !          6506:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6507:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          6508:        regs.n = flgn != 0;
        !          6509:        put_long(dsta,newv);
        !          6510: }}}}}}}}
        !          6511: void op_5cb8(UWORD opcode)
        !          6512: {
        !          6513:        ULONG srcreg = 6;
        !          6514: {{     ULONG src = srcreg;
        !          6515: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          6516:        LONG dst = get_long(dsta);
        !          6517: {      ULONG newv = dst + src;
        !          6518: {      bool flgs = ((LONG)(src)) < 0;
        !          6519:        bool flgo = ((LONG)(dst)) < 0;
        !          6520:        bool flgn = ((LONG)(newv)) < 0;
        !          6521:        regs.z = ((LONG)(newv)) == 0;
        !          6522:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6523:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          6524:        regs.n = flgn != 0;
        !          6525:        put_long(dsta,newv);
        !          6526: }}}}}}
        !          6527: void op_5cb9(UWORD opcode)
        !          6528: {
        !          6529:        ULONG srcreg = 6;
        !          6530: {{     ULONG src = srcreg;
        !          6531: {      CPTR dsta = nextilong();
        !          6532:        LONG dst = get_long(dsta);
        !          6533: {      ULONG newv = dst + src;
        !          6534: {      bool flgs = ((LONG)(src)) < 0;
        !          6535:        bool flgo = ((LONG)(dst)) < 0;
        !          6536:        bool flgn = ((LONG)(newv)) < 0;
        !          6537:        regs.z = ((LONG)(newv)) == 0;
        !          6538:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          6539:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          6540:        regs.n = flgn != 0;
        !          6541:        put_long(dsta,newv);
        !          6542: }}}}}}
        !          6543: void op_5cc0(UWORD opcode)
        !          6544: {
        !          6545:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6546: {{{    int val = cctrue(12) ? 0xff : 0;
        !          6547:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          6548: }}}}
        !          6549: void op_5cc8(UWORD opcode)
        !          6550: {
        !          6551:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6552: {{     WORD src = regs.d[srcreg];
        !          6553: {      WORD offs = nextiword();
        !          6554:        if (!cctrue(12)) {
        !          6555:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          6556:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          6557:        }
        !          6558: }}}}
        !          6559: void op_5cd0(UWORD opcode)
        !          6560: {
        !          6561:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6562: {{     CPTR srca = regs.a[srcreg];
        !          6563: {      int val = cctrue(12) ? 0xff : 0;
        !          6564:        put_byte(srca,val);
        !          6565: }}}}
        !          6566: void op_5cd8(UWORD opcode)
        !          6567: {
        !          6568:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6569: {{     CPTR srca = regs.a[srcreg];
        !          6570: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          6571: {      int val = cctrue(12) ? 0xff : 0;
        !          6572:        put_byte(srca,val);
        !          6573: }}}}}
        !          6574: void op_5ce0(UWORD opcode)
        !          6575: {
        !          6576:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6577: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          6578: {      CPTR srca = regs.a[srcreg];
        !          6579: {      int val = cctrue(12) ? 0xff : 0;
        !          6580:        put_byte(srca,val);
        !          6581: }}}}}
        !          6582: void op_5ce8(UWORD opcode)
        !          6583: {
        !          6584:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6585: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          6586: {      int val = cctrue(12) ? 0xff : 0;
        !          6587:        put_byte(srca,val);
        !          6588: }}}}
        !          6589: void op_5cf0(UWORD opcode)
        !          6590: {
        !          6591:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          6592: {{     CPTR srca = regs.a[srcreg];
        !          6593:        UWORD srcdp = nextiword();
        !          6594:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          6595: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          6596:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          6597:        srca += srcdpr;
        !          6598: {      int val = cctrue(12) ? 0xff : 0;
        !          6599:        put_byte(srca,val);
        !          6600: }}}}}
        !          6601: void op_5cf8(UWORD opcode)
        !          6602: {
        !          6603: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          6604: {      int val = cctrue(12) ? 0xff : 0;
        !          6605:        put_byte(srca,val);
        !          6606: }}}}
        !          6607: void op_5cf9(UWORD opcode)
        !          6608: {
        !          6609: {{     CPTR srca = nextilong();
        !          6610: {      int val = cctrue(12) ? 0xff : 0;
        !          6611:        put_byte(srca,val);
        !          6612: }}}}
        !          6613: void op_5d00(UWORD opcode)
        !          6614: {
        !          6615:        ULONG srcreg = 6;
        !          6616:        ULONG dstreg = (opcode & 7) >> 0;
        !          6617: {{     ULONG src = srcreg;
        !          6618: {      BYTE dst = regs.d[dstreg];
        !          6619: {      ULONG newv = dst - src;
        !          6620: {      bool flgs = ((BYTE)(src)) < 0;
        !          6621:        bool flgo = ((BYTE)(dst)) < 0;
        !          6622:        bool flgn = ((BYTE)(newv)) < 0;
        !          6623:        regs.z = ((BYTE)(newv)) == 0;
        !          6624:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6625:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          6626:        regs.n = flgn != 0;
        !          6627:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          6628: }}}}}}
        !          6629: void op_5d10(UWORD opcode)
        !          6630: {
        !          6631:        ULONG srcreg = 6;
        !          6632:        ULONG dstreg = (opcode & 7) >> 0;
        !          6633: {{     ULONG src = srcreg;
        !          6634: {      CPTR dsta = regs.a[dstreg];
        !          6635:        BYTE dst = get_byte(dsta);
        !          6636: {      ULONG newv = dst - src;
        !          6637: {      bool flgs = ((BYTE)(src)) < 0;
        !          6638:        bool flgo = ((BYTE)(dst)) < 0;
        !          6639:        bool flgn = ((BYTE)(newv)) < 0;
        !          6640:        regs.z = ((BYTE)(newv)) == 0;
        !          6641:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6642:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          6643:        regs.n = flgn != 0;
        !          6644:        put_byte(dsta,newv);
        !          6645: }}}}}}
        !          6646: void op_5d18(UWORD opcode)
        !          6647: {
        !          6648:        ULONG srcreg = 6;
        !          6649:        ULONG dstreg = (opcode & 7) >> 0;
        !          6650: {{     ULONG src = srcreg;
        !          6651: {      CPTR dsta = regs.a[dstreg];
        !          6652:        BYTE dst = get_byte(dsta);
        !          6653: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          6654: {      ULONG newv = dst - src;
        !          6655: {      bool flgs = ((BYTE)(src)) < 0;
        !          6656:        bool flgo = ((BYTE)(dst)) < 0;
        !          6657:        bool flgn = ((BYTE)(newv)) < 0;
        !          6658:        regs.z = ((BYTE)(newv)) == 0;
        !          6659:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6660:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          6661:        regs.n = flgn != 0;
        !          6662:        put_byte(dsta,newv);
        !          6663: }}}}}}}
        !          6664: void op_5d20(UWORD opcode)
        !          6665: {
        !          6666:        ULONG srcreg = 6;
        !          6667:        ULONG dstreg = (opcode & 7) >> 0;
        !          6668: {{     ULONG src = srcreg;
        !          6669: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          6670: {      CPTR dsta = regs.a[dstreg];
        !          6671:        BYTE dst = get_byte(dsta);
        !          6672: {      ULONG newv = dst - src;
        !          6673: {      bool flgs = ((BYTE)(src)) < 0;
        !          6674:        bool flgo = ((BYTE)(dst)) < 0;
        !          6675:        bool flgn = ((BYTE)(newv)) < 0;
        !          6676:        regs.z = ((BYTE)(newv)) == 0;
        !          6677:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6678:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          6679:        regs.n = flgn != 0;
        !          6680:        put_byte(dsta,newv);
        !          6681: }}}}}}}
        !          6682: void op_5d28(UWORD opcode)
        !          6683: {
        !          6684:        ULONG srcreg = 6;
        !          6685:        ULONG dstreg = (opcode & 7) >> 0;
        !          6686: {{     ULONG src = srcreg;
        !          6687: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          6688:        BYTE dst = get_byte(dsta);
        !          6689: {      ULONG newv = dst - src;
        !          6690: {      bool flgs = ((BYTE)(src)) < 0;
        !          6691:        bool flgo = ((BYTE)(dst)) < 0;
        !          6692:        bool flgn = ((BYTE)(newv)) < 0;
        !          6693:        regs.z = ((BYTE)(newv)) == 0;
        !          6694:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6695:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          6696:        regs.n = flgn != 0;
        !          6697:        put_byte(dsta,newv);
        !          6698: }}}}}}
        !          6699: void op_5d30(UWORD opcode)
        !          6700: {
        !          6701:        ULONG srcreg = 6;
        !          6702:        ULONG dstreg = (opcode & 7) >> 0;
        !          6703: {{     ULONG src = srcreg;
        !          6704: {      CPTR dsta = regs.a[dstreg];
        !          6705:        UWORD dstdp = nextiword();
        !          6706:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          6707: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          6708:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          6709:        dsta += dstdpr;
        !          6710: {      BYTE dst = get_byte(dsta);
        !          6711: {      ULONG newv = dst - src;
        !          6712: {      bool flgs = ((BYTE)(src)) < 0;
        !          6713:        bool flgo = ((BYTE)(dst)) < 0;
        !          6714:        bool flgn = ((BYTE)(newv)) < 0;
        !          6715:        regs.z = ((BYTE)(newv)) == 0;
        !          6716:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6717:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          6718:        regs.n = flgn != 0;
        !          6719:        put_byte(dsta,newv);
        !          6720: }}}}}}}}
        !          6721: void op_5d38(UWORD opcode)
        !          6722: {
        !          6723:        ULONG srcreg = 6;
        !          6724: {{     ULONG src = srcreg;
        !          6725: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          6726:        BYTE dst = get_byte(dsta);
        !          6727: {      ULONG newv = dst - src;
        !          6728: {      bool flgs = ((BYTE)(src)) < 0;
        !          6729:        bool flgo = ((BYTE)(dst)) < 0;
        !          6730:        bool flgn = ((BYTE)(newv)) < 0;
        !          6731:        regs.z = ((BYTE)(newv)) == 0;
        !          6732:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6733:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          6734:        regs.n = flgn != 0;
        !          6735:        put_byte(dsta,newv);
        !          6736: }}}}}}
        !          6737: void op_5d39(UWORD opcode)
        !          6738: {
        !          6739:        ULONG srcreg = 6;
        !          6740: {{     ULONG src = srcreg;
        !          6741: {      CPTR dsta = nextilong();
        !          6742:        BYTE dst = get_byte(dsta);
        !          6743: {      ULONG newv = dst - src;
        !          6744: {      bool flgs = ((BYTE)(src)) < 0;
        !          6745:        bool flgo = ((BYTE)(dst)) < 0;
        !          6746:        bool flgn = ((BYTE)(newv)) < 0;
        !          6747:        regs.z = ((BYTE)(newv)) == 0;
        !          6748:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6749:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          6750:        regs.n = flgn != 0;
        !          6751:        put_byte(dsta,newv);
        !          6752: }}}}}}
        !          6753: void op_5d40(UWORD opcode)
        !          6754: {
        !          6755:        ULONG srcreg = 6;
        !          6756:        ULONG dstreg = (opcode & 7) >> 0;
        !          6757: {{     ULONG src = srcreg;
        !          6758: {      WORD dst = regs.d[dstreg];
        !          6759: {      ULONG newv = dst - src;
        !          6760: {      bool flgs = ((WORD)(src)) < 0;
        !          6761:        bool flgo = ((WORD)(dst)) < 0;
        !          6762:        bool flgn = ((WORD)(newv)) < 0;
        !          6763:        regs.z = ((WORD)(newv)) == 0;
        !          6764:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6765:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          6766:        regs.n = flgn != 0;
        !          6767:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          6768: }}}}}}
        !          6769: void op_5d48(UWORD opcode)
        !          6770: {
        !          6771:        ULONG srcreg = 6;
        !          6772:        ULONG dstreg = (opcode & 7) >> 0;
        !          6773: {{     ULONG src = srcreg;
        !          6774: {      LONG dst = regs.a[dstreg];
        !          6775: {      ULONG newv = dst - src;
        !          6776:        regs.a[dstreg] = (newv);
        !          6777: }}}}}
        !          6778: void op_5d50(UWORD opcode)
        !          6779: {
        !          6780:        ULONG srcreg = 6;
        !          6781:        ULONG dstreg = (opcode & 7) >> 0;
        !          6782: {{     ULONG src = srcreg;
        !          6783: {      CPTR dsta = regs.a[dstreg];
        !          6784:        WORD dst = get_word(dsta);
        !          6785: {      ULONG newv = dst - src;
        !          6786: {      bool flgs = ((WORD)(src)) < 0;
        !          6787:        bool flgo = ((WORD)(dst)) < 0;
        !          6788:        bool flgn = ((WORD)(newv)) < 0;
        !          6789:        regs.z = ((WORD)(newv)) == 0;
        !          6790:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6791:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          6792:        regs.n = flgn != 0;
        !          6793:        put_word(dsta,newv);
        !          6794: }}}}}}
        !          6795: void op_5d58(UWORD opcode)
        !          6796: {
        !          6797:        ULONG srcreg = 6;
        !          6798:        ULONG dstreg = (opcode & 7) >> 0;
        !          6799: {{     ULONG src = srcreg;
        !          6800: {      CPTR dsta = regs.a[dstreg];
        !          6801:        WORD dst = get_word(dsta);
        !          6802: {      regs.a[dstreg] += 2;
        !          6803: {      ULONG newv = dst - src;
        !          6804: {      bool flgs = ((WORD)(src)) < 0;
        !          6805:        bool flgo = ((WORD)(dst)) < 0;
        !          6806:        bool flgn = ((WORD)(newv)) < 0;
        !          6807:        regs.z = ((WORD)(newv)) == 0;
        !          6808:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6809:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          6810:        regs.n = flgn != 0;
        !          6811:        put_word(dsta,newv);
        !          6812: }}}}}}}
        !          6813: void op_5d60(UWORD opcode)
        !          6814: {
        !          6815:        ULONG srcreg = 6;
        !          6816:        ULONG dstreg = (opcode & 7) >> 0;
        !          6817: {{     ULONG src = srcreg;
        !          6818: {      regs.a[dstreg] -= 2;
        !          6819: {      CPTR dsta = regs.a[dstreg];
        !          6820:        WORD dst = get_word(dsta);
        !          6821: {      ULONG newv = dst - src;
        !          6822: {      bool flgs = ((WORD)(src)) < 0;
        !          6823:        bool flgo = ((WORD)(dst)) < 0;
        !          6824:        bool flgn = ((WORD)(newv)) < 0;
        !          6825:        regs.z = ((WORD)(newv)) == 0;
        !          6826:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6827:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          6828:        regs.n = flgn != 0;
        !          6829:        put_word(dsta,newv);
        !          6830: }}}}}}}
        !          6831: void op_5d68(UWORD opcode)
        !          6832: {
        !          6833:        ULONG srcreg = 6;
        !          6834:        ULONG dstreg = (opcode & 7) >> 0;
        !          6835: {{     ULONG src = srcreg;
        !          6836: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          6837:        WORD dst = get_word(dsta);
        !          6838: {      ULONG newv = dst - src;
        !          6839: {      bool flgs = ((WORD)(src)) < 0;
        !          6840:        bool flgo = ((WORD)(dst)) < 0;
        !          6841:        bool flgn = ((WORD)(newv)) < 0;
        !          6842:        regs.z = ((WORD)(newv)) == 0;
        !          6843:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6844:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          6845:        regs.n = flgn != 0;
        !          6846:        put_word(dsta,newv);
        !          6847: }}}}}}
        !          6848: void op_5d70(UWORD opcode)
        !          6849: {
        !          6850:        ULONG srcreg = 6;
        !          6851:        ULONG dstreg = (opcode & 7) >> 0;
        !          6852: {{     ULONG src = srcreg;
        !          6853: {      CPTR dsta = regs.a[dstreg];
        !          6854:        UWORD dstdp = nextiword();
        !          6855:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          6856: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          6857:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          6858:        dsta += dstdpr;
        !          6859: {      WORD dst = get_word(dsta);
        !          6860: {      ULONG newv = dst - src;
        !          6861: {      bool flgs = ((WORD)(src)) < 0;
        !          6862:        bool flgo = ((WORD)(dst)) < 0;
        !          6863:        bool flgn = ((WORD)(newv)) < 0;
        !          6864:        regs.z = ((WORD)(newv)) == 0;
        !          6865:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6866:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          6867:        regs.n = flgn != 0;
        !          6868:        put_word(dsta,newv);
        !          6869: }}}}}}}}
        !          6870: void op_5d78(UWORD opcode)
        !          6871: {
        !          6872:        ULONG srcreg = 6;
        !          6873: {{     ULONG src = srcreg;
        !          6874: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          6875:        WORD dst = get_word(dsta);
        !          6876: {      ULONG newv = dst - src;
        !          6877: {      bool flgs = ((WORD)(src)) < 0;
        !          6878:        bool flgo = ((WORD)(dst)) < 0;
        !          6879:        bool flgn = ((WORD)(newv)) < 0;
        !          6880:        regs.z = ((WORD)(newv)) == 0;
        !          6881:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6882:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          6883:        regs.n = flgn != 0;
        !          6884:        put_word(dsta,newv);
        !          6885: }}}}}}
        !          6886: void op_5d79(UWORD opcode)
        !          6887: {
        !          6888:        ULONG srcreg = 6;
        !          6889: {{     ULONG src = srcreg;
        !          6890: {      CPTR dsta = nextilong();
        !          6891:        WORD dst = get_word(dsta);
        !          6892: {      ULONG newv = dst - src;
        !          6893: {      bool flgs = ((WORD)(src)) < 0;
        !          6894:        bool flgo = ((WORD)(dst)) < 0;
        !          6895:        bool flgn = ((WORD)(newv)) < 0;
        !          6896:        regs.z = ((WORD)(newv)) == 0;
        !          6897:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6898:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          6899:        regs.n = flgn != 0;
        !          6900:        put_word(dsta,newv);
        !          6901: }}}}}}
        !          6902: void op_5d80(UWORD opcode)
        !          6903: {
        !          6904:        ULONG srcreg = 6;
        !          6905:        ULONG dstreg = (opcode & 7) >> 0;
        !          6906: {{     ULONG src = srcreg;
        !          6907: {      LONG dst = regs.d[dstreg];
        !          6908: {      ULONG newv = dst - src;
        !          6909: {      bool flgs = ((LONG)(src)) < 0;
        !          6910:        bool flgo = ((LONG)(dst)) < 0;
        !          6911:        bool flgn = ((LONG)(newv)) < 0;
        !          6912:        regs.z = ((LONG)(newv)) == 0;
        !          6913:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6914:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          6915:        regs.n = flgn != 0;
        !          6916:        regs.d[dstreg] = (newv);
        !          6917: }}}}}}
        !          6918: void op_5d88(UWORD opcode)
        !          6919: {
        !          6920:        ULONG srcreg = 6;
        !          6921:        ULONG dstreg = (opcode & 7) >> 0;
        !          6922: {{     ULONG src = srcreg;
        !          6923: {      LONG dst = regs.a[dstreg];
        !          6924: {      ULONG newv = dst - src;
        !          6925:        regs.a[dstreg] = (newv);
        !          6926: }}}}}
        !          6927: void op_5d90(UWORD opcode)
        !          6928: {
        !          6929:        ULONG srcreg = 6;
        !          6930:        ULONG dstreg = (opcode & 7) >> 0;
        !          6931: {{     ULONG src = srcreg;
        !          6932: {      CPTR dsta = regs.a[dstreg];
        !          6933:        LONG dst = get_long(dsta);
        !          6934: {      ULONG newv = dst - src;
        !          6935: {      bool flgs = ((LONG)(src)) < 0;
        !          6936:        bool flgo = ((LONG)(dst)) < 0;
        !          6937:        bool flgn = ((LONG)(newv)) < 0;
        !          6938:        regs.z = ((LONG)(newv)) == 0;
        !          6939:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6940:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          6941:        regs.n = flgn != 0;
        !          6942:        put_long(dsta,newv);
        !          6943: }}}}}}
        !          6944: void op_5d98(UWORD opcode)
        !          6945: {
        !          6946:        ULONG srcreg = 6;
        !          6947:        ULONG dstreg = (opcode & 7) >> 0;
        !          6948: {{     ULONG src = srcreg;
        !          6949: {      CPTR dsta = regs.a[dstreg];
        !          6950:        LONG dst = get_long(dsta);
        !          6951: {      regs.a[dstreg] += 4;
        !          6952: {      ULONG newv = dst - src;
        !          6953: {      bool flgs = ((LONG)(src)) < 0;
        !          6954:        bool flgo = ((LONG)(dst)) < 0;
        !          6955:        bool flgn = ((LONG)(newv)) < 0;
        !          6956:        regs.z = ((LONG)(newv)) == 0;
        !          6957:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6958:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          6959:        regs.n = flgn != 0;
        !          6960:        put_long(dsta,newv);
        !          6961: }}}}}}}
        !          6962: void op_5da0(UWORD opcode)
        !          6963: {
        !          6964:        ULONG srcreg = 6;
        !          6965:        ULONG dstreg = (opcode & 7) >> 0;
        !          6966: {{     ULONG src = srcreg;
        !          6967: {      regs.a[dstreg] -= 4;
        !          6968: {      CPTR dsta = regs.a[dstreg];
        !          6969:        LONG dst = get_long(dsta);
        !          6970: {      ULONG newv = dst - src;
        !          6971: {      bool flgs = ((LONG)(src)) < 0;
        !          6972:        bool flgo = ((LONG)(dst)) < 0;
        !          6973:        bool flgn = ((LONG)(newv)) < 0;
        !          6974:        regs.z = ((LONG)(newv)) == 0;
        !          6975:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6976:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          6977:        regs.n = flgn != 0;
        !          6978:        put_long(dsta,newv);
        !          6979: }}}}}}}
        !          6980: void op_5da8(UWORD opcode)
        !          6981: {
        !          6982:        ULONG srcreg = 6;
        !          6983:        ULONG dstreg = (opcode & 7) >> 0;
        !          6984: {{     ULONG src = srcreg;
        !          6985: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          6986:        LONG dst = get_long(dsta);
        !          6987: {      ULONG newv = dst - src;
        !          6988: {      bool flgs = ((LONG)(src)) < 0;
        !          6989:        bool flgo = ((LONG)(dst)) < 0;
        !          6990:        bool flgn = ((LONG)(newv)) < 0;
        !          6991:        regs.z = ((LONG)(newv)) == 0;
        !          6992:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          6993:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          6994:        regs.n = flgn != 0;
        !          6995:        put_long(dsta,newv);
        !          6996: }}}}}}
        !          6997: void op_5db0(UWORD opcode)
        !          6998: {
        !          6999:        ULONG srcreg = 6;
        !          7000:        ULONG dstreg = (opcode & 7) >> 0;
        !          7001: {{     ULONG src = srcreg;
        !          7002: {      CPTR dsta = regs.a[dstreg];
        !          7003:        UWORD dstdp = nextiword();
        !          7004:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          7005: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          7006:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          7007:        dsta += dstdpr;
        !          7008: {      LONG dst = get_long(dsta);
        !          7009: {      ULONG newv = dst - src;
        !          7010: {      bool flgs = ((LONG)(src)) < 0;
        !          7011:        bool flgo = ((LONG)(dst)) < 0;
        !          7012:        bool flgn = ((LONG)(newv)) < 0;
        !          7013:        regs.z = ((LONG)(newv)) == 0;
        !          7014:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7015:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          7016:        regs.n = flgn != 0;
        !          7017:        put_long(dsta,newv);
        !          7018: }}}}}}}}
        !          7019: void op_5db8(UWORD opcode)
        !          7020: {
        !          7021:        ULONG srcreg = 6;
        !          7022: {{     ULONG src = srcreg;
        !          7023: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          7024:        LONG dst = get_long(dsta);
        !          7025: {      ULONG newv = dst - src;
        !          7026: {      bool flgs = ((LONG)(src)) < 0;
        !          7027:        bool flgo = ((LONG)(dst)) < 0;
        !          7028:        bool flgn = ((LONG)(newv)) < 0;
        !          7029:        regs.z = ((LONG)(newv)) == 0;
        !          7030:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7031:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          7032:        regs.n = flgn != 0;
        !          7033:        put_long(dsta,newv);
        !          7034: }}}}}}
        !          7035: void op_5db9(UWORD opcode)
        !          7036: {
        !          7037:        ULONG srcreg = 6;
        !          7038: {{     ULONG src = srcreg;
        !          7039: {      CPTR dsta = nextilong();
        !          7040:        LONG dst = get_long(dsta);
        !          7041: {      ULONG newv = dst - src;
        !          7042: {      bool flgs = ((LONG)(src)) < 0;
        !          7043:        bool flgo = ((LONG)(dst)) < 0;
        !          7044:        bool flgn = ((LONG)(newv)) < 0;
        !          7045:        regs.z = ((LONG)(newv)) == 0;
        !          7046:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7047:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          7048:        regs.n = flgn != 0;
        !          7049:        put_long(dsta,newv);
        !          7050: }}}}}}
        !          7051: void op_5dc0(UWORD opcode)
        !          7052: {
        !          7053:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7054: {{{    int val = cctrue(13) ? 0xff : 0;
        !          7055:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          7056: }}}}
        !          7057: void op_5dc8(UWORD opcode)
        !          7058: {
        !          7059:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7060: {{     WORD src = regs.d[srcreg];
        !          7061: {      WORD offs = nextiword();
        !          7062:        if (!cctrue(13)) {
        !          7063:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          7064:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          7065:        }
        !          7066: }}}}
        !          7067: void op_5dd0(UWORD opcode)
        !          7068: {
        !          7069:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7070: {{     CPTR srca = regs.a[srcreg];
        !          7071: {      int val = cctrue(13) ? 0xff : 0;
        !          7072:        put_byte(srca,val);
        !          7073: }}}}
        !          7074: void op_5dd8(UWORD opcode)
        !          7075: {
        !          7076:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7077: {{     CPTR srca = regs.a[srcreg];
        !          7078: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          7079: {      int val = cctrue(13) ? 0xff : 0;
        !          7080:        put_byte(srca,val);
        !          7081: }}}}}
        !          7082: void op_5de0(UWORD opcode)
        !          7083: {
        !          7084:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7085: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          7086: {      CPTR srca = regs.a[srcreg];
        !          7087: {      int val = cctrue(13) ? 0xff : 0;
        !          7088:        put_byte(srca,val);
        !          7089: }}}}}
        !          7090: void op_5de8(UWORD opcode)
        !          7091: {
        !          7092:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7093: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          7094: {      int val = cctrue(13) ? 0xff : 0;
        !          7095:        put_byte(srca,val);
        !          7096: }}}}
        !          7097: void op_5df0(UWORD opcode)
        !          7098: {
        !          7099:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7100: {{     CPTR srca = regs.a[srcreg];
        !          7101:        UWORD srcdp = nextiword();
        !          7102:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          7103: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          7104:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          7105:        srca += srcdpr;
        !          7106: {      int val = cctrue(13) ? 0xff : 0;
        !          7107:        put_byte(srca,val);
        !          7108: }}}}}
        !          7109: void op_5df8(UWORD opcode)
        !          7110: {
        !          7111: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          7112: {      int val = cctrue(13) ? 0xff : 0;
        !          7113:        put_byte(srca,val);
        !          7114: }}}}
        !          7115: void op_5df9(UWORD opcode)
        !          7116: {
        !          7117: {{     CPTR srca = nextilong();
        !          7118: {      int val = cctrue(13) ? 0xff : 0;
        !          7119:        put_byte(srca,val);
        !          7120: }}}}
        !          7121: void op_5e00(UWORD opcode)
        !          7122: {
        !          7123:        ULONG srcreg = 7;
        !          7124:        ULONG dstreg = (opcode & 7) >> 0;
        !          7125: {{     ULONG src = srcreg;
        !          7126: {      BYTE dst = regs.d[dstreg];
        !          7127: {      ULONG newv = dst + src;
        !          7128: {      bool flgs = ((BYTE)(src)) < 0;
        !          7129:        bool flgo = ((BYTE)(dst)) < 0;
        !          7130:        bool flgn = ((BYTE)(newv)) < 0;
        !          7131:        regs.z = ((BYTE)(newv)) == 0;
        !          7132:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7133:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          7134:        regs.n = flgn != 0;
        !          7135:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          7136: }}}}}}
        !          7137: void op_5e10(UWORD opcode)
        !          7138: {
        !          7139:        ULONG srcreg = 7;
        !          7140:        ULONG dstreg = (opcode & 7) >> 0;
        !          7141: {{     ULONG src = srcreg;
        !          7142: {      CPTR dsta = regs.a[dstreg];
        !          7143:        BYTE dst = get_byte(dsta);
        !          7144: {      ULONG newv = dst + src;
        !          7145: {      bool flgs = ((BYTE)(src)) < 0;
        !          7146:        bool flgo = ((BYTE)(dst)) < 0;
        !          7147:        bool flgn = ((BYTE)(newv)) < 0;
        !          7148:        regs.z = ((BYTE)(newv)) == 0;
        !          7149:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7150:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          7151:        regs.n = flgn != 0;
        !          7152:        put_byte(dsta,newv);
        !          7153: }}}}}}
        !          7154: void op_5e18(UWORD opcode)
        !          7155: {
        !          7156:        ULONG srcreg = 7;
        !          7157:        ULONG dstreg = (opcode & 7) >> 0;
        !          7158: {{     ULONG src = srcreg;
        !          7159: {      CPTR dsta = regs.a[dstreg];
        !          7160:        BYTE dst = get_byte(dsta);
        !          7161: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          7162: {      ULONG newv = dst + src;
        !          7163: {      bool flgs = ((BYTE)(src)) < 0;
        !          7164:        bool flgo = ((BYTE)(dst)) < 0;
        !          7165:        bool flgn = ((BYTE)(newv)) < 0;
        !          7166:        regs.z = ((BYTE)(newv)) == 0;
        !          7167:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7168:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          7169:        regs.n = flgn != 0;
        !          7170:        put_byte(dsta,newv);
        !          7171: }}}}}}}
        !          7172: void op_5e20(UWORD opcode)
        !          7173: {
        !          7174:        ULONG srcreg = 7;
        !          7175:        ULONG dstreg = (opcode & 7) >> 0;
        !          7176: {{     ULONG src = srcreg;
        !          7177: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          7178: {      CPTR dsta = regs.a[dstreg];
        !          7179:        BYTE dst = get_byte(dsta);
        !          7180: {      ULONG newv = dst + src;
        !          7181: {      bool flgs = ((BYTE)(src)) < 0;
        !          7182:        bool flgo = ((BYTE)(dst)) < 0;
        !          7183:        bool flgn = ((BYTE)(newv)) < 0;
        !          7184:        regs.z = ((BYTE)(newv)) == 0;
        !          7185:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7186:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          7187:        regs.n = flgn != 0;
        !          7188:        put_byte(dsta,newv);
        !          7189: }}}}}}}
        !          7190: void op_5e28(UWORD opcode)
        !          7191: {
        !          7192:        ULONG srcreg = 7;
        !          7193:        ULONG dstreg = (opcode & 7) >> 0;
        !          7194: {{     ULONG src = srcreg;
        !          7195: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          7196:        BYTE dst = get_byte(dsta);
        !          7197: {      ULONG newv = dst + src;
        !          7198: {      bool flgs = ((BYTE)(src)) < 0;
        !          7199:        bool flgo = ((BYTE)(dst)) < 0;
        !          7200:        bool flgn = ((BYTE)(newv)) < 0;
        !          7201:        regs.z = ((BYTE)(newv)) == 0;
        !          7202:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7203:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          7204:        regs.n = flgn != 0;
        !          7205:        put_byte(dsta,newv);
        !          7206: }}}}}}
        !          7207: void op_5e30(UWORD opcode)
        !          7208: {
        !          7209:        ULONG srcreg = 7;
        !          7210:        ULONG dstreg = (opcode & 7) >> 0;
        !          7211: {{     ULONG src = srcreg;
        !          7212: {      CPTR dsta = regs.a[dstreg];
        !          7213:        UWORD dstdp = nextiword();
        !          7214:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          7215: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          7216:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          7217:        dsta += dstdpr;
        !          7218: {      BYTE dst = get_byte(dsta);
        !          7219: {      ULONG newv = dst + src;
        !          7220: {      bool flgs = ((BYTE)(src)) < 0;
        !          7221:        bool flgo = ((BYTE)(dst)) < 0;
        !          7222:        bool flgn = ((BYTE)(newv)) < 0;
        !          7223:        regs.z = ((BYTE)(newv)) == 0;
        !          7224:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7225:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          7226:        regs.n = flgn != 0;
        !          7227:        put_byte(dsta,newv);
        !          7228: }}}}}}}}
        !          7229: void op_5e38(UWORD opcode)
        !          7230: {
        !          7231:        ULONG srcreg = 7;
        !          7232: {{     ULONG src = srcreg;
        !          7233: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          7234:        BYTE dst = get_byte(dsta);
        !          7235: {      ULONG newv = dst + src;
        !          7236: {      bool flgs = ((BYTE)(src)) < 0;
        !          7237:        bool flgo = ((BYTE)(dst)) < 0;
        !          7238:        bool flgn = ((BYTE)(newv)) < 0;
        !          7239:        regs.z = ((BYTE)(newv)) == 0;
        !          7240:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7241:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          7242:        regs.n = flgn != 0;
        !          7243:        put_byte(dsta,newv);
        !          7244: }}}}}}
        !          7245: void op_5e39(UWORD opcode)
        !          7246: {
        !          7247:        ULONG srcreg = 7;
        !          7248: {{     ULONG src = srcreg;
        !          7249: {      CPTR dsta = nextilong();
        !          7250:        BYTE dst = get_byte(dsta);
        !          7251: {      ULONG newv = dst + src;
        !          7252: {      bool flgs = ((BYTE)(src)) < 0;
        !          7253:        bool flgo = ((BYTE)(dst)) < 0;
        !          7254:        bool flgn = ((BYTE)(newv)) < 0;
        !          7255:        regs.z = ((BYTE)(newv)) == 0;
        !          7256:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7257:        regs.c = regs.x = ((UBYTE)(~dst)) < ((UBYTE)(src));
        !          7258:        regs.n = flgn != 0;
        !          7259:        put_byte(dsta,newv);
        !          7260: }}}}}}
        !          7261: void op_5e40(UWORD opcode)
        !          7262: {
        !          7263:        ULONG srcreg = 7;
        !          7264:        ULONG dstreg = (opcode & 7) >> 0;
        !          7265: {{     ULONG src = srcreg;
        !          7266: {      WORD dst = regs.d[dstreg];
        !          7267: {      ULONG newv = dst + src;
        !          7268: {      bool flgs = ((WORD)(src)) < 0;
        !          7269:        bool flgo = ((WORD)(dst)) < 0;
        !          7270:        bool flgn = ((WORD)(newv)) < 0;
        !          7271:        regs.z = ((WORD)(newv)) == 0;
        !          7272:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7273:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          7274:        regs.n = flgn != 0;
        !          7275:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          7276: }}}}}}
        !          7277: void op_5e48(UWORD opcode)
        !          7278: {
        !          7279:        ULONG srcreg = 7;
        !          7280:        ULONG dstreg = (opcode & 7) >> 0;
        !          7281: {{     ULONG src = srcreg;
        !          7282: {      LONG dst = regs.a[dstreg];
        !          7283: {      ULONG newv = dst + src;
        !          7284:        regs.a[dstreg] = (newv);
        !          7285: }}}}}
        !          7286: void op_5e50(UWORD opcode)
        !          7287: {
        !          7288:        ULONG srcreg = 7;
        !          7289:        ULONG dstreg = (opcode & 7) >> 0;
        !          7290: {{     ULONG src = srcreg;
        !          7291: {      CPTR dsta = regs.a[dstreg];
        !          7292:        WORD dst = get_word(dsta);
        !          7293: {      ULONG newv = dst + src;
        !          7294: {      bool flgs = ((WORD)(src)) < 0;
        !          7295:        bool flgo = ((WORD)(dst)) < 0;
        !          7296:        bool flgn = ((WORD)(newv)) < 0;
        !          7297:        regs.z = ((WORD)(newv)) == 0;
        !          7298:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7299:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          7300:        regs.n = flgn != 0;
        !          7301:        put_word(dsta,newv);
        !          7302: }}}}}}
        !          7303: void op_5e58(UWORD opcode)
        !          7304: {
        !          7305:        ULONG srcreg = 7;
        !          7306:        ULONG dstreg = (opcode & 7) >> 0;
        !          7307: {{     ULONG src = srcreg;
        !          7308: {      CPTR dsta = regs.a[dstreg];
        !          7309:        WORD dst = get_word(dsta);
        !          7310: {      regs.a[dstreg] += 2;
        !          7311: {      ULONG newv = dst + src;
        !          7312: {      bool flgs = ((WORD)(src)) < 0;
        !          7313:        bool flgo = ((WORD)(dst)) < 0;
        !          7314:        bool flgn = ((WORD)(newv)) < 0;
        !          7315:        regs.z = ((WORD)(newv)) == 0;
        !          7316:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7317:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          7318:        regs.n = flgn != 0;
        !          7319:        put_word(dsta,newv);
        !          7320: }}}}}}}
        !          7321: void op_5e60(UWORD opcode)
        !          7322: {
        !          7323:        ULONG srcreg = 7;
        !          7324:        ULONG dstreg = (opcode & 7) >> 0;
        !          7325: {{     ULONG src = srcreg;
        !          7326: {      regs.a[dstreg] -= 2;
        !          7327: {      CPTR dsta = regs.a[dstreg];
        !          7328:        WORD dst = get_word(dsta);
        !          7329: {      ULONG newv = dst + src;
        !          7330: {      bool flgs = ((WORD)(src)) < 0;
        !          7331:        bool flgo = ((WORD)(dst)) < 0;
        !          7332:        bool flgn = ((WORD)(newv)) < 0;
        !          7333:        regs.z = ((WORD)(newv)) == 0;
        !          7334:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7335:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          7336:        regs.n = flgn != 0;
        !          7337:        put_word(dsta,newv);
        !          7338: }}}}}}}
        !          7339: void op_5e68(UWORD opcode)
        !          7340: {
        !          7341:        ULONG srcreg = 7;
        !          7342:        ULONG dstreg = (opcode & 7) >> 0;
        !          7343: {{     ULONG src = srcreg;
        !          7344: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          7345:        WORD dst = get_word(dsta);
        !          7346: {      ULONG newv = dst + src;
        !          7347: {      bool flgs = ((WORD)(src)) < 0;
        !          7348:        bool flgo = ((WORD)(dst)) < 0;
        !          7349:        bool flgn = ((WORD)(newv)) < 0;
        !          7350:        regs.z = ((WORD)(newv)) == 0;
        !          7351:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7352:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          7353:        regs.n = flgn != 0;
        !          7354:        put_word(dsta,newv);
        !          7355: }}}}}}
        !          7356: void op_5e70(UWORD opcode)
        !          7357: {
        !          7358:        ULONG srcreg = 7;
        !          7359:        ULONG dstreg = (opcode & 7) >> 0;
        !          7360: {{     ULONG src = srcreg;
        !          7361: {      CPTR dsta = regs.a[dstreg];
        !          7362:        UWORD dstdp = nextiword();
        !          7363:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          7364: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          7365:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          7366:        dsta += dstdpr;
        !          7367: {      WORD dst = get_word(dsta);
        !          7368: {      ULONG newv = dst + src;
        !          7369: {      bool flgs = ((WORD)(src)) < 0;
        !          7370:        bool flgo = ((WORD)(dst)) < 0;
        !          7371:        bool flgn = ((WORD)(newv)) < 0;
        !          7372:        regs.z = ((WORD)(newv)) == 0;
        !          7373:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7374:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          7375:        regs.n = flgn != 0;
        !          7376:        put_word(dsta,newv);
        !          7377: }}}}}}}}
        !          7378: void op_5e78(UWORD opcode)
        !          7379: {
        !          7380:        ULONG srcreg = 7;
        !          7381: {{     ULONG src = srcreg;
        !          7382: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          7383:        WORD dst = get_word(dsta);
        !          7384: {      ULONG newv = dst + src;
        !          7385: {      bool flgs = ((WORD)(src)) < 0;
        !          7386:        bool flgo = ((WORD)(dst)) < 0;
        !          7387:        bool flgn = ((WORD)(newv)) < 0;
        !          7388:        regs.z = ((WORD)(newv)) == 0;
        !          7389:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7390:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          7391:        regs.n = flgn != 0;
        !          7392:        put_word(dsta,newv);
        !          7393: }}}}}}
        !          7394: void op_5e79(UWORD opcode)
        !          7395: {
        !          7396:        ULONG srcreg = 7;
        !          7397: {{     ULONG src = srcreg;
        !          7398: {      CPTR dsta = nextilong();
        !          7399:        WORD dst = get_word(dsta);
        !          7400: {      ULONG newv = dst + src;
        !          7401: {      bool flgs = ((WORD)(src)) < 0;
        !          7402:        bool flgo = ((WORD)(dst)) < 0;
        !          7403:        bool flgn = ((WORD)(newv)) < 0;
        !          7404:        regs.z = ((WORD)(newv)) == 0;
        !          7405:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7406:        regs.c = regs.x = ((UWORD)(~dst)) < ((UWORD)(src));
        !          7407:        regs.n = flgn != 0;
        !          7408:        put_word(dsta,newv);
        !          7409: }}}}}}
        !          7410: void op_5e80(UWORD opcode)
        !          7411: {
        !          7412:        ULONG srcreg = 7;
        !          7413:        ULONG dstreg = (opcode & 7) >> 0;
        !          7414: {{     ULONG src = srcreg;
        !          7415: {      LONG dst = regs.d[dstreg];
        !          7416: {      ULONG newv = dst + src;
        !          7417: {      bool flgs = ((LONG)(src)) < 0;
        !          7418:        bool flgo = ((LONG)(dst)) < 0;
        !          7419:        bool flgn = ((LONG)(newv)) < 0;
        !          7420:        regs.z = ((LONG)(newv)) == 0;
        !          7421:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7422:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          7423:        regs.n = flgn != 0;
        !          7424:        regs.d[dstreg] = (newv);
        !          7425: }}}}}}
        !          7426: void op_5e88(UWORD opcode)
        !          7427: {
        !          7428:        ULONG srcreg = 7;
        !          7429:        ULONG dstreg = (opcode & 7) >> 0;
        !          7430: {{     ULONG src = srcreg;
        !          7431: {      LONG dst = regs.a[dstreg];
        !          7432: {      ULONG newv = dst + src;
        !          7433:        regs.a[dstreg] = (newv);
        !          7434: }}}}}
        !          7435: void op_5e90(UWORD opcode)
        !          7436: {
        !          7437:        ULONG srcreg = 7;
        !          7438:        ULONG dstreg = (opcode & 7) >> 0;
        !          7439: {{     ULONG src = srcreg;
        !          7440: {      CPTR dsta = regs.a[dstreg];
        !          7441:        LONG dst = get_long(dsta);
        !          7442: {      ULONG newv = dst + src;
        !          7443: {      bool flgs = ((LONG)(src)) < 0;
        !          7444:        bool flgo = ((LONG)(dst)) < 0;
        !          7445:        bool flgn = ((LONG)(newv)) < 0;
        !          7446:        regs.z = ((LONG)(newv)) == 0;
        !          7447:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7448:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          7449:        regs.n = flgn != 0;
        !          7450:        put_long(dsta,newv);
        !          7451: }}}}}}
        !          7452: void op_5e98(UWORD opcode)
        !          7453: {
        !          7454:        ULONG srcreg = 7;
        !          7455:        ULONG dstreg = (opcode & 7) >> 0;
        !          7456: {{     ULONG src = srcreg;
        !          7457: {      CPTR dsta = regs.a[dstreg];
        !          7458:        LONG dst = get_long(dsta);
        !          7459: {      regs.a[dstreg] += 4;
        !          7460: {      ULONG newv = dst + src;
        !          7461: {      bool flgs = ((LONG)(src)) < 0;
        !          7462:        bool flgo = ((LONG)(dst)) < 0;
        !          7463:        bool flgn = ((LONG)(newv)) < 0;
        !          7464:        regs.z = ((LONG)(newv)) == 0;
        !          7465:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7466:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          7467:        regs.n = flgn != 0;
        !          7468:        put_long(dsta,newv);
        !          7469: }}}}}}}
        !          7470: void op_5ea0(UWORD opcode)
        !          7471: {
        !          7472:        ULONG srcreg = 7;
        !          7473:        ULONG dstreg = (opcode & 7) >> 0;
        !          7474: {{     ULONG src = srcreg;
        !          7475: {      regs.a[dstreg] -= 4;
        !          7476: {      CPTR dsta = regs.a[dstreg];
        !          7477:        LONG dst = get_long(dsta);
        !          7478: {      ULONG newv = dst + src;
        !          7479: {      bool flgs = ((LONG)(src)) < 0;
        !          7480:        bool flgo = ((LONG)(dst)) < 0;
        !          7481:        bool flgn = ((LONG)(newv)) < 0;
        !          7482:        regs.z = ((LONG)(newv)) == 0;
        !          7483:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7484:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          7485:        regs.n = flgn != 0;
        !          7486:        put_long(dsta,newv);
        !          7487: }}}}}}}
        !          7488: void op_5ea8(UWORD opcode)
        !          7489: {
        !          7490:        ULONG srcreg = 7;
        !          7491:        ULONG dstreg = (opcode & 7) >> 0;
        !          7492: {{     ULONG src = srcreg;
        !          7493: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          7494:        LONG dst = get_long(dsta);
        !          7495: {      ULONG newv = dst + src;
        !          7496: {      bool flgs = ((LONG)(src)) < 0;
        !          7497:        bool flgo = ((LONG)(dst)) < 0;
        !          7498:        bool flgn = ((LONG)(newv)) < 0;
        !          7499:        regs.z = ((LONG)(newv)) == 0;
        !          7500:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7501:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          7502:        regs.n = flgn != 0;
        !          7503:        put_long(dsta,newv);
        !          7504: }}}}}}
        !          7505: void op_5eb0(UWORD opcode)
        !          7506: {
        !          7507:        ULONG srcreg = 7;
        !          7508:        ULONG dstreg = (opcode & 7) >> 0;
        !          7509: {{     ULONG src = srcreg;
        !          7510: {      CPTR dsta = regs.a[dstreg];
        !          7511:        UWORD dstdp = nextiword();
        !          7512:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          7513: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          7514:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          7515:        dsta += dstdpr;
        !          7516: {      LONG dst = get_long(dsta);
        !          7517: {      ULONG newv = dst + src;
        !          7518: {      bool flgs = ((LONG)(src)) < 0;
        !          7519:        bool flgo = ((LONG)(dst)) < 0;
        !          7520:        bool flgn = ((LONG)(newv)) < 0;
        !          7521:        regs.z = ((LONG)(newv)) == 0;
        !          7522:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7523:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          7524:        regs.n = flgn != 0;
        !          7525:        put_long(dsta,newv);
        !          7526: }}}}}}}}
        !          7527: void op_5eb8(UWORD opcode)
        !          7528: {
        !          7529:        ULONG srcreg = 7;
        !          7530: {{     ULONG src = srcreg;
        !          7531: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          7532:        LONG dst = get_long(dsta);
        !          7533: {      ULONG newv = dst + src;
        !          7534: {      bool flgs = ((LONG)(src)) < 0;
        !          7535:        bool flgo = ((LONG)(dst)) < 0;
        !          7536:        bool flgn = ((LONG)(newv)) < 0;
        !          7537:        regs.z = ((LONG)(newv)) == 0;
        !          7538:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7539:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          7540:        regs.n = flgn != 0;
        !          7541:        put_long(dsta,newv);
        !          7542: }}}}}}
        !          7543: void op_5eb9(UWORD opcode)
        !          7544: {
        !          7545:        ULONG srcreg = 7;
        !          7546: {{     ULONG src = srcreg;
        !          7547: {      CPTR dsta = nextilong();
        !          7548:        LONG dst = get_long(dsta);
        !          7549: {      ULONG newv = dst + src;
        !          7550: {      bool flgs = ((LONG)(src)) < 0;
        !          7551:        bool flgo = ((LONG)(dst)) < 0;
        !          7552:        bool flgn = ((LONG)(newv)) < 0;
        !          7553:        regs.z = ((LONG)(newv)) == 0;
        !          7554:        regs.v = (flgs == flgo) && (flgn != flgo);
        !          7555:        regs.c = regs.x = ((ULONG)(~dst)) < ((ULONG)(src));
        !          7556:        regs.n = flgn != 0;
        !          7557:        put_long(dsta,newv);
        !          7558: }}}}}}
        !          7559: void op_5ec0(UWORD opcode)
        !          7560: {
        !          7561:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7562: {{{    int val = cctrue(14) ? 0xff : 0;
        !          7563:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          7564: }}}}
        !          7565: void op_5ec8(UWORD opcode)
        !          7566: {
        !          7567:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7568: {{     WORD src = regs.d[srcreg];
        !          7569: {      WORD offs = nextiword();
        !          7570:        if (!cctrue(14)) {
        !          7571:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          7572:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          7573:        }
        !          7574: }}}}
        !          7575: void op_5ed0(UWORD opcode)
        !          7576: {
        !          7577:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7578: {{     CPTR srca = regs.a[srcreg];
        !          7579: {      int val = cctrue(14) ? 0xff : 0;
        !          7580:        put_byte(srca,val);
        !          7581: }}}}
        !          7582: void op_5ed8(UWORD opcode)
        !          7583: {
        !          7584:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7585: {{     CPTR srca = regs.a[srcreg];
        !          7586: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          7587: {      int val = cctrue(14) ? 0xff : 0;
        !          7588:        put_byte(srca,val);
        !          7589: }}}}}
        !          7590: void op_5ee0(UWORD opcode)
        !          7591: {
        !          7592:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7593: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          7594: {      CPTR srca = regs.a[srcreg];
        !          7595: {      int val = cctrue(14) ? 0xff : 0;
        !          7596:        put_byte(srca,val);
        !          7597: }}}}}
        !          7598: void op_5ee8(UWORD opcode)
        !          7599: {
        !          7600:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7601: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          7602: {      int val = cctrue(14) ? 0xff : 0;
        !          7603:        put_byte(srca,val);
        !          7604: }}}}
        !          7605: void op_5ef0(UWORD opcode)
        !          7606: {
        !          7607:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          7608: {{     CPTR srca = regs.a[srcreg];
        !          7609:        UWORD srcdp = nextiword();
        !          7610:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          7611: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          7612:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          7613:        srca += srcdpr;
        !          7614: {      int val = cctrue(14) ? 0xff : 0;
        !          7615:        put_byte(srca,val);
        !          7616: }}}}}
        !          7617: void op_5ef8(UWORD opcode)
        !          7618: {
        !          7619: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          7620: {      int val = cctrue(14) ? 0xff : 0;
        !          7621:        put_byte(srca,val);
        !          7622: }}}}
        !          7623: void op_5ef9(UWORD opcode)
        !          7624: {
        !          7625: {{     CPTR srca = nextilong();
        !          7626: {      int val = cctrue(14) ? 0xff : 0;
        !          7627:        put_byte(srca,val);
        !          7628: }}}}
        !          7629: void op_5f00(UWORD opcode)
        !          7630: {
        !          7631:        ULONG srcreg = 7;
        !          7632:        ULONG dstreg = (opcode & 7) >> 0;
        !          7633: {{     ULONG src = srcreg;
        !          7634: {      BYTE dst = regs.d[dstreg];
        !          7635: {      ULONG newv = dst - src;
        !          7636: {      bool flgs = ((BYTE)(src)) < 0;
        !          7637:        bool flgo = ((BYTE)(dst)) < 0;
        !          7638:        bool flgn = ((BYTE)(newv)) < 0;
        !          7639:        regs.z = ((BYTE)(newv)) == 0;
        !          7640:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7641:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          7642:        regs.n = flgn != 0;
        !          7643:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !          7644: }}}}}}
        !          7645: void op_5f10(UWORD opcode)
        !          7646: {
        !          7647:        ULONG srcreg = 7;
        !          7648:        ULONG dstreg = (opcode & 7) >> 0;
        !          7649: {{     ULONG src = srcreg;
        !          7650: {      CPTR dsta = regs.a[dstreg];
        !          7651:        BYTE dst = get_byte(dsta);
        !          7652: {      ULONG newv = dst - src;
        !          7653: {      bool flgs = ((BYTE)(src)) < 0;
        !          7654:        bool flgo = ((BYTE)(dst)) < 0;
        !          7655:        bool flgn = ((BYTE)(newv)) < 0;
        !          7656:        regs.z = ((BYTE)(newv)) == 0;
        !          7657:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7658:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          7659:        regs.n = flgn != 0;
        !          7660:        put_byte(dsta,newv);
        !          7661: }}}}}}
        !          7662: void op_5f18(UWORD opcode)
        !          7663: {
        !          7664:        ULONG srcreg = 7;
        !          7665:        ULONG dstreg = (opcode & 7) >> 0;
        !          7666: {{     ULONG src = srcreg;
        !          7667: {      CPTR dsta = regs.a[dstreg];
        !          7668:        BYTE dst = get_byte(dsta);
        !          7669: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !          7670: {      ULONG newv = dst - src;
        !          7671: {      bool flgs = ((BYTE)(src)) < 0;
        !          7672:        bool flgo = ((BYTE)(dst)) < 0;
        !          7673:        bool flgn = ((BYTE)(newv)) < 0;
        !          7674:        regs.z = ((BYTE)(newv)) == 0;
        !          7675:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7676:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          7677:        regs.n = flgn != 0;
        !          7678:        put_byte(dsta,newv);
        !          7679: }}}}}}}
        !          7680: void op_5f20(UWORD opcode)
        !          7681: {
        !          7682:        ULONG srcreg = 7;
        !          7683:        ULONG dstreg = (opcode & 7) >> 0;
        !          7684: {{     ULONG src = srcreg;
        !          7685: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !          7686: {      CPTR dsta = regs.a[dstreg];
        !          7687:        BYTE dst = get_byte(dsta);
        !          7688: {      ULONG newv = dst - src;
        !          7689: {      bool flgs = ((BYTE)(src)) < 0;
        !          7690:        bool flgo = ((BYTE)(dst)) < 0;
        !          7691:        bool flgn = ((BYTE)(newv)) < 0;
        !          7692:        regs.z = ((BYTE)(newv)) == 0;
        !          7693:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7694:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          7695:        regs.n = flgn != 0;
        !          7696:        put_byte(dsta,newv);
        !          7697: }}}}}}}
        !          7698: void op_5f28(UWORD opcode)
        !          7699: {
        !          7700:        ULONG srcreg = 7;
        !          7701:        ULONG dstreg = (opcode & 7) >> 0;
        !          7702: {{     ULONG src = srcreg;
        !          7703: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          7704:        BYTE dst = get_byte(dsta);
        !          7705: {      ULONG newv = dst - src;
        !          7706: {      bool flgs = ((BYTE)(src)) < 0;
        !          7707:        bool flgo = ((BYTE)(dst)) < 0;
        !          7708:        bool flgn = ((BYTE)(newv)) < 0;
        !          7709:        regs.z = ((BYTE)(newv)) == 0;
        !          7710:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7711:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          7712:        regs.n = flgn != 0;
        !          7713:        put_byte(dsta,newv);
        !          7714: }}}}}}
        !          7715: void op_5f30(UWORD opcode)
        !          7716: {
        !          7717:        ULONG srcreg = 7;
        !          7718:        ULONG dstreg = (opcode & 7) >> 0;
        !          7719: {{     ULONG src = srcreg;
        !          7720: {      CPTR dsta = regs.a[dstreg];
        !          7721:        UWORD dstdp = nextiword();
        !          7722:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          7723: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          7724:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          7725:        dsta += dstdpr;
        !          7726: {      BYTE dst = get_byte(dsta);
        !          7727: {      ULONG newv = dst - src;
        !          7728: {      bool flgs = ((BYTE)(src)) < 0;
        !          7729:        bool flgo = ((BYTE)(dst)) < 0;
        !          7730:        bool flgn = ((BYTE)(newv)) < 0;
        !          7731:        regs.z = ((BYTE)(newv)) == 0;
        !          7732:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7733:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          7734:        regs.n = flgn != 0;
        !          7735:        put_byte(dsta,newv);
        !          7736: }}}}}}}}
        !          7737: void op_5f38(UWORD opcode)
        !          7738: {
        !          7739:        ULONG srcreg = 7;
        !          7740: {{     ULONG src = srcreg;
        !          7741: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          7742:        BYTE dst = get_byte(dsta);
        !          7743: {      ULONG newv = dst - src;
        !          7744: {      bool flgs = ((BYTE)(src)) < 0;
        !          7745:        bool flgo = ((BYTE)(dst)) < 0;
        !          7746:        bool flgn = ((BYTE)(newv)) < 0;
        !          7747:        regs.z = ((BYTE)(newv)) == 0;
        !          7748:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7749:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          7750:        regs.n = flgn != 0;
        !          7751:        put_byte(dsta,newv);
        !          7752: }}}}}}
        !          7753: void op_5f39(UWORD opcode)
        !          7754: {
        !          7755:        ULONG srcreg = 7;
        !          7756: {{     ULONG src = srcreg;
        !          7757: {      CPTR dsta = nextilong();
        !          7758:        BYTE dst = get_byte(dsta);
        !          7759: {      ULONG newv = dst - src;
        !          7760: {      bool flgs = ((BYTE)(src)) < 0;
        !          7761:        bool flgo = ((BYTE)(dst)) < 0;
        !          7762:        bool flgn = ((BYTE)(newv)) < 0;
        !          7763:        regs.z = ((BYTE)(newv)) == 0;
        !          7764:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7765:        regs.c = regs.x = ((UBYTE)(src)) > ((UBYTE)(dst));
        !          7766:        regs.n = flgn != 0;
        !          7767:        put_byte(dsta,newv);
        !          7768: }}}}}}
        !          7769: void op_5f40(UWORD opcode)
        !          7770: {
        !          7771:        ULONG srcreg = 7;
        !          7772:        ULONG dstreg = (opcode & 7) >> 0;
        !          7773: {{     ULONG src = srcreg;
        !          7774: {      WORD dst = regs.d[dstreg];
        !          7775: {      ULONG newv = dst - src;
        !          7776: {      bool flgs = ((WORD)(src)) < 0;
        !          7777:        bool flgo = ((WORD)(dst)) < 0;
        !          7778:        bool flgn = ((WORD)(newv)) < 0;
        !          7779:        regs.z = ((WORD)(newv)) == 0;
        !          7780:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7781:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          7782:        regs.n = flgn != 0;
        !          7783:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (newv) & 0xffff;
        !          7784: }}}}}}
        !          7785: void op_5f48(UWORD opcode)
        !          7786: {
        !          7787:        ULONG srcreg = 7;
        !          7788:        ULONG dstreg = (opcode & 7) >> 0;
        !          7789: {{     ULONG src = srcreg;
        !          7790: {      LONG dst = regs.a[dstreg];
        !          7791: {      ULONG newv = dst - src;
        !          7792:        regs.a[dstreg] = (newv);
        !          7793: }}}}}
        !          7794: void op_5f50(UWORD opcode)
        !          7795: {
        !          7796:        ULONG srcreg = 7;
        !          7797:        ULONG dstreg = (opcode & 7) >> 0;
        !          7798: {{     ULONG src = srcreg;
        !          7799: {      CPTR dsta = regs.a[dstreg];
        !          7800:        WORD dst = get_word(dsta);
        !          7801: {      ULONG newv = dst - src;
        !          7802: {      bool flgs = ((WORD)(src)) < 0;
        !          7803:        bool flgo = ((WORD)(dst)) < 0;
        !          7804:        bool flgn = ((WORD)(newv)) < 0;
        !          7805:        regs.z = ((WORD)(newv)) == 0;
        !          7806:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7807:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          7808:        regs.n = flgn != 0;
        !          7809:        put_word(dsta,newv);
        !          7810: }}}}}}
        !          7811: void op_5f58(UWORD opcode)
        !          7812: {
        !          7813:        ULONG srcreg = 7;
        !          7814:        ULONG dstreg = (opcode & 7) >> 0;
        !          7815: {{     ULONG src = srcreg;
        !          7816: {      CPTR dsta = regs.a[dstreg];
        !          7817:        WORD dst = get_word(dsta);
        !          7818: {      regs.a[dstreg] += 2;
        !          7819: {      ULONG newv = dst - src;
        !          7820: {      bool flgs = ((WORD)(src)) < 0;
        !          7821:        bool flgo = ((WORD)(dst)) < 0;
        !          7822:        bool flgn = ((WORD)(newv)) < 0;
        !          7823:        regs.z = ((WORD)(newv)) == 0;
        !          7824:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7825:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          7826:        regs.n = flgn != 0;
        !          7827:        put_word(dsta,newv);
        !          7828: }}}}}}}
        !          7829: void op_5f60(UWORD opcode)
        !          7830: {
        !          7831:        ULONG srcreg = 7;
        !          7832:        ULONG dstreg = (opcode & 7) >> 0;
        !          7833: {{     ULONG src = srcreg;
        !          7834: {      regs.a[dstreg] -= 2;
        !          7835: {      CPTR dsta = regs.a[dstreg];
        !          7836:        WORD dst = get_word(dsta);
        !          7837: {      ULONG newv = dst - src;
        !          7838: {      bool flgs = ((WORD)(src)) < 0;
        !          7839:        bool flgo = ((WORD)(dst)) < 0;
        !          7840:        bool flgn = ((WORD)(newv)) < 0;
        !          7841:        regs.z = ((WORD)(newv)) == 0;
        !          7842:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7843:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          7844:        regs.n = flgn != 0;
        !          7845:        put_word(dsta,newv);
        !          7846: }}}}}}}
        !          7847: void op_5f68(UWORD opcode)
        !          7848: {
        !          7849:        ULONG srcreg = 7;
        !          7850:        ULONG dstreg = (opcode & 7) >> 0;
        !          7851: {{     ULONG src = srcreg;
        !          7852: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          7853:        WORD dst = get_word(dsta);
        !          7854: {      ULONG newv = dst - src;
        !          7855: {      bool flgs = ((WORD)(src)) < 0;
        !          7856:        bool flgo = ((WORD)(dst)) < 0;
        !          7857:        bool flgn = ((WORD)(newv)) < 0;
        !          7858:        regs.z = ((WORD)(newv)) == 0;
        !          7859:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7860:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          7861:        regs.n = flgn != 0;
        !          7862:        put_word(dsta,newv);
        !          7863: }}}}}}
        !          7864: void op_5f70(UWORD opcode)
        !          7865: {
        !          7866:        ULONG srcreg = 7;
        !          7867:        ULONG dstreg = (opcode & 7) >> 0;
        !          7868: {{     ULONG src = srcreg;
        !          7869: {      CPTR dsta = regs.a[dstreg];
        !          7870:        UWORD dstdp = nextiword();
        !          7871:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          7872: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          7873:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          7874:        dsta += dstdpr;
        !          7875: {      WORD dst = get_word(dsta);
        !          7876: {      ULONG newv = dst - src;
        !          7877: {      bool flgs = ((WORD)(src)) < 0;
        !          7878:        bool flgo = ((WORD)(dst)) < 0;
        !          7879:        bool flgn = ((WORD)(newv)) < 0;
        !          7880:        regs.z = ((WORD)(newv)) == 0;
        !          7881:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7882:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          7883:        regs.n = flgn != 0;
        !          7884:        put_word(dsta,newv);
        !          7885: }}}}}}}}
        !          7886: void op_5f78(UWORD opcode)
        !          7887: {
        !          7888:        ULONG srcreg = 7;
        !          7889: {{     ULONG src = srcreg;
        !          7890: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          7891:        WORD dst = get_word(dsta);
        !          7892: {      ULONG newv = dst - src;
        !          7893: {      bool flgs = ((WORD)(src)) < 0;
        !          7894:        bool flgo = ((WORD)(dst)) < 0;
        !          7895:        bool flgn = ((WORD)(newv)) < 0;
        !          7896:        regs.z = ((WORD)(newv)) == 0;
        !          7897:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7898:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          7899:        regs.n = flgn != 0;
        !          7900:        put_word(dsta,newv);
        !          7901: }}}}}}
        !          7902: void op_5f79(UWORD opcode)
        !          7903: {
        !          7904:        ULONG srcreg = 7;
        !          7905: {{     ULONG src = srcreg;
        !          7906: {      CPTR dsta = nextilong();
        !          7907:        WORD dst = get_word(dsta);
        !          7908: {      ULONG newv = dst - src;
        !          7909: {      bool flgs = ((WORD)(src)) < 0;
        !          7910:        bool flgo = ((WORD)(dst)) < 0;
        !          7911:        bool flgn = ((WORD)(newv)) < 0;
        !          7912:        regs.z = ((WORD)(newv)) == 0;
        !          7913:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7914:        regs.c = regs.x = ((UWORD)(src)) > ((UWORD)(dst));
        !          7915:        regs.n = flgn != 0;
        !          7916:        put_word(dsta,newv);
        !          7917: }}}}}}
        !          7918: void op_5f80(UWORD opcode)
        !          7919: {
        !          7920:        ULONG srcreg = 7;
        !          7921:        ULONG dstreg = (opcode & 7) >> 0;
        !          7922: {{     ULONG src = srcreg;
        !          7923: {      LONG dst = regs.d[dstreg];
        !          7924: {      ULONG newv = dst - src;
        !          7925: {      bool flgs = ((LONG)(src)) < 0;
        !          7926:        bool flgo = ((LONG)(dst)) < 0;
        !          7927:        bool flgn = ((LONG)(newv)) < 0;
        !          7928:        regs.z = ((LONG)(newv)) == 0;
        !          7929:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7930:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          7931:        regs.n = flgn != 0;
        !          7932:        regs.d[dstreg] = (newv);
        !          7933: }}}}}}
        !          7934: void op_5f88(UWORD opcode)
        !          7935: {
        !          7936:        ULONG srcreg = 7;
        !          7937:        ULONG dstreg = (opcode & 7) >> 0;
        !          7938: {{     ULONG src = srcreg;
        !          7939: {      LONG dst = regs.a[dstreg];
        !          7940: {      ULONG newv = dst - src;
        !          7941:        regs.a[dstreg] = (newv);
        !          7942: }}}}}
        !          7943: void op_5f90(UWORD opcode)
        !          7944: {
        !          7945:        ULONG srcreg = 7;
        !          7946:        ULONG dstreg = (opcode & 7) >> 0;
        !          7947: {{     ULONG src = srcreg;
        !          7948: {      CPTR dsta = regs.a[dstreg];
        !          7949:        LONG dst = get_long(dsta);
        !          7950: {      ULONG newv = dst - src;
        !          7951: {      bool flgs = ((LONG)(src)) < 0;
        !          7952:        bool flgo = ((LONG)(dst)) < 0;
        !          7953:        bool flgn = ((LONG)(newv)) < 0;
        !          7954:        regs.z = ((LONG)(newv)) == 0;
        !          7955:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7956:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          7957:        regs.n = flgn != 0;
        !          7958:        put_long(dsta,newv);
        !          7959: }}}}}}
        !          7960: void op_5f98(UWORD opcode)
        !          7961: {
        !          7962:        ULONG srcreg = 7;
        !          7963:        ULONG dstreg = (opcode & 7) >> 0;
        !          7964: {{     ULONG src = srcreg;
        !          7965: {      CPTR dsta = regs.a[dstreg];
        !          7966:        LONG dst = get_long(dsta);
        !          7967: {      regs.a[dstreg] += 4;
        !          7968: {      ULONG newv = dst - src;
        !          7969: {      bool flgs = ((LONG)(src)) < 0;
        !          7970:        bool flgo = ((LONG)(dst)) < 0;
        !          7971:        bool flgn = ((LONG)(newv)) < 0;
        !          7972:        regs.z = ((LONG)(newv)) == 0;
        !          7973:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7974:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          7975:        regs.n = flgn != 0;
        !          7976:        put_long(dsta,newv);
        !          7977: }}}}}}}
        !          7978: void op_5fa0(UWORD opcode)
        !          7979: {
        !          7980:        ULONG srcreg = 7;
        !          7981:        ULONG dstreg = (opcode & 7) >> 0;
        !          7982: {{     ULONG src = srcreg;
        !          7983: {      regs.a[dstreg] -= 4;
        !          7984: {      CPTR dsta = regs.a[dstreg];
        !          7985:        LONG dst = get_long(dsta);
        !          7986: {      ULONG newv = dst - src;
        !          7987: {      bool flgs = ((LONG)(src)) < 0;
        !          7988:        bool flgo = ((LONG)(dst)) < 0;
        !          7989:        bool flgn = ((LONG)(newv)) < 0;
        !          7990:        regs.z = ((LONG)(newv)) == 0;
        !          7991:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          7992:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          7993:        regs.n = flgn != 0;
        !          7994:        put_long(dsta,newv);
        !          7995: }}}}}}}
        !          7996: void op_5fa8(UWORD opcode)
        !          7997: {
        !          7998:        ULONG srcreg = 7;
        !          7999:        ULONG dstreg = (opcode & 7) >> 0;
        !          8000: {{     ULONG src = srcreg;
        !          8001: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !          8002:        LONG dst = get_long(dsta);
        !          8003: {      ULONG newv = dst - src;
        !          8004: {      bool flgs = ((LONG)(src)) < 0;
        !          8005:        bool flgo = ((LONG)(dst)) < 0;
        !          8006:        bool flgn = ((LONG)(newv)) < 0;
        !          8007:        regs.z = ((LONG)(newv)) == 0;
        !          8008:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          8009:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          8010:        regs.n = flgn != 0;
        !          8011:        put_long(dsta,newv);
        !          8012: }}}}}}
        !          8013: void op_5fb0(UWORD opcode)
        !          8014: {
        !          8015:        ULONG srcreg = 7;
        !          8016:        ULONG dstreg = (opcode & 7) >> 0;
        !          8017: {{     ULONG src = srcreg;
        !          8018: {      CPTR dsta = regs.a[dstreg];
        !          8019:        UWORD dstdp = nextiword();
        !          8020:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !          8021: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !          8022:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !          8023:        dsta += dstdpr;
        !          8024: {      LONG dst = get_long(dsta);
        !          8025: {      ULONG newv = dst - src;
        !          8026: {      bool flgs = ((LONG)(src)) < 0;
        !          8027:        bool flgo = ((LONG)(dst)) < 0;
        !          8028:        bool flgn = ((LONG)(newv)) < 0;
        !          8029:        regs.z = ((LONG)(newv)) == 0;
        !          8030:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          8031:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          8032:        regs.n = flgn != 0;
        !          8033:        put_long(dsta,newv);
        !          8034: }}}}}}}}
        !          8035: void op_5fb8(UWORD opcode)
        !          8036: {
        !          8037:        ULONG srcreg = 7;
        !          8038: {{     ULONG src = srcreg;
        !          8039: {      CPTR dsta = (LONG)(WORD)nextiword();
        !          8040:        LONG dst = get_long(dsta);
        !          8041: {      ULONG newv = dst - src;
        !          8042: {      bool flgs = ((LONG)(src)) < 0;
        !          8043:        bool flgo = ((LONG)(dst)) < 0;
        !          8044:        bool flgn = ((LONG)(newv)) < 0;
        !          8045:        regs.z = ((LONG)(newv)) == 0;
        !          8046:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          8047:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          8048:        regs.n = flgn != 0;
        !          8049:        put_long(dsta,newv);
        !          8050: }}}}}}
        !          8051: void op_5fb9(UWORD opcode)
        !          8052: {
        !          8053:        ULONG srcreg = 7;
        !          8054: {{     ULONG src = srcreg;
        !          8055: {      CPTR dsta = nextilong();
        !          8056:        LONG dst = get_long(dsta);
        !          8057: {      ULONG newv = dst - src;
        !          8058: {      bool flgs = ((LONG)(src)) < 0;
        !          8059:        bool flgo = ((LONG)(dst)) < 0;
        !          8060:        bool flgn = ((LONG)(newv)) < 0;
        !          8061:        regs.z = ((LONG)(newv)) == 0;
        !          8062:        regs.v = (flgs != flgo) && (flgn != flgo);
        !          8063:        regs.c = regs.x = ((ULONG)(src)) > ((ULONG)(dst));
        !          8064:        regs.n = flgn != 0;
        !          8065:        put_long(dsta,newv);
        !          8066: }}}}}}
        !          8067: void op_5fc0(UWORD opcode)
        !          8068: {
        !          8069:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          8070: {{{    int val = cctrue(15) ? 0xff : 0;
        !          8071:        regs.d[srcreg] &= ~0xff; regs.d[srcreg] |= (val) & 0xff;
        !          8072: }}}}
        !          8073: void op_5fc8(UWORD opcode)
        !          8074: {
        !          8075:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          8076: {{     WORD src = regs.d[srcreg];
        !          8077: {      WORD offs = nextiword();
        !          8078:        if (!cctrue(15)) {
        !          8079:        if (src--) regs.pc_p = (UWORD *)((char *)regs.pc_p + offs - 2);
        !          8080:        regs.d[srcreg] &= ~0xffff; regs.d[srcreg] |= (src) & 0xffff;
        !          8081:        }
        !          8082: }}}}
        !          8083: void op_5fd0(UWORD opcode)
        !          8084: {
        !          8085:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          8086: {{     CPTR srca = regs.a[srcreg];
        !          8087: {      int val = cctrue(15) ? 0xff : 0;
        !          8088:        put_byte(srca,val);
        !          8089: }}}}
        !          8090: void op_5fd8(UWORD opcode)
        !          8091: {
        !          8092:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          8093: {{     CPTR srca = regs.a[srcreg];
        !          8094: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !          8095: {      int val = cctrue(15) ? 0xff : 0;
        !          8096:        put_byte(srca,val);
        !          8097: }}}}}
        !          8098: void op_5fe0(UWORD opcode)
        !          8099: {
        !          8100:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          8101: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !          8102: {      CPTR srca = regs.a[srcreg];
        !          8103: {      int val = cctrue(15) ? 0xff : 0;
        !          8104:        put_byte(srca,val);
        !          8105: }}}}}
        !          8106: void op_5fe8(UWORD opcode)
        !          8107: {
        !          8108:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          8109: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          8110: {      int val = cctrue(15) ? 0xff : 0;
        !          8111:        put_byte(srca,val);
        !          8112: }}}}
        !          8113: void op_5ff0(UWORD opcode)
        !          8114: {
        !          8115:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          8116: {{     CPTR srca = regs.a[srcreg];
        !          8117:        UWORD srcdp = nextiword();
        !          8118:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          8119: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          8120:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          8121:        srca += srcdpr;
        !          8122: {      int val = cctrue(15) ? 0xff : 0;
        !          8123:        put_byte(srca,val);
        !          8124: }}}}}
        !          8125: void op_5ff8(UWORD opcode)
        !          8126: {
        !          8127: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          8128: {      int val = cctrue(15) ? 0xff : 0;
        !          8129:        put_byte(srca,val);
        !          8130: }}}}
        !          8131: void op_5ff9(UWORD opcode)
        !          8132: {
        !          8133: {{     CPTR srca = nextilong();
        !          8134: {      int val = cctrue(15) ? 0xff : 0;
        !          8135:        put_byte(srca,val);
        !          8136: }}}}

unix.superglobalmegacorp.com

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