Annotation of uae/CPU Sources/cpu4.c, revision 1.1

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

unix.superglobalmegacorp.com

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