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

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

unix.superglobalmegacorp.com

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