Annotation of uae/CPU Sources/cpuC.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_c000(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:        src &= dst;
        !            16:        regs.v = regs.c = 0;
        !            17:        regs.z = ((BYTE)(src)) == 0;
        !            18:        regs.n = ((BYTE)(src)) < 0;
        !            19:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
        !            20: }}}}
        !            21: void op_c010(UWORD opcode)
        !            22: {
        !            23:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !            24:        ULONG dstreg = (opcode & 3584) >> 9;
        !            25: {{     CPTR srca = regs.a[srcreg];
        !            26:        BYTE src = get_byte(srca);
        !            27: {      BYTE dst = regs.d[dstreg];
        !            28:        src &= dst;
        !            29:        regs.v = regs.c = 0;
        !            30:        regs.z = ((BYTE)(src)) == 0;
        !            31:        regs.n = ((BYTE)(src)) < 0;
        !            32:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
        !            33: }}}}
        !            34: void op_c018(UWORD opcode)
        !            35: {
        !            36:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !            37:        ULONG dstreg = (opcode & 3584) >> 9;
        !            38: {{     CPTR srca = regs.a[srcreg];
        !            39:        BYTE src = get_byte(srca);
        !            40: {      regs.a[srcreg] += (srcreg == 7) ? 2 : 1;
        !            41: {      BYTE dst = regs.d[dstreg];
        !            42:        src &= dst;
        !            43:        regs.v = regs.c = 0;
        !            44:        regs.z = ((BYTE)(src)) == 0;
        !            45:        regs.n = ((BYTE)(src)) < 0;
        !            46:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
        !            47: }}}}}
        !            48: void op_c020(UWORD opcode)
        !            49: {
        !            50:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !            51:        ULONG dstreg = (opcode & 3584) >> 9;
        !            52: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !            53: {      CPTR srca = regs.a[srcreg];
        !            54:        BYTE src = get_byte(srca);
        !            55: {      BYTE dst = regs.d[dstreg];
        !            56:        src &= dst;
        !            57:        regs.v = regs.c = 0;
        !            58:        regs.z = ((BYTE)(src)) == 0;
        !            59:        regs.n = ((BYTE)(src)) < 0;
        !            60:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
        !            61: }}}}}
        !            62: void op_c028(UWORD opcode)
        !            63: {
        !            64:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !            65:        ULONG dstreg = (opcode & 3584) >> 9;
        !            66: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !            67:        BYTE src = get_byte(srca);
        !            68: {      BYTE dst = regs.d[dstreg];
        !            69:        src &= dst;
        !            70:        regs.v = regs.c = 0;
        !            71:        regs.z = ((BYTE)(src)) == 0;
        !            72:        regs.n = ((BYTE)(src)) < 0;
        !            73:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
        !            74: }}}}
        !            75: void op_c030(UWORD opcode)
        !            76: {
        !            77:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !            78:        ULONG dstreg = (opcode & 3584) >> 9;
        !            79: {{     CPTR srca = regs.a[srcreg];
        !            80:        UWORD srcdp = nextiword();
        !            81:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !            82: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !            83:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !            84:        srca += srcdpr;
        !            85: {      BYTE src = get_byte(srca);
        !            86: {      BYTE dst = regs.d[dstreg];
        !            87:        src &= dst;
        !            88:        regs.v = regs.c = 0;
        !            89:        regs.z = ((BYTE)(src)) == 0;
        !            90:        regs.n = ((BYTE)(src)) < 0;
        !            91:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
        !            92: }}}}}}
        !            93: void op_c038(UWORD opcode)
        !            94: {
        !            95:        ULONG dstreg = (opcode & 3584) >> 9;
        !            96: {{     CPTR srca = (LONG)(WORD)nextiword();
        !            97:        BYTE src = get_byte(srca);
        !            98: {      BYTE dst = regs.d[dstreg];
        !            99:        src &= dst;
        !           100:        regs.v = regs.c = 0;
        !           101:        regs.z = ((BYTE)(src)) == 0;
        !           102:        regs.n = ((BYTE)(src)) < 0;
        !           103:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
        !           104: }}}}
        !           105: void op_c039(UWORD opcode)
        !           106: {
        !           107:        ULONG dstreg = (opcode & 3584) >> 9;
        !           108: {{     CPTR srca = nextilong();
        !           109:        BYTE src = get_byte(srca);
        !           110: {      BYTE dst = regs.d[dstreg];
        !           111:        src &= dst;
        !           112:        regs.v = regs.c = 0;
        !           113:        regs.z = ((BYTE)(src)) == 0;
        !           114:        regs.n = ((BYTE)(src)) < 0;
        !           115:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
        !           116: }}}}
        !           117: void op_c03a(UWORD opcode)
        !           118: {
        !           119:        ULONG dstreg = (opcode & 3584) >> 9;
        !           120: {{     CPTR srca = m68k_getpc();
        !           121:        srca += (LONG)(WORD)nextiword();
        !           122: {      BYTE src = get_byte(srca);
        !           123: {      BYTE dst = regs.d[dstreg];
        !           124:        src &= dst;
        !           125:        regs.v = regs.c = 0;
        !           126:        regs.z = ((BYTE)(src)) == 0;
        !           127:        regs.n = ((BYTE)(src)) < 0;
        !           128:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
        !           129: }}}}}
        !           130: void op_c03b(UWORD opcode)
        !           131: {
        !           132:        ULONG dstreg = (opcode & 3584) >> 9;
        !           133: {{     CPTR srca = m68k_getpc();
        !           134:        UWORD srcdp = nextiword();
        !           135:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !           136: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !           137:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !           138:        srca += srcdpr;
        !           139: {      BYTE src = get_byte(srca);
        !           140: {      BYTE dst = regs.d[dstreg];
        !           141:        src &= dst;
        !           142:        regs.v = regs.c = 0;
        !           143:        regs.z = ((BYTE)(src)) == 0;
        !           144:        regs.n = ((BYTE)(src)) < 0;
        !           145:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
        !           146: }}}}}}
        !           147: void op_c03c(UWORD opcode)
        !           148: {
        !           149:        ULONG dstreg = (opcode & 3584) >> 9;
        !           150: {{     BYTE src = nextiword();
        !           151: {      BYTE dst = regs.d[dstreg];
        !           152:        src &= dst;
        !           153:        regs.v = regs.c = 0;
        !           154:        regs.z = ((BYTE)(src)) == 0;
        !           155:        regs.n = ((BYTE)(src)) < 0;
        !           156:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (src) & 0xff;
        !           157: }}}}
        !           158: void op_c040(UWORD opcode)
        !           159: {
        !           160:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           161:        ULONG dstreg = (opcode & 3584) >> 9;
        !           162: {{     WORD src = regs.d[srcreg];
        !           163: {      WORD dst = regs.d[dstreg];
        !           164:        src &= dst;
        !           165:        regs.v = regs.c = 0;
        !           166:        regs.z = ((WORD)(src)) == 0;
        !           167:        regs.n = ((WORD)(src)) < 0;
        !           168:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
        !           169: }}}}
        !           170: void op_c050(UWORD opcode)
        !           171: {
        !           172:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           173:        ULONG dstreg = (opcode & 3584) >> 9;
        !           174: {{     CPTR srca = regs.a[srcreg];
        !           175:        WORD src = get_word(srca);
        !           176: {      WORD dst = regs.d[dstreg];
        !           177:        src &= dst;
        !           178:        regs.v = regs.c = 0;
        !           179:        regs.z = ((WORD)(src)) == 0;
        !           180:        regs.n = ((WORD)(src)) < 0;
        !           181:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
        !           182: }}}}
        !           183: void op_c058(UWORD opcode)
        !           184: {
        !           185:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           186:        ULONG dstreg = (opcode & 3584) >> 9;
        !           187: {{     CPTR srca = regs.a[srcreg];
        !           188:        WORD src = get_word(srca);
        !           189: {      regs.a[srcreg] += 2;
        !           190: {      WORD dst = regs.d[dstreg];
        !           191:        src &= dst;
        !           192:        regs.v = regs.c = 0;
        !           193:        regs.z = ((WORD)(src)) == 0;
        !           194:        regs.n = ((WORD)(src)) < 0;
        !           195:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
        !           196: }}}}}
        !           197: void op_c060(UWORD opcode)
        !           198: {
        !           199:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           200:        ULONG dstreg = (opcode & 3584) >> 9;
        !           201: {{     regs.a[srcreg] -= 2;
        !           202: {      CPTR srca = regs.a[srcreg];
        !           203:        WORD src = get_word(srca);
        !           204: {      WORD dst = regs.d[dstreg];
        !           205:        src &= dst;
        !           206:        regs.v = regs.c = 0;
        !           207:        regs.z = ((WORD)(src)) == 0;
        !           208:        regs.n = ((WORD)(src)) < 0;
        !           209:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
        !           210: }}}}}
        !           211: void op_c068(UWORD opcode)
        !           212: {
        !           213:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           214:        ULONG dstreg = (opcode & 3584) >> 9;
        !           215: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !           216:        WORD src = get_word(srca);
        !           217: {      WORD dst = regs.d[dstreg];
        !           218:        src &= dst;
        !           219:        regs.v = regs.c = 0;
        !           220:        regs.z = ((WORD)(src)) == 0;
        !           221:        regs.n = ((WORD)(src)) < 0;
        !           222:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
        !           223: }}}}
        !           224: void op_c070(UWORD opcode)
        !           225: {
        !           226:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           227:        ULONG dstreg = (opcode & 3584) >> 9;
        !           228: {{     CPTR srca = regs.a[srcreg];
        !           229:        UWORD srcdp = nextiword();
        !           230:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !           231: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !           232:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !           233:        srca += srcdpr;
        !           234: {      WORD src = get_word(srca);
        !           235: {      WORD dst = regs.d[dstreg];
        !           236:        src &= dst;
        !           237:        regs.v = regs.c = 0;
        !           238:        regs.z = ((WORD)(src)) == 0;
        !           239:        regs.n = ((WORD)(src)) < 0;
        !           240:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
        !           241: }}}}}}
        !           242: void op_c078(UWORD opcode)
        !           243: {
        !           244:        ULONG dstreg = (opcode & 3584) >> 9;
        !           245: {{     CPTR srca = (LONG)(WORD)nextiword();
        !           246:        WORD src = get_word(srca);
        !           247: {      WORD dst = regs.d[dstreg];
        !           248:        src &= dst;
        !           249:        regs.v = regs.c = 0;
        !           250:        regs.z = ((WORD)(src)) == 0;
        !           251:        regs.n = ((WORD)(src)) < 0;
        !           252:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
        !           253: }}}}
        !           254: void op_c079(UWORD opcode)
        !           255: {
        !           256:        ULONG dstreg = (opcode & 3584) >> 9;
        !           257: {{     CPTR srca = nextilong();
        !           258:        WORD src = get_word(srca);
        !           259: {      WORD dst = regs.d[dstreg];
        !           260:        src &= dst;
        !           261:        regs.v = regs.c = 0;
        !           262:        regs.z = ((WORD)(src)) == 0;
        !           263:        regs.n = ((WORD)(src)) < 0;
        !           264:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
        !           265: }}}}
        !           266: void op_c07a(UWORD opcode)
        !           267: {
        !           268:        ULONG dstreg = (opcode & 3584) >> 9;
        !           269: {{     CPTR srca = m68k_getpc();
        !           270:        srca += (LONG)(WORD)nextiword();
        !           271: {      WORD src = get_word(srca);
        !           272: {      WORD dst = regs.d[dstreg];
        !           273:        src &= dst;
        !           274:        regs.v = regs.c = 0;
        !           275:        regs.z = ((WORD)(src)) == 0;
        !           276:        regs.n = ((WORD)(src)) < 0;
        !           277:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
        !           278: }}}}}
        !           279: void op_c07b(UWORD opcode)
        !           280: {
        !           281:        ULONG dstreg = (opcode & 3584) >> 9;
        !           282: {{     CPTR srca = m68k_getpc();
        !           283:        UWORD srcdp = nextiword();
        !           284:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !           285: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !           286:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !           287:        srca += srcdpr;
        !           288: {      WORD src = get_word(srca);
        !           289: {      WORD dst = regs.d[dstreg];
        !           290:        src &= dst;
        !           291:        regs.v = regs.c = 0;
        !           292:        regs.z = ((WORD)(src)) == 0;
        !           293:        regs.n = ((WORD)(src)) < 0;
        !           294:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
        !           295: }}}}}}
        !           296: void op_c07c(UWORD opcode)
        !           297: {
        !           298:        ULONG dstreg = (opcode & 3584) >> 9;
        !           299: {{     WORD src = nextiword();
        !           300: {      WORD dst = regs.d[dstreg];
        !           301:        src &= dst;
        !           302:        regs.v = regs.c = 0;
        !           303:        regs.z = ((WORD)(src)) == 0;
        !           304:        regs.n = ((WORD)(src)) < 0;
        !           305:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (src) & 0xffff;
        !           306: }}}}
        !           307: void op_c080(UWORD opcode)
        !           308: {
        !           309:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           310:        ULONG dstreg = (opcode & 3584) >> 9;
        !           311: {{     LONG src = regs.d[srcreg];
        !           312: {      LONG dst = regs.d[dstreg];
        !           313:        src &= dst;
        !           314:        regs.v = regs.c = 0;
        !           315:        regs.z = ((LONG)(src)) == 0;
        !           316:        regs.n = ((LONG)(src)) < 0;
        !           317:        regs.d[dstreg] = (src);
        !           318: }}}}
        !           319: void op_c090(UWORD opcode)
        !           320: {
        !           321:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           322:        ULONG dstreg = (opcode & 3584) >> 9;
        !           323: {{     CPTR srca = regs.a[srcreg];
        !           324:        LONG src = get_long(srca);
        !           325: {      LONG dst = regs.d[dstreg];
        !           326:        src &= dst;
        !           327:        regs.v = regs.c = 0;
        !           328:        regs.z = ((LONG)(src)) == 0;
        !           329:        regs.n = ((LONG)(src)) < 0;
        !           330:        regs.d[dstreg] = (src);
        !           331: }}}}
        !           332: void op_c098(UWORD opcode)
        !           333: {
        !           334:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           335:        ULONG dstreg = (opcode & 3584) >> 9;
        !           336: {{     CPTR srca = regs.a[srcreg];
        !           337:        LONG src = get_long(srca);
        !           338: {      regs.a[srcreg] += 4;
        !           339: {      LONG dst = regs.d[dstreg];
        !           340:        src &= dst;
        !           341:        regs.v = regs.c = 0;
        !           342:        regs.z = ((LONG)(src)) == 0;
        !           343:        regs.n = ((LONG)(src)) < 0;
        !           344:        regs.d[dstreg] = (src);
        !           345: }}}}}
        !           346: void op_c0a0(UWORD opcode)
        !           347: {
        !           348:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           349:        ULONG dstreg = (opcode & 3584) >> 9;
        !           350: {{     regs.a[srcreg] -= 4;
        !           351: {      CPTR srca = regs.a[srcreg];
        !           352:        LONG src = get_long(srca);
        !           353: {      LONG dst = regs.d[dstreg];
        !           354:        src &= dst;
        !           355:        regs.v = regs.c = 0;
        !           356:        regs.z = ((LONG)(src)) == 0;
        !           357:        regs.n = ((LONG)(src)) < 0;
        !           358:        regs.d[dstreg] = (src);
        !           359: }}}}}
        !           360: void op_c0a8(UWORD opcode)
        !           361: {
        !           362:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           363:        ULONG dstreg = (opcode & 3584) >> 9;
        !           364: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !           365:        LONG src = get_long(srca);
        !           366: {      LONG dst = regs.d[dstreg];
        !           367:        src &= dst;
        !           368:        regs.v = regs.c = 0;
        !           369:        regs.z = ((LONG)(src)) == 0;
        !           370:        regs.n = ((LONG)(src)) < 0;
        !           371:        regs.d[dstreg] = (src);
        !           372: }}}}
        !           373: void op_c0b0(UWORD opcode)
        !           374: {
        !           375:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           376:        ULONG dstreg = (opcode & 3584) >> 9;
        !           377: {{     CPTR srca = regs.a[srcreg];
        !           378:        UWORD srcdp = nextiword();
        !           379:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !           380: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !           381:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !           382:        srca += srcdpr;
        !           383: {      LONG src = get_long(srca);
        !           384: {      LONG dst = regs.d[dstreg];
        !           385:        src &= dst;
        !           386:        regs.v = regs.c = 0;
        !           387:        regs.z = ((LONG)(src)) == 0;
        !           388:        regs.n = ((LONG)(src)) < 0;
        !           389:        regs.d[dstreg] = (src);
        !           390: }}}}}}
        !           391: void op_c0b8(UWORD opcode)
        !           392: {
        !           393:        ULONG dstreg = (opcode & 3584) >> 9;
        !           394: {{     CPTR srca = (LONG)(WORD)nextiword();
        !           395:        LONG src = get_long(srca);
        !           396: {      LONG dst = regs.d[dstreg];
        !           397:        src &= dst;
        !           398:        regs.v = regs.c = 0;
        !           399:        regs.z = ((LONG)(src)) == 0;
        !           400:        regs.n = ((LONG)(src)) < 0;
        !           401:        regs.d[dstreg] = (src);
        !           402: }}}}
        !           403: void op_c0b9(UWORD opcode)
        !           404: {
        !           405:        ULONG dstreg = (opcode & 3584) >> 9;
        !           406: {{     CPTR srca = nextilong();
        !           407:        LONG src = get_long(srca);
        !           408: {      LONG dst = regs.d[dstreg];
        !           409:        src &= dst;
        !           410:        regs.v = regs.c = 0;
        !           411:        regs.z = ((LONG)(src)) == 0;
        !           412:        regs.n = ((LONG)(src)) < 0;
        !           413:        regs.d[dstreg] = (src);
        !           414: }}}}
        !           415: void op_c0ba(UWORD opcode)
        !           416: {
        !           417:        ULONG dstreg = (opcode & 3584) >> 9;
        !           418: {{     CPTR srca = m68k_getpc();
        !           419:        srca += (LONG)(WORD)nextiword();
        !           420: {      LONG src = get_long(srca);
        !           421: {      LONG dst = regs.d[dstreg];
        !           422:        src &= dst;
        !           423:        regs.v = regs.c = 0;
        !           424:        regs.z = ((LONG)(src)) == 0;
        !           425:        regs.n = ((LONG)(src)) < 0;
        !           426:        regs.d[dstreg] = (src);
        !           427: }}}}}
        !           428: void op_c0bb(UWORD opcode)
        !           429: {
        !           430:        ULONG dstreg = (opcode & 3584) >> 9;
        !           431: {{     CPTR srca = m68k_getpc();
        !           432:        UWORD srcdp = nextiword();
        !           433:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !           434: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !           435:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !           436:        srca += srcdpr;
        !           437: {      LONG src = get_long(srca);
        !           438: {      LONG dst = regs.d[dstreg];
        !           439:        src &= dst;
        !           440:        regs.v = regs.c = 0;
        !           441:        regs.z = ((LONG)(src)) == 0;
        !           442:        regs.n = ((LONG)(src)) < 0;
        !           443:        regs.d[dstreg] = (src);
        !           444: }}}}}}
        !           445: void op_c0bc(UWORD opcode)
        !           446: {
        !           447:        ULONG dstreg = (opcode & 3584) >> 9;
        !           448: {{     LONG src = nextilong();
        !           449: {      LONG dst = regs.d[dstreg];
        !           450:        src &= dst;
        !           451:        regs.v = regs.c = 0;
        !           452:        regs.z = ((LONG)(src)) == 0;
        !           453:        regs.n = ((LONG)(src)) < 0;
        !           454:        regs.d[dstreg] = (src);
        !           455: }}}}
        !           456: void op_c0c0(UWORD opcode)
        !           457: {
        !           458:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           459:        ULONG dstreg = (opcode & 3584) >> 9;
        !           460: {{     WORD src = regs.d[srcreg];
        !           461: {      WORD dst = regs.d[dstreg];
        !           462: {      ULONG newv = (ULONG)(UWORD)dst * (ULONG)(UWORD)src;
        !           463:        regs.v = regs.c = 0;
        !           464:        regs.z = ((LONG)(newv)) == 0;
        !           465:        regs.n = ((LONG)(newv)) < 0;
        !           466:        regs.d[dstreg] = (newv);
        !           467: }}}}}
        !           468: void op_c0d0(UWORD opcode)
        !           469: {
        !           470:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           471:        ULONG dstreg = (opcode & 3584) >> 9;
        !           472: {{     CPTR srca = regs.a[srcreg];
        !           473:        WORD src = get_word(srca);
        !           474: {      WORD dst = regs.d[dstreg];
        !           475: {      ULONG newv = (ULONG)(UWORD)dst * (ULONG)(UWORD)src;
        !           476:        regs.v = regs.c = 0;
        !           477:        regs.z = ((LONG)(newv)) == 0;
        !           478:        regs.n = ((LONG)(newv)) < 0;
        !           479:        regs.d[dstreg] = (newv);
        !           480: }}}}}
        !           481: void op_c0d8(UWORD opcode)
        !           482: {
        !           483:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           484:        ULONG dstreg = (opcode & 3584) >> 9;
        !           485: {{     CPTR srca = regs.a[srcreg];
        !           486:        WORD src = get_word(srca);
        !           487: {      regs.a[srcreg] += 2;
        !           488: {      WORD dst = regs.d[dstreg];
        !           489: {      ULONG newv = (ULONG)(UWORD)dst * (ULONG)(UWORD)src;
        !           490:        regs.v = regs.c = 0;
        !           491:        regs.z = ((LONG)(newv)) == 0;
        !           492:        regs.n = ((LONG)(newv)) < 0;
        !           493:        regs.d[dstreg] = (newv);
        !           494: }}}}}}
        !           495: void op_c0e0(UWORD opcode)
        !           496: {
        !           497:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           498:        ULONG dstreg = (opcode & 3584) >> 9;
        !           499: {{     regs.a[srcreg] -= 2;
        !           500: {      CPTR srca = regs.a[srcreg];
        !           501:        WORD src = get_word(srca);
        !           502: {      WORD dst = regs.d[dstreg];
        !           503: {      ULONG newv = (ULONG)(UWORD)dst * (ULONG)(UWORD)src;
        !           504:        regs.v = regs.c = 0;
        !           505:        regs.z = ((LONG)(newv)) == 0;
        !           506:        regs.n = ((LONG)(newv)) < 0;
        !           507:        regs.d[dstreg] = (newv);
        !           508: }}}}}}
        !           509: void op_c0e8(UWORD opcode)
        !           510: {
        !           511:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           512:        ULONG dstreg = (opcode & 3584) >> 9;
        !           513: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !           514:        WORD src = get_word(srca);
        !           515: {      WORD dst = regs.d[dstreg];
        !           516: {      ULONG newv = (ULONG)(UWORD)dst * (ULONG)(UWORD)src;
        !           517:        regs.v = regs.c = 0;
        !           518:        regs.z = ((LONG)(newv)) == 0;
        !           519:        regs.n = ((LONG)(newv)) < 0;
        !           520:        regs.d[dstreg] = (newv);
        !           521: }}}}}
        !           522: void op_c0f0(UWORD opcode)
        !           523: {
        !           524:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           525:        ULONG dstreg = (opcode & 3584) >> 9;
        !           526: {{     CPTR srca = regs.a[srcreg];
        !           527:        UWORD srcdp = nextiword();
        !           528:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !           529: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !           530:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !           531:        srca += srcdpr;
        !           532: {      WORD src = get_word(srca);
        !           533: {      WORD dst = regs.d[dstreg];
        !           534: {      ULONG newv = (ULONG)(UWORD)dst * (ULONG)(UWORD)src;
        !           535:        regs.v = regs.c = 0;
        !           536:        regs.z = ((LONG)(newv)) == 0;
        !           537:        regs.n = ((LONG)(newv)) < 0;
        !           538:        regs.d[dstreg] = (newv);
        !           539: }}}}}}}
        !           540: void op_c0f8(UWORD opcode)
        !           541: {
        !           542:        ULONG dstreg = (opcode & 3584) >> 9;
        !           543: {{     CPTR srca = (LONG)(WORD)nextiword();
        !           544:        WORD src = get_word(srca);
        !           545: {      WORD dst = regs.d[dstreg];
        !           546: {      ULONG newv = (ULONG)(UWORD)dst * (ULONG)(UWORD)src;
        !           547:        regs.v = regs.c = 0;
        !           548:        regs.z = ((LONG)(newv)) == 0;
        !           549:        regs.n = ((LONG)(newv)) < 0;
        !           550:        regs.d[dstreg] = (newv);
        !           551: }}}}}
        !           552: void op_c0f9(UWORD opcode)
        !           553: {
        !           554:        ULONG dstreg = (opcode & 3584) >> 9;
        !           555: {{     CPTR srca = nextilong();
        !           556:        WORD src = get_word(srca);
        !           557: {      WORD dst = regs.d[dstreg];
        !           558: {      ULONG newv = (ULONG)(UWORD)dst * (ULONG)(UWORD)src;
        !           559:        regs.v = regs.c = 0;
        !           560:        regs.z = ((LONG)(newv)) == 0;
        !           561:        regs.n = ((LONG)(newv)) < 0;
        !           562:        regs.d[dstreg] = (newv);
        !           563: }}}}}
        !           564: void op_c0fa(UWORD opcode)
        !           565: {
        !           566:        ULONG dstreg = (opcode & 3584) >> 9;
        !           567: {{     CPTR srca = m68k_getpc();
        !           568:        srca += (LONG)(WORD)nextiword();
        !           569: {      WORD src = get_word(srca);
        !           570: {      WORD dst = regs.d[dstreg];
        !           571: {      ULONG newv = (ULONG)(UWORD)dst * (ULONG)(UWORD)src;
        !           572:        regs.v = regs.c = 0;
        !           573:        regs.z = ((LONG)(newv)) == 0;
        !           574:        regs.n = ((LONG)(newv)) < 0;
        !           575:        regs.d[dstreg] = (newv);
        !           576: }}}}}}
        !           577: void op_c0fb(UWORD opcode)
        !           578: {
        !           579:        ULONG dstreg = (opcode & 3584) >> 9;
        !           580: {{     CPTR srca = m68k_getpc();
        !           581:        UWORD srcdp = nextiword();
        !           582:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !           583: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !           584:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !           585:        srca += srcdpr;
        !           586: {      WORD src = get_word(srca);
        !           587: {      WORD dst = regs.d[dstreg];
        !           588: {      ULONG newv = (ULONG)(UWORD)dst * (ULONG)(UWORD)src;
        !           589:        regs.v = regs.c = 0;
        !           590:        regs.z = ((LONG)(newv)) == 0;
        !           591:        regs.n = ((LONG)(newv)) < 0;
        !           592:        regs.d[dstreg] = (newv);
        !           593: }}}}}}}
        !           594: void op_c0fc(UWORD opcode)
        !           595: {
        !           596:        ULONG dstreg = (opcode & 3584) >> 9;
        !           597: {{     WORD src = nextiword();
        !           598: {      WORD dst = regs.d[dstreg];
        !           599: {      ULONG newv = (ULONG)(UWORD)dst * (ULONG)(UWORD)src;
        !           600:        regs.v = regs.c = 0;
        !           601:        regs.z = ((LONG)(newv)) == 0;
        !           602:        regs.n = ((LONG)(newv)) < 0;
        !           603:        regs.d[dstreg] = (newv);
        !           604: }}}}}
        !           605: void op_c100(UWORD opcode)
        !           606: {
        !           607:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           608:        ULONG dstreg = (opcode & 3584) >> 9;
        !           609: {{     BYTE src = regs.d[srcreg];
        !           610: {      BYTE dst = regs.d[dstreg];
        !           611: {      UWORD newv = src + dst + regs.x;
        !           612:        if ((newv & 0xF) > 9) newv+=6;
        !           613:        regs.c = regs.x = (newv & 0x1F0) > 0x90;
        !           614:        if (regs.c) newv += 0x60;
        !           615:        if (newv != 0) regs.z = 0;
        !           616:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !           617: }}}}}
        !           618: void op_c108(UWORD opcode)
        !           619: {
        !           620:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           621:        ULONG dstreg = (opcode & 3584) >> 9;
        !           622: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !           623: {      CPTR srca = regs.a[srcreg];
        !           624:        BYTE src = get_byte(srca);
        !           625: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !           626: {      CPTR dsta = regs.a[dstreg];
        !           627:        BYTE dst = get_byte(dsta);
        !           628: {      UWORD newv = src + dst + regs.x;
        !           629:        if ((newv & 0xF) > 9) newv+=6;
        !           630:        regs.c = regs.x = (newv & 0x1F0) > 0x90;
        !           631:        if (regs.c) newv += 0x60;
        !           632:        if (newv != 0) regs.z = 0;
        !           633:        put_byte(dsta,newv);
        !           634: }}}}}}}
        !           635: void op_c110(UWORD opcode)
        !           636: {
        !           637:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           638:        ULONG dstreg = (opcode & 7) >> 0;
        !           639: {{     BYTE src = regs.d[srcreg];
        !           640: {      CPTR dsta = regs.a[dstreg];
        !           641:        BYTE dst = get_byte(dsta);
        !           642:        src &= dst;
        !           643:        regs.v = regs.c = 0;
        !           644:        regs.z = ((BYTE)(src)) == 0;
        !           645:        regs.n = ((BYTE)(src)) < 0;
        !           646:        put_byte(dsta,src);
        !           647: }}}}
        !           648: void op_c118(UWORD opcode)
        !           649: {
        !           650:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           651:        ULONG dstreg = (opcode & 7) >> 0;
        !           652: {{     BYTE src = regs.d[srcreg];
        !           653: {      CPTR dsta = regs.a[dstreg];
        !           654:        BYTE dst = get_byte(dsta);
        !           655: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !           656:        src &= dst;
        !           657:        regs.v = regs.c = 0;
        !           658:        regs.z = ((BYTE)(src)) == 0;
        !           659:        regs.n = ((BYTE)(src)) < 0;
        !           660:        put_byte(dsta,src);
        !           661: }}}}}
        !           662: void op_c120(UWORD opcode)
        !           663: {
        !           664:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           665:        ULONG dstreg = (opcode & 7) >> 0;
        !           666: {{     BYTE src = regs.d[srcreg];
        !           667: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !           668: {      CPTR dsta = regs.a[dstreg];
        !           669:        BYTE dst = get_byte(dsta);
        !           670:        src &= dst;
        !           671:        regs.v = regs.c = 0;
        !           672:        regs.z = ((BYTE)(src)) == 0;
        !           673:        regs.n = ((BYTE)(src)) < 0;
        !           674:        put_byte(dsta,src);
        !           675: }}}}}
        !           676: void op_c128(UWORD opcode)
        !           677: {
        !           678:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           679:        ULONG dstreg = (opcode & 7) >> 0;
        !           680: {{     BYTE src = regs.d[srcreg];
        !           681: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !           682:        BYTE dst = get_byte(dsta);
        !           683:        src &= dst;
        !           684:        regs.v = regs.c = 0;
        !           685:        regs.z = ((BYTE)(src)) == 0;
        !           686:        regs.n = ((BYTE)(src)) < 0;
        !           687:        put_byte(dsta,src);
        !           688: }}}}
        !           689: void op_c130(UWORD opcode)
        !           690: {
        !           691:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           692:        ULONG dstreg = (opcode & 7) >> 0;
        !           693: {{     BYTE src = regs.d[srcreg];
        !           694: {      CPTR dsta = regs.a[dstreg];
        !           695:        UWORD dstdp = nextiword();
        !           696:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !           697: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !           698:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !           699:        dsta += dstdpr;
        !           700: {      BYTE dst = get_byte(dsta);
        !           701:        src &= dst;
        !           702:        regs.v = regs.c = 0;
        !           703:        regs.z = ((BYTE)(src)) == 0;
        !           704:        regs.n = ((BYTE)(src)) < 0;
        !           705:        put_byte(dsta,src);
        !           706: }}}}}}
        !           707: void op_c138(UWORD opcode)
        !           708: {
        !           709:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           710: {{     BYTE src = regs.d[srcreg];
        !           711: {      CPTR dsta = (LONG)(WORD)nextiword();
        !           712:        BYTE dst = get_byte(dsta);
        !           713:        src &= dst;
        !           714:        regs.v = regs.c = 0;
        !           715:        regs.z = ((BYTE)(src)) == 0;
        !           716:        regs.n = ((BYTE)(src)) < 0;
        !           717:        put_byte(dsta,src);
        !           718: }}}}
        !           719: void op_c139(UWORD opcode)
        !           720: {
        !           721:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           722: {{     BYTE src = regs.d[srcreg];
        !           723: {      CPTR dsta = nextilong();
        !           724:        BYTE dst = get_byte(dsta);
        !           725:        src &= dst;
        !           726:        regs.v = regs.c = 0;
        !           727:        regs.z = ((BYTE)(src)) == 0;
        !           728:        regs.n = ((BYTE)(src)) < 0;
        !           729:        put_byte(dsta,src);
        !           730: }}}}
        !           731: void op_c140(UWORD opcode)
        !           732: {
        !           733:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           734:        ULONG dstreg = (opcode & 7) >> 0;
        !           735: {{     LONG src = regs.d[srcreg];
        !           736: {      LONG dst = regs.d[dstreg];
        !           737:        regs.d[srcreg] = (dst);
        !           738:        regs.d[dstreg] = (src);
        !           739: }}}}
        !           740: void op_c148(UWORD opcode)
        !           741: {
        !           742:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           743:        ULONG dstreg = (opcode & 7) >> 0;
        !           744: {{     LONG src = regs.a[srcreg];
        !           745: {      LONG dst = regs.a[dstreg];
        !           746:        regs.a[srcreg] = (dst);
        !           747:        regs.a[dstreg] = (src);
        !           748: }}}}
        !           749: void op_c150(UWORD opcode)
        !           750: {
        !           751:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           752:        ULONG dstreg = (opcode & 7) >> 0;
        !           753: {{     WORD src = regs.d[srcreg];
        !           754: {      CPTR dsta = regs.a[dstreg];
        !           755:        WORD dst = get_word(dsta);
        !           756:        src &= dst;
        !           757:        regs.v = regs.c = 0;
        !           758:        regs.z = ((WORD)(src)) == 0;
        !           759:        regs.n = ((WORD)(src)) < 0;
        !           760:        put_word(dsta,src);
        !           761: }}}}
        !           762: void op_c158(UWORD opcode)
        !           763: {
        !           764:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           765:        ULONG dstreg = (opcode & 7) >> 0;
        !           766: {{     WORD src = regs.d[srcreg];
        !           767: {      CPTR dsta = regs.a[dstreg];
        !           768:        WORD dst = get_word(dsta);
        !           769: {      regs.a[dstreg] += 2;
        !           770:        src &= dst;
        !           771:        regs.v = regs.c = 0;
        !           772:        regs.z = ((WORD)(src)) == 0;
        !           773:        regs.n = ((WORD)(src)) < 0;
        !           774:        put_word(dsta,src);
        !           775: }}}}}
        !           776: void op_c160(UWORD opcode)
        !           777: {
        !           778:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           779:        ULONG dstreg = (opcode & 7) >> 0;
        !           780: {{     WORD src = regs.d[srcreg];
        !           781: {      regs.a[dstreg] -= 2;
        !           782: {      CPTR dsta = regs.a[dstreg];
        !           783:        WORD dst = get_word(dsta);
        !           784:        src &= dst;
        !           785:        regs.v = regs.c = 0;
        !           786:        regs.z = ((WORD)(src)) == 0;
        !           787:        regs.n = ((WORD)(src)) < 0;
        !           788:        put_word(dsta,src);
        !           789: }}}}}
        !           790: void op_c168(UWORD opcode)
        !           791: {
        !           792:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           793:        ULONG dstreg = (opcode & 7) >> 0;
        !           794: {{     WORD src = regs.d[srcreg];
        !           795: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !           796:        WORD dst = get_word(dsta);
        !           797:        src &= dst;
        !           798:        regs.v = regs.c = 0;
        !           799:        regs.z = ((WORD)(src)) == 0;
        !           800:        regs.n = ((WORD)(src)) < 0;
        !           801:        put_word(dsta,src);
        !           802: }}}}
        !           803: void op_c170(UWORD opcode)
        !           804: {
        !           805:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           806:        ULONG dstreg = (opcode & 7) >> 0;
        !           807: {{     WORD src = regs.d[srcreg];
        !           808: {      CPTR dsta = regs.a[dstreg];
        !           809:        UWORD dstdp = nextiword();
        !           810:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !           811: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !           812:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !           813:        dsta += dstdpr;
        !           814: {      WORD dst = get_word(dsta);
        !           815:        src &= dst;
        !           816:        regs.v = regs.c = 0;
        !           817:        regs.z = ((WORD)(src)) == 0;
        !           818:        regs.n = ((WORD)(src)) < 0;
        !           819:        put_word(dsta,src);
        !           820: }}}}}}
        !           821: void op_c178(UWORD opcode)
        !           822: {
        !           823:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           824: {{     WORD src = regs.d[srcreg];
        !           825: {      CPTR dsta = (LONG)(WORD)nextiword();
        !           826:        WORD dst = get_word(dsta);
        !           827:        src &= dst;
        !           828:        regs.v = regs.c = 0;
        !           829:        regs.z = ((WORD)(src)) == 0;
        !           830:        regs.n = ((WORD)(src)) < 0;
        !           831:        put_word(dsta,src);
        !           832: }}}}
        !           833: void op_c179(UWORD opcode)
        !           834: {
        !           835:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           836: {{     WORD src = regs.d[srcreg];
        !           837: {      CPTR dsta = nextilong();
        !           838:        WORD dst = get_word(dsta);
        !           839:        src &= dst;
        !           840:        regs.v = regs.c = 0;
        !           841:        regs.z = ((WORD)(src)) == 0;
        !           842:        regs.n = ((WORD)(src)) < 0;
        !           843:        put_word(dsta,src);
        !           844: }}}}
        !           845: void op_c188(UWORD opcode)
        !           846: {
        !           847:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           848:        ULONG dstreg = (opcode & 7) >> 0;
        !           849: {{     LONG src = regs.d[srcreg];
        !           850: {      LONG dst = regs.a[dstreg];
        !           851:        regs.d[srcreg] = (dst);
        !           852:        regs.a[dstreg] = (src);
        !           853: }}}}
        !           854: void op_c190(UWORD opcode)
        !           855: {
        !           856:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           857:        ULONG dstreg = (opcode & 7) >> 0;
        !           858: {{     LONG src = regs.d[srcreg];
        !           859: {      CPTR dsta = regs.a[dstreg];
        !           860:        LONG dst = get_long(dsta);
        !           861:        src &= dst;
        !           862:        regs.v = regs.c = 0;
        !           863:        regs.z = ((LONG)(src)) == 0;
        !           864:        regs.n = ((LONG)(src)) < 0;
        !           865:        put_long(dsta,src);
        !           866: }}}}
        !           867: void op_c198(UWORD opcode)
        !           868: {
        !           869:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           870:        ULONG dstreg = (opcode & 7) >> 0;
        !           871: {{     LONG src = regs.d[srcreg];
        !           872: {      CPTR dsta = regs.a[dstreg];
        !           873:        LONG dst = get_long(dsta);
        !           874: {      regs.a[dstreg] += 4;
        !           875:        src &= dst;
        !           876:        regs.v = regs.c = 0;
        !           877:        regs.z = ((LONG)(src)) == 0;
        !           878:        regs.n = ((LONG)(src)) < 0;
        !           879:        put_long(dsta,src);
        !           880: }}}}}
        !           881: void op_c1a0(UWORD opcode)
        !           882: {
        !           883:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           884:        ULONG dstreg = (opcode & 7) >> 0;
        !           885: {{     LONG src = regs.d[srcreg];
        !           886: {      regs.a[dstreg] -= 4;
        !           887: {      CPTR dsta = regs.a[dstreg];
        !           888:        LONG dst = get_long(dsta);
        !           889:        src &= dst;
        !           890:        regs.v = regs.c = 0;
        !           891:        regs.z = ((LONG)(src)) == 0;
        !           892:        regs.n = ((LONG)(src)) < 0;
        !           893:        put_long(dsta,src);
        !           894: }}}}}
        !           895: void op_c1a8(UWORD opcode)
        !           896: {
        !           897:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           898:        ULONG dstreg = (opcode & 7) >> 0;
        !           899: {{     LONG src = regs.d[srcreg];
        !           900: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !           901:        LONG dst = get_long(dsta);
        !           902:        src &= dst;
        !           903:        regs.v = regs.c = 0;
        !           904:        regs.z = ((LONG)(src)) == 0;
        !           905:        regs.n = ((LONG)(src)) < 0;
        !           906:        put_long(dsta,src);
        !           907: }}}}
        !           908: void op_c1b0(UWORD opcode)
        !           909: {
        !           910:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           911:        ULONG dstreg = (opcode & 7) >> 0;
        !           912: {{     LONG src = regs.d[srcreg];
        !           913: {      CPTR dsta = regs.a[dstreg];
        !           914:        UWORD dstdp = nextiword();
        !           915:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !           916: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !           917:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !           918:        dsta += dstdpr;
        !           919: {      LONG dst = get_long(dsta);
        !           920:        src &= dst;
        !           921:        regs.v = regs.c = 0;
        !           922:        regs.z = ((LONG)(src)) == 0;
        !           923:        regs.n = ((LONG)(src)) < 0;
        !           924:        put_long(dsta,src);
        !           925: }}}}}}
        !           926: void op_c1b8(UWORD opcode)
        !           927: {
        !           928:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           929: {{     LONG src = regs.d[srcreg];
        !           930: {      CPTR dsta = (LONG)(WORD)nextiword();
        !           931:        LONG dst = get_long(dsta);
        !           932:        src &= dst;
        !           933:        regs.v = regs.c = 0;
        !           934:        regs.z = ((LONG)(src)) == 0;
        !           935:        regs.n = ((LONG)(src)) < 0;
        !           936:        put_long(dsta,src);
        !           937: }}}}
        !           938: void op_c1b9(UWORD opcode)
        !           939: {
        !           940:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           941: {{     LONG src = regs.d[srcreg];
        !           942: {      CPTR dsta = nextilong();
        !           943:        LONG dst = get_long(dsta);
        !           944:        src &= dst;
        !           945:        regs.v = regs.c = 0;
        !           946:        regs.z = ((LONG)(src)) == 0;
        !           947:        regs.n = ((LONG)(src)) < 0;
        !           948:        put_long(dsta,src);
        !           949: }}}}
        !           950: void op_c1c0(UWORD opcode)
        !           951: {
        !           952:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           953:        ULONG dstreg = (opcode & 3584) >> 9;
        !           954: {{     WORD src = regs.d[srcreg];
        !           955: {      WORD dst = regs.d[dstreg];
        !           956: {      ULONG newv = (LONG)(WORD)dst * (LONG)(WORD)src;
        !           957:        regs.v = regs.c = 0;
        !           958:        regs.z = ((LONG)(newv)) == 0;
        !           959:        regs.n = ((LONG)(newv)) < 0;
        !           960:        regs.d[dstreg] = (newv);
        !           961: }}}}}
        !           962: void op_c1d0(UWORD opcode)
        !           963: {
        !           964:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           965:        ULONG dstreg = (opcode & 3584) >> 9;
        !           966: {{     CPTR srca = regs.a[srcreg];
        !           967:        WORD src = get_word(srca);
        !           968: {      WORD dst = regs.d[dstreg];
        !           969: {      ULONG newv = (LONG)(WORD)dst * (LONG)(WORD)src;
        !           970:        regs.v = regs.c = 0;
        !           971:        regs.z = ((LONG)(newv)) == 0;
        !           972:        regs.n = ((LONG)(newv)) < 0;
        !           973:        regs.d[dstreg] = (newv);
        !           974: }}}}}
        !           975: void op_c1d8(UWORD opcode)
        !           976: {
        !           977:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           978:        ULONG dstreg = (opcode & 3584) >> 9;
        !           979: {{     CPTR srca = regs.a[srcreg];
        !           980:        WORD src = get_word(srca);
        !           981: {      regs.a[srcreg] += 2;
        !           982: {      WORD dst = regs.d[dstreg];
        !           983: {      ULONG newv = (LONG)(WORD)dst * (LONG)(WORD)src;
        !           984:        regs.v = regs.c = 0;
        !           985:        regs.z = ((LONG)(newv)) == 0;
        !           986:        regs.n = ((LONG)(newv)) < 0;
        !           987:        regs.d[dstreg] = (newv);
        !           988: }}}}}}
        !           989: void op_c1e0(UWORD opcode)
        !           990: {
        !           991:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           992:        ULONG dstreg = (opcode & 3584) >> 9;
        !           993: {{     regs.a[srcreg] -= 2;
        !           994: {      CPTR srca = regs.a[srcreg];
        !           995:        WORD src = get_word(srca);
        !           996: {      WORD dst = regs.d[dstreg];
        !           997: {      ULONG newv = (LONG)(WORD)dst * (LONG)(WORD)src;
        !           998:        regs.v = regs.c = 0;
        !           999:        regs.z = ((LONG)(newv)) == 0;
        !          1000:        regs.n = ((LONG)(newv)) < 0;
        !          1001:        regs.d[dstreg] = (newv);
        !          1002: }}}}}}
        !          1003: void op_c1e8(UWORD opcode)
        !          1004: {
        !          1005:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1006:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1007: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          1008:        WORD src = get_word(srca);
        !          1009: {      WORD dst = regs.d[dstreg];
        !          1010: {      ULONG newv = (LONG)(WORD)dst * (LONG)(WORD)src;
        !          1011:        regs.v = regs.c = 0;
        !          1012:        regs.z = ((LONG)(newv)) == 0;
        !          1013:        regs.n = ((LONG)(newv)) < 0;
        !          1014:        regs.d[dstreg] = (newv);
        !          1015: }}}}}
        !          1016: void op_c1f0(UWORD opcode)
        !          1017: {
        !          1018:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1019:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1020: {{     CPTR srca = regs.a[srcreg];
        !          1021:        UWORD srcdp = nextiword();
        !          1022:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          1023: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          1024:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          1025:        srca += srcdpr;
        !          1026: {      WORD src = get_word(srca);
        !          1027: {      WORD dst = regs.d[dstreg];
        !          1028: {      ULONG newv = (LONG)(WORD)dst * (LONG)(WORD)src;
        !          1029:        regs.v = regs.c = 0;
        !          1030:        regs.z = ((LONG)(newv)) == 0;
        !          1031:        regs.n = ((LONG)(newv)) < 0;
        !          1032:        regs.d[dstreg] = (newv);
        !          1033: }}}}}}}
        !          1034: void op_c1f8(UWORD opcode)
        !          1035: {
        !          1036:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1037: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          1038:        WORD src = get_word(srca);
        !          1039: {      WORD dst = regs.d[dstreg];
        !          1040: {      ULONG newv = (LONG)(WORD)dst * (LONG)(WORD)src;
        !          1041:        regs.v = regs.c = 0;
        !          1042:        regs.z = ((LONG)(newv)) == 0;
        !          1043:        regs.n = ((LONG)(newv)) < 0;
        !          1044:        regs.d[dstreg] = (newv);
        !          1045: }}}}}
        !          1046: void op_c1f9(UWORD opcode)
        !          1047: {
        !          1048:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1049: {{     CPTR srca = nextilong();
        !          1050:        WORD src = get_word(srca);
        !          1051: {      WORD dst = regs.d[dstreg];
        !          1052: {      ULONG newv = (LONG)(WORD)dst * (LONG)(WORD)src;
        !          1053:        regs.v = regs.c = 0;
        !          1054:        regs.z = ((LONG)(newv)) == 0;
        !          1055:        regs.n = ((LONG)(newv)) < 0;
        !          1056:        regs.d[dstreg] = (newv);
        !          1057: }}}}}
        !          1058: void op_c1fa(UWORD opcode)
        !          1059: {
        !          1060:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1061: {{     CPTR srca = m68k_getpc();
        !          1062:        srca += (LONG)(WORD)nextiword();
        !          1063: {      WORD src = get_word(srca);
        !          1064: {      WORD dst = regs.d[dstreg];
        !          1065: {      ULONG newv = (LONG)(WORD)dst * (LONG)(WORD)src;
        !          1066:        regs.v = regs.c = 0;
        !          1067:        regs.z = ((LONG)(newv)) == 0;
        !          1068:        regs.n = ((LONG)(newv)) < 0;
        !          1069:        regs.d[dstreg] = (newv);
        !          1070: }}}}}}
        !          1071: void op_c1fb(UWORD opcode)
        !          1072: {
        !          1073:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1074: {{     CPTR srca = m68k_getpc();
        !          1075:        UWORD srcdp = nextiword();
        !          1076:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          1077: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          1078:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          1079:        srca += srcdpr;
        !          1080: {      WORD src = get_word(srca);
        !          1081: {      WORD dst = regs.d[dstreg];
        !          1082: {      ULONG newv = (LONG)(WORD)dst * (LONG)(WORD)src;
        !          1083:        regs.v = regs.c = 0;
        !          1084:        regs.z = ((LONG)(newv)) == 0;
        !          1085:        regs.n = ((LONG)(newv)) < 0;
        !          1086:        regs.d[dstreg] = (newv);
        !          1087: }}}}}}}
        !          1088: void op_c1fc(UWORD opcode)
        !          1089: {
        !          1090:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1091: {{     WORD src = nextiword();
        !          1092: {      WORD dst = regs.d[dstreg];
        !          1093: {      ULONG newv = (LONG)(WORD)dst * (LONG)(WORD)src;
        !          1094:        regs.v = regs.c = 0;
        !          1095:        regs.z = ((LONG)(newv)) == 0;
        !          1096:        regs.n = ((LONG)(newv)) < 0;
        !          1097:        regs.d[dstreg] = (newv);
        !          1098: }}}}}

unix.superglobalmegacorp.com

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