Annotation of uae/CPU Sources/cpu8.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_8000(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_8010(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_8018(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_8020(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_8028(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_8030(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_8038(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_8039(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_803a(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_803b(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_803c(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_8040(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_8050(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_8058(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_8060(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_8068(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_8070(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_8078(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_8079(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_807a(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_807b(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_807c(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_8080(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_8090(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_8098(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_80a0(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_80a8(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_80b0(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_80b8(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_80b9(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_80ba(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_80bb(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_80bc(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_80c0(UWORD opcode)
        !           457: {
        !           458:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           459:        ULONG dstreg = (opcode & 3584) >> 9;
        !           460: {{     WORD src = regs.d[srcreg];
        !           461: {      LONG dst = regs.d[dstreg];
        !           462:        if(src != 0){
        !           463:        ULONG newv = (ULONG)dst / (UWORD)src;
        !           464:        ULONG rem = (ULONG)dst % (UWORD)src;
        !           465:        if (newv > 0xffff) { regs.v = regs.n = 1; } else
        !           466:        {
        !           467:        regs.v = regs.c = 0;
        !           468:        regs.z = ((WORD)(newv)) == 0;
        !           469:        regs.n = ((WORD)(newv)) < 0;
        !           470:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !           471:        regs.d[dstreg] = (newv);
        !           472:        }
        !           473:        }
        !           474: }}}}
        !           475: void op_80d0(UWORD opcode)
        !           476: {
        !           477:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           478:        ULONG dstreg = (opcode & 3584) >> 9;
        !           479: {{     CPTR srca = regs.a[srcreg];
        !           480:        WORD src = get_word(srca);
        !           481: {      LONG dst = regs.d[dstreg];
        !           482:        if(src != 0){
        !           483:        ULONG newv = (ULONG)dst / (UWORD)src;
        !           484:        ULONG rem = (ULONG)dst % (UWORD)src;
        !           485:        if (newv > 0xffff) { regs.v = regs.n = 1; } else
        !           486:        {
        !           487:        regs.v = regs.c = 0;
        !           488:        regs.z = ((WORD)(newv)) == 0;
        !           489:        regs.n = ((WORD)(newv)) < 0;
        !           490:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !           491:        regs.d[dstreg] = (newv);
        !           492:        }
        !           493:        }
        !           494: }}}}
        !           495: void op_80d8(UWORD opcode)
        !           496: {
        !           497:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           498:        ULONG dstreg = (opcode & 3584) >> 9;
        !           499: {{     CPTR srca = regs.a[srcreg];
        !           500:        WORD src = get_word(srca);
        !           501: {      regs.a[srcreg] += 2;
        !           502: {      LONG dst = regs.d[dstreg];
        !           503:        if(src != 0){
        !           504:        ULONG newv = (ULONG)dst / (UWORD)src;
        !           505:        ULONG rem = (ULONG)dst % (UWORD)src;
        !           506:        if (newv > 0xffff) { regs.v = regs.n = 1; } else
        !           507:        {
        !           508:        regs.v = regs.c = 0;
        !           509:        regs.z = ((WORD)(newv)) == 0;
        !           510:        regs.n = ((WORD)(newv)) < 0;
        !           511:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !           512:        regs.d[dstreg] = (newv);
        !           513:        }
        !           514:        }
        !           515: }}}}}
        !           516: void op_80e0(UWORD opcode)
        !           517: {
        !           518:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           519:        ULONG dstreg = (opcode & 3584) >> 9;
        !           520: {{     regs.a[srcreg] -= 2;
        !           521: {      CPTR srca = regs.a[srcreg];
        !           522:        WORD src = get_word(srca);
        !           523: {      LONG dst = regs.d[dstreg];
        !           524:        if(src != 0){
        !           525:        ULONG newv = (ULONG)dst / (UWORD)src;
        !           526:        ULONG rem = (ULONG)dst % (UWORD)src;
        !           527:        if (newv > 0xffff) { regs.v = regs.n = 1; } else
        !           528:        {
        !           529:        regs.v = regs.c = 0;
        !           530:        regs.z = ((WORD)(newv)) == 0;
        !           531:        regs.n = ((WORD)(newv)) < 0;
        !           532:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !           533:        regs.d[dstreg] = (newv);
        !           534:        }
        !           535:        }
        !           536: }}}}}
        !           537: void op_80e8(UWORD opcode)
        !           538: {
        !           539:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           540:        ULONG dstreg = (opcode & 3584) >> 9;
        !           541: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !           542:        WORD src = get_word(srca);
        !           543: {      LONG dst = regs.d[dstreg];
        !           544:        if(src != 0){
        !           545:        ULONG newv = (ULONG)dst / (UWORD)src;
        !           546:        ULONG rem = (ULONG)dst % (UWORD)src;
        !           547:        if (newv > 0xffff) { regs.v = regs.n = 1; } else
        !           548:        {
        !           549:        regs.v = regs.c = 0;
        !           550:        regs.z = ((WORD)(newv)) == 0;
        !           551:        regs.n = ((WORD)(newv)) < 0;
        !           552:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !           553:        regs.d[dstreg] = (newv);
        !           554:        }
        !           555:        }
        !           556: }}}}
        !           557: void op_80f0(UWORD opcode)
        !           558: {
        !           559:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           560:        ULONG dstreg = (opcode & 3584) >> 9;
        !           561: {{     CPTR srca = regs.a[srcreg];
        !           562:        UWORD srcdp = nextiword();
        !           563:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !           564: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !           565:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !           566:        srca += srcdpr;
        !           567: {      WORD src = get_word(srca);
        !           568: {      LONG dst = regs.d[dstreg];
        !           569:        if(src != 0){
        !           570:        ULONG newv = (ULONG)dst / (UWORD)src;
        !           571:        ULONG rem = (ULONG)dst % (UWORD)src;
        !           572:        if (newv > 0xffff) { regs.v = regs.n = 1; } else
        !           573:        {
        !           574:        regs.v = regs.c = 0;
        !           575:        regs.z = ((WORD)(newv)) == 0;
        !           576:        regs.n = ((WORD)(newv)) < 0;
        !           577:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !           578:        regs.d[dstreg] = (newv);
        !           579:        }
        !           580:        }
        !           581: }}}}}}
        !           582: void op_80f8(UWORD opcode)
        !           583: {
        !           584:        ULONG dstreg = (opcode & 3584) >> 9;
        !           585: {{     CPTR srca = (LONG)(WORD)nextiword();
        !           586:        WORD src = get_word(srca);
        !           587: {      LONG dst = regs.d[dstreg];
        !           588:        if(src != 0){
        !           589:        ULONG newv = (ULONG)dst / (UWORD)src;
        !           590:        ULONG rem = (ULONG)dst % (UWORD)src;
        !           591:        if (newv > 0xffff) { regs.v = regs.n = 1; } else
        !           592:        {
        !           593:        regs.v = regs.c = 0;
        !           594:        regs.z = ((WORD)(newv)) == 0;
        !           595:        regs.n = ((WORD)(newv)) < 0;
        !           596:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !           597:        regs.d[dstreg] = (newv);
        !           598:        }
        !           599:        }
        !           600: }}}}
        !           601: void op_80f9(UWORD opcode)
        !           602: {
        !           603:        ULONG dstreg = (opcode & 3584) >> 9;
        !           604: {{     CPTR srca = nextilong();
        !           605:        WORD src = get_word(srca);
        !           606: {      LONG dst = regs.d[dstreg];
        !           607:        if(src != 0){
        !           608:        ULONG newv = (ULONG)dst / (UWORD)src;
        !           609:        ULONG rem = (ULONG)dst % (UWORD)src;
        !           610:        if (newv > 0xffff) { regs.v = regs.n = 1; } else
        !           611:        {
        !           612:        regs.v = regs.c = 0;
        !           613:        regs.z = ((WORD)(newv)) == 0;
        !           614:        regs.n = ((WORD)(newv)) < 0;
        !           615:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !           616:        regs.d[dstreg] = (newv);
        !           617:        }
        !           618:        }
        !           619: }}}}
        !           620: void op_80fa(UWORD opcode)
        !           621: {
        !           622:        ULONG dstreg = (opcode & 3584) >> 9;
        !           623: {{     CPTR srca = m68k_getpc();
        !           624:        srca += (LONG)(WORD)nextiword();
        !           625: {      WORD src = get_word(srca);
        !           626: {      LONG dst = regs.d[dstreg];
        !           627:        if(src != 0){
        !           628:        ULONG newv = (ULONG)dst / (UWORD)src;
        !           629:        ULONG rem = (ULONG)dst % (UWORD)src;
        !           630:        if (newv > 0xffff) { regs.v = regs.n = 1; } else
        !           631:        {
        !           632:        regs.v = regs.c = 0;
        !           633:        regs.z = ((WORD)(newv)) == 0;
        !           634:        regs.n = ((WORD)(newv)) < 0;
        !           635:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !           636:        regs.d[dstreg] = (newv);
        !           637:        }
        !           638:        }
        !           639: }}}}}
        !           640: void op_80fb(UWORD opcode)
        !           641: {
        !           642:        ULONG dstreg = (opcode & 3584) >> 9;
        !           643: {{     CPTR srca = m68k_getpc();
        !           644:        UWORD srcdp = nextiword();
        !           645:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !           646: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !           647:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !           648:        srca += srcdpr;
        !           649: {      WORD src = get_word(srca);
        !           650: {      LONG dst = regs.d[dstreg];
        !           651:        if(src != 0){
        !           652:        ULONG newv = (ULONG)dst / (UWORD)src;
        !           653:        ULONG rem = (ULONG)dst % (UWORD)src;
        !           654:        if (newv > 0xffff) { regs.v = regs.n = 1; } else
        !           655:        {
        !           656:        regs.v = regs.c = 0;
        !           657:        regs.z = ((WORD)(newv)) == 0;
        !           658:        regs.n = ((WORD)(newv)) < 0;
        !           659:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !           660:        regs.d[dstreg] = (newv);
        !           661:        }
        !           662:        }
        !           663: }}}}}}
        !           664: void op_80fc(UWORD opcode)
        !           665: {
        !           666:        ULONG dstreg = (opcode & 3584) >> 9;
        !           667: {{     WORD src = nextiword();
        !           668: {      LONG dst = regs.d[dstreg];
        !           669:        if(src != 0){
        !           670:        ULONG newv = (ULONG)dst / (UWORD)src;
        !           671:        ULONG rem = (ULONG)dst % (UWORD)src;
        !           672:        if (newv > 0xffff) { regs.v = regs.n = 1; } else
        !           673:        {
        !           674:        regs.v = regs.c = 0;
        !           675:        regs.z = ((WORD)(newv)) == 0;
        !           676:        regs.n = ((WORD)(newv)) < 0;
        !           677:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !           678:        regs.d[dstreg] = (newv);
        !           679:        }
        !           680:        }
        !           681: }}}}
        !           682: void op_8100(UWORD opcode)
        !           683: {
        !           684:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           685:        ULONG dstreg = (opcode & 3584) >> 9;
        !           686: {{     BYTE src = regs.d[srcreg];
        !           687: {      BYTE dst = regs.d[dstreg];
        !           688: {      UWORD newv = dst - src - regs.x;
        !           689:        if ((newv & 0xF) > 9) newv-=6;
        !           690:        regs.c = regs.x = (newv & 0x1F0) > 0x90;
        !           691:        if (regs.c) newv -= 0x60;
        !           692:        if (newv != 0) regs.z = 0;
        !           693:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (newv) & 0xff;
        !           694: }}}}}
        !           695: void op_8108(UWORD opcode)
        !           696: {
        !           697:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           698:        ULONG dstreg = (opcode & 3584) >> 9;
        !           699: {{     regs.a[srcreg] -= (srcreg == 7) ? 2 : 1;
        !           700: {      CPTR srca = regs.a[srcreg];
        !           701:        BYTE src = get_byte(srca);
        !           702: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !           703: {      CPTR dsta = regs.a[dstreg];
        !           704:        BYTE dst = get_byte(dsta);
        !           705: {      UWORD newv = dst - src - regs.x;
        !           706:        if ((newv & 0xF) > 9) newv-=6;
        !           707:        regs.c = regs.x = (newv & 0x1F0) > 0x90;
        !           708:        if (regs.c) newv -= 0x60;
        !           709:        if (newv != 0) regs.z = 0;
        !           710:        put_byte(dsta,newv);
        !           711: }}}}}}}
        !           712: void op_8110(UWORD opcode)
        !           713: {
        !           714:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           715:        ULONG dstreg = (opcode & 7) >> 0;
        !           716: {{     BYTE src = regs.d[srcreg];
        !           717: {      CPTR dsta = regs.a[dstreg];
        !           718:        BYTE dst = get_byte(dsta);
        !           719:        src |= dst;
        !           720:        regs.v = regs.c = 0;
        !           721:        regs.z = ((BYTE)(src)) == 0;
        !           722:        regs.n = ((BYTE)(src)) < 0;
        !           723:        put_byte(dsta,src);
        !           724: }}}}
        !           725: void op_8118(UWORD opcode)
        !           726: {
        !           727:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           728:        ULONG dstreg = (opcode & 7) >> 0;
        !           729: {{     BYTE src = regs.d[srcreg];
        !           730: {      CPTR dsta = regs.a[dstreg];
        !           731:        BYTE dst = get_byte(dsta);
        !           732: {      regs.a[dstreg] += (dstreg == 7) ? 2 : 1;
        !           733:        src |= dst;
        !           734:        regs.v = regs.c = 0;
        !           735:        regs.z = ((BYTE)(src)) == 0;
        !           736:        regs.n = ((BYTE)(src)) < 0;
        !           737:        put_byte(dsta,src);
        !           738: }}}}}
        !           739: void op_8120(UWORD opcode)
        !           740: {
        !           741:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           742:        ULONG dstreg = (opcode & 7) >> 0;
        !           743: {{     BYTE src = regs.d[srcreg];
        !           744: {      regs.a[dstreg] -= (dstreg == 7) ? 2 : 1;
        !           745: {      CPTR dsta = regs.a[dstreg];
        !           746:        BYTE dst = get_byte(dsta);
        !           747:        src |= dst;
        !           748:        regs.v = regs.c = 0;
        !           749:        regs.z = ((BYTE)(src)) == 0;
        !           750:        regs.n = ((BYTE)(src)) < 0;
        !           751:        put_byte(dsta,src);
        !           752: }}}}}
        !           753: void op_8128(UWORD opcode)
        !           754: {
        !           755:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           756:        ULONG dstreg = (opcode & 7) >> 0;
        !           757: {{     BYTE src = regs.d[srcreg];
        !           758: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !           759:        BYTE dst = get_byte(dsta);
        !           760:        src |= dst;
        !           761:        regs.v = regs.c = 0;
        !           762:        regs.z = ((BYTE)(src)) == 0;
        !           763:        regs.n = ((BYTE)(src)) < 0;
        !           764:        put_byte(dsta,src);
        !           765: }}}}
        !           766: void op_8130(UWORD opcode)
        !           767: {
        !           768:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           769:        ULONG dstreg = (opcode & 7) >> 0;
        !           770: {{     BYTE src = regs.d[srcreg];
        !           771: {      CPTR dsta = regs.a[dstreg];
        !           772:        UWORD dstdp = nextiword();
        !           773:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !           774: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !           775:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !           776:        dsta += dstdpr;
        !           777: {      BYTE dst = get_byte(dsta);
        !           778:        src |= dst;
        !           779:        regs.v = regs.c = 0;
        !           780:        regs.z = ((BYTE)(src)) == 0;
        !           781:        regs.n = ((BYTE)(src)) < 0;
        !           782:        put_byte(dsta,src);
        !           783: }}}}}}
        !           784: void op_8138(UWORD opcode)
        !           785: {
        !           786:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           787: {{     BYTE src = regs.d[srcreg];
        !           788: {      CPTR dsta = (LONG)(WORD)nextiword();
        !           789:        BYTE dst = get_byte(dsta);
        !           790:        src |= dst;
        !           791:        regs.v = regs.c = 0;
        !           792:        regs.z = ((BYTE)(src)) == 0;
        !           793:        regs.n = ((BYTE)(src)) < 0;
        !           794:        put_byte(dsta,src);
        !           795: }}}}
        !           796: void op_8139(UWORD opcode)
        !           797: {
        !           798:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           799: {{     BYTE src = regs.d[srcreg];
        !           800: {      CPTR dsta = nextilong();
        !           801:        BYTE dst = get_byte(dsta);
        !           802:        src |= dst;
        !           803:        regs.v = regs.c = 0;
        !           804:        regs.z = ((BYTE)(src)) == 0;
        !           805:        regs.n = ((BYTE)(src)) < 0;
        !           806:        put_byte(dsta,src);
        !           807: }}}}
        !           808: void op_8150(UWORD opcode)
        !           809: {
        !           810:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           811:        ULONG dstreg = (opcode & 7) >> 0;
        !           812: {{     WORD src = regs.d[srcreg];
        !           813: {      CPTR dsta = regs.a[dstreg];
        !           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_8158(UWORD opcode)
        !           822: {
        !           823:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           824:        ULONG dstreg = (opcode & 7) >> 0;
        !           825: {{     WORD src = regs.d[srcreg];
        !           826: {      CPTR dsta = regs.a[dstreg];
        !           827:        WORD dst = get_word(dsta);
        !           828: {      regs.a[dstreg] += 2;
        !           829:        src |= dst;
        !           830:        regs.v = regs.c = 0;
        !           831:        regs.z = ((WORD)(src)) == 0;
        !           832:        regs.n = ((WORD)(src)) < 0;
        !           833:        put_word(dsta,src);
        !           834: }}}}}
        !           835: void op_8160(UWORD opcode)
        !           836: {
        !           837:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           838:        ULONG dstreg = (opcode & 7) >> 0;
        !           839: {{     WORD src = regs.d[srcreg];
        !           840: {      regs.a[dstreg] -= 2;
        !           841: {      CPTR dsta = regs.a[dstreg];
        !           842:        WORD dst = get_word(dsta);
        !           843:        src |= dst;
        !           844:        regs.v = regs.c = 0;
        !           845:        regs.z = ((WORD)(src)) == 0;
        !           846:        regs.n = ((WORD)(src)) < 0;
        !           847:        put_word(dsta,src);
        !           848: }}}}}
        !           849: void op_8168(UWORD opcode)
        !           850: {
        !           851:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           852:        ULONG dstreg = (opcode & 7) >> 0;
        !           853: {{     WORD src = regs.d[srcreg];
        !           854: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !           855:        WORD dst = get_word(dsta);
        !           856:        src |= dst;
        !           857:        regs.v = regs.c = 0;
        !           858:        regs.z = ((WORD)(src)) == 0;
        !           859:        regs.n = ((WORD)(src)) < 0;
        !           860:        put_word(dsta,src);
        !           861: }}}}
        !           862: void op_8170(UWORD opcode)
        !           863: {
        !           864:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           865:        ULONG dstreg = (opcode & 7) >> 0;
        !           866: {{     WORD src = regs.d[srcreg];
        !           867: {      CPTR dsta = regs.a[dstreg];
        !           868:        UWORD dstdp = nextiword();
        !           869:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !           870: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !           871:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !           872:        dsta += dstdpr;
        !           873: {      WORD dst = get_word(dsta);
        !           874:        src |= dst;
        !           875:        regs.v = regs.c = 0;
        !           876:        regs.z = ((WORD)(src)) == 0;
        !           877:        regs.n = ((WORD)(src)) < 0;
        !           878:        put_word(dsta,src);
        !           879: }}}}}}
        !           880: void op_8178(UWORD opcode)
        !           881: {
        !           882:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           883: {{     WORD src = regs.d[srcreg];
        !           884: {      CPTR dsta = (LONG)(WORD)nextiword();
        !           885:        WORD dst = get_word(dsta);
        !           886:        src |= dst;
        !           887:        regs.v = regs.c = 0;
        !           888:        regs.z = ((WORD)(src)) == 0;
        !           889:        regs.n = ((WORD)(src)) < 0;
        !           890:        put_word(dsta,src);
        !           891: }}}}
        !           892: void op_8179(UWORD opcode)
        !           893: {
        !           894:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           895: {{     WORD src = regs.d[srcreg];
        !           896: {      CPTR dsta = nextilong();
        !           897:        WORD dst = get_word(dsta);
        !           898:        src |= dst;
        !           899:        regs.v = regs.c = 0;
        !           900:        regs.z = ((WORD)(src)) == 0;
        !           901:        regs.n = ((WORD)(src)) < 0;
        !           902:        put_word(dsta,src);
        !           903: }}}}
        !           904: void op_8190(UWORD opcode)
        !           905: {
        !           906:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           907:        ULONG dstreg = (opcode & 7) >> 0;
        !           908: {{     LONG src = regs.d[srcreg];
        !           909: {      CPTR dsta = regs.a[dstreg];
        !           910:        LONG dst = get_long(dsta);
        !           911:        src |= dst;
        !           912:        regs.v = regs.c = 0;
        !           913:        regs.z = ((LONG)(src)) == 0;
        !           914:        regs.n = ((LONG)(src)) < 0;
        !           915:        put_long(dsta,src);
        !           916: }}}}
        !           917: void op_8198(UWORD opcode)
        !           918: {
        !           919:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           920:        ULONG dstreg = (opcode & 7) >> 0;
        !           921: {{     LONG src = regs.d[srcreg];
        !           922: {      CPTR dsta = regs.a[dstreg];
        !           923:        LONG dst = get_long(dsta);
        !           924: {      regs.a[dstreg] += 4;
        !           925:        src |= dst;
        !           926:        regs.v = regs.c = 0;
        !           927:        regs.z = ((LONG)(src)) == 0;
        !           928:        regs.n = ((LONG)(src)) < 0;
        !           929:        put_long(dsta,src);
        !           930: }}}}}
        !           931: void op_81a0(UWORD opcode)
        !           932: {
        !           933:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           934:        ULONG dstreg = (opcode & 7) >> 0;
        !           935: {{     LONG src = regs.d[srcreg];
        !           936: {      regs.a[dstreg] -= 4;
        !           937: {      CPTR dsta = regs.a[dstreg];
        !           938:        LONG dst = get_long(dsta);
        !           939:        src |= dst;
        !           940:        regs.v = regs.c = 0;
        !           941:        regs.z = ((LONG)(src)) == 0;
        !           942:        regs.n = ((LONG)(src)) < 0;
        !           943:        put_long(dsta,src);
        !           944: }}}}}
        !           945: void op_81a8(UWORD opcode)
        !           946: {
        !           947:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           948:        ULONG dstreg = (opcode & 7) >> 0;
        !           949: {{     LONG src = regs.d[srcreg];
        !           950: {      CPTR dsta = regs.a[dstreg] + (LONG)(WORD)nextiword();
        !           951:        LONG dst = get_long(dsta);
        !           952:        src |= dst;
        !           953:        regs.v = regs.c = 0;
        !           954:        regs.z = ((LONG)(src)) == 0;
        !           955:        regs.n = ((LONG)(src)) < 0;
        !           956:        put_long(dsta,src);
        !           957: }}}}
        !           958: void op_81b0(UWORD opcode)
        !           959: {
        !           960:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           961:        ULONG dstreg = (opcode & 7) >> 0;
        !           962: {{     LONG src = regs.d[srcreg];
        !           963: {      CPTR dsta = regs.a[dstreg];
        !           964:        UWORD dstdp = nextiword();
        !           965:        dsta += (LONG)(BYTE)(dstdp & 0xFF);
        !           966: {      ULONG dstdpr = dstdp & 0x8000 ? regs.a[(dstdp & 0x7000) >> 12] : regs.d[(dstdp & 0x7000) >> 12];
        !           967:        if (!(dstdp & 0x800)) dstdpr = (LONG)(WORD)dstdpr;
        !           968:        dsta += dstdpr;
        !           969: {      LONG dst = get_long(dsta);
        !           970:        src |= dst;
        !           971:        regs.v = regs.c = 0;
        !           972:        regs.z = ((LONG)(src)) == 0;
        !           973:        regs.n = ((LONG)(src)) < 0;
        !           974:        put_long(dsta,src);
        !           975: }}}}}}
        !           976: void op_81b8(UWORD opcode)
        !           977: {
        !           978:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           979: {{     LONG src = regs.d[srcreg];
        !           980: {      CPTR dsta = (LONG)(WORD)nextiword();
        !           981:        LONG dst = get_long(dsta);
        !           982:        src |= dst;
        !           983:        regs.v = regs.c = 0;
        !           984:        regs.z = ((LONG)(src)) == 0;
        !           985:        regs.n = ((LONG)(src)) < 0;
        !           986:        put_long(dsta,src);
        !           987: }}}}
        !           988: void op_81b9(UWORD opcode)
        !           989: {
        !           990:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           991: {{     LONG src = regs.d[srcreg];
        !           992: {      CPTR dsta = nextilong();
        !           993:        LONG dst = get_long(dsta);
        !           994:        src |= dst;
        !           995:        regs.v = regs.c = 0;
        !           996:        regs.z = ((LONG)(src)) == 0;
        !           997:        regs.n = ((LONG)(src)) < 0;
        !           998:        put_long(dsta,src);
        !           999: }}}}
        !          1000: void op_81c0(UWORD opcode)
        !          1001: {
        !          1002:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1003:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1004: {{     WORD src = regs.d[srcreg];
        !          1005: {      LONG dst = regs.d[dstreg];
        !          1006:        if(src != 0){
        !          1007:        LONG newv = (LONG)dst / (WORD)src;
        !          1008:        UWORD rem = (LONG)dst % (WORD)src;
        !          1009:        if ((newv & 0xffff0000) && (newv & 0xffff0000) != 0xffff0000) { regs.v = regs.n = 1; } else
        !          1010:        {
        !          1011:        if (((WORD)rem < 0) != ((LONG)dst < 0)) rem = -rem;
        !          1012:        regs.v = regs.c = 0;
        !          1013:        regs.z = ((WORD)(newv)) == 0;
        !          1014:        regs.n = ((WORD)(newv)) < 0;
        !          1015:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !          1016:        regs.d[dstreg] = (newv);
        !          1017:        }
        !          1018:        }
        !          1019: }}}}
        !          1020: void op_81d0(UWORD opcode)
        !          1021: {
        !          1022:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1023:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1024: {{     CPTR srca = regs.a[srcreg];
        !          1025:        WORD src = get_word(srca);
        !          1026: {      LONG dst = regs.d[dstreg];
        !          1027:        if(src != 0){
        !          1028:        LONG newv = (LONG)dst / (WORD)src;
        !          1029:        UWORD rem = (LONG)dst % (WORD)src;
        !          1030:        if ((newv & 0xffff0000) && (newv & 0xffff0000) != 0xffff0000) { regs.v = regs.n = 1; } else
        !          1031:        {
        !          1032:        if (((WORD)rem < 0) != ((LONG)dst < 0)) rem = -rem;
        !          1033:        regs.v = regs.c = 0;
        !          1034:        regs.z = ((WORD)(newv)) == 0;
        !          1035:        regs.n = ((WORD)(newv)) < 0;
        !          1036:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !          1037:        regs.d[dstreg] = (newv);
        !          1038:        }
        !          1039:        }
        !          1040: }}}}
        !          1041: void op_81d8(UWORD opcode)
        !          1042: {
        !          1043:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1044:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1045: {{     CPTR srca = regs.a[srcreg];
        !          1046:        WORD src = get_word(srca);
        !          1047: {      regs.a[srcreg] += 2;
        !          1048: {      LONG dst = regs.d[dstreg];
        !          1049:        if(src != 0){
        !          1050:        LONG newv = (LONG)dst / (WORD)src;
        !          1051:        UWORD rem = (LONG)dst % (WORD)src;
        !          1052:        if ((newv & 0xffff0000) && (newv & 0xffff0000) != 0xffff0000) { regs.v = regs.n = 1; } else
        !          1053:        {
        !          1054:        if (((WORD)rem < 0) != ((LONG)dst < 0)) rem = -rem;
        !          1055:        regs.v = regs.c = 0;
        !          1056:        regs.z = ((WORD)(newv)) == 0;
        !          1057:        regs.n = ((WORD)(newv)) < 0;
        !          1058:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !          1059:        regs.d[dstreg] = (newv);
        !          1060:        }
        !          1061:        }
        !          1062: }}}}}
        !          1063: void op_81e0(UWORD opcode)
        !          1064: {
        !          1065:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1066:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1067: {{     regs.a[srcreg] -= 2;
        !          1068: {      CPTR srca = regs.a[srcreg];
        !          1069:        WORD src = get_word(srca);
        !          1070: {      LONG dst = regs.d[dstreg];
        !          1071:        if(src != 0){
        !          1072:        LONG newv = (LONG)dst / (WORD)src;
        !          1073:        UWORD rem = (LONG)dst % (WORD)src;
        !          1074:        if ((newv & 0xffff0000) && (newv & 0xffff0000) != 0xffff0000) { regs.v = regs.n = 1; } else
        !          1075:        {
        !          1076:        if (((WORD)rem < 0) != ((LONG)dst < 0)) rem = -rem;
        !          1077:        regs.v = regs.c = 0;
        !          1078:        regs.z = ((WORD)(newv)) == 0;
        !          1079:        regs.n = ((WORD)(newv)) < 0;
        !          1080:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !          1081:        regs.d[dstreg] = (newv);
        !          1082:        }
        !          1083:        }
        !          1084: }}}}}
        !          1085: void op_81e8(UWORD opcode)
        !          1086: {
        !          1087:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1088:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1089: {{     CPTR srca = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          1090:        WORD src = get_word(srca);
        !          1091: {      LONG dst = regs.d[dstreg];
        !          1092:        if(src != 0){
        !          1093:        LONG newv = (LONG)dst / (WORD)src;
        !          1094:        UWORD rem = (LONG)dst % (WORD)src;
        !          1095:        if ((newv & 0xffff0000) && (newv & 0xffff0000) != 0xffff0000) { regs.v = regs.n = 1; } else
        !          1096:        {
        !          1097:        if (((WORD)rem < 0) != ((LONG)dst < 0)) rem = -rem;
        !          1098:        regs.v = regs.c = 0;
        !          1099:        regs.z = ((WORD)(newv)) == 0;
        !          1100:        regs.n = ((WORD)(newv)) < 0;
        !          1101:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !          1102:        regs.d[dstreg] = (newv);
        !          1103:        }
        !          1104:        }
        !          1105: }}}}
        !          1106: void op_81f0(UWORD opcode)
        !          1107: {
        !          1108:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1109:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1110: {{     CPTR srca = regs.a[srcreg];
        !          1111:        UWORD srcdp = nextiword();
        !          1112:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          1113: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          1114:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          1115:        srca += srcdpr;
        !          1116: {      WORD src = get_word(srca);
        !          1117: {      LONG dst = regs.d[dstreg];
        !          1118:        if(src != 0){
        !          1119:        LONG newv = (LONG)dst / (WORD)src;
        !          1120:        UWORD rem = (LONG)dst % (WORD)src;
        !          1121:        if ((newv & 0xffff0000) && (newv & 0xffff0000) != 0xffff0000) { regs.v = regs.n = 1; } else
        !          1122:        {
        !          1123:        if (((WORD)rem < 0) != ((LONG)dst < 0)) rem = -rem;
        !          1124:        regs.v = regs.c = 0;
        !          1125:        regs.z = ((WORD)(newv)) == 0;
        !          1126:        regs.n = ((WORD)(newv)) < 0;
        !          1127:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !          1128:        regs.d[dstreg] = (newv);
        !          1129:        }
        !          1130:        }
        !          1131: }}}}}}
        !          1132: void op_81f8(UWORD opcode)
        !          1133: {
        !          1134:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1135: {{     CPTR srca = (LONG)(WORD)nextiword();
        !          1136:        WORD src = get_word(srca);
        !          1137: {      LONG dst = regs.d[dstreg];
        !          1138:        if(src != 0){
        !          1139:        LONG newv = (LONG)dst / (WORD)src;
        !          1140:        UWORD rem = (LONG)dst % (WORD)src;
        !          1141:        if ((newv & 0xffff0000) && (newv & 0xffff0000) != 0xffff0000) { regs.v = regs.n = 1; } else
        !          1142:        {
        !          1143:        if (((WORD)rem < 0) != ((LONG)dst < 0)) rem = -rem;
        !          1144:        regs.v = regs.c = 0;
        !          1145:        regs.z = ((WORD)(newv)) == 0;
        !          1146:        regs.n = ((WORD)(newv)) < 0;
        !          1147:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !          1148:        regs.d[dstreg] = (newv);
        !          1149:        }
        !          1150:        }
        !          1151: }}}}
        !          1152: void op_81f9(UWORD opcode)
        !          1153: {
        !          1154:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1155: {{     CPTR srca = nextilong();
        !          1156:        WORD src = get_word(srca);
        !          1157: {      LONG dst = regs.d[dstreg];
        !          1158:        if(src != 0){
        !          1159:        LONG newv = (LONG)dst / (WORD)src;
        !          1160:        UWORD rem = (LONG)dst % (WORD)src;
        !          1161:        if ((newv & 0xffff0000) && (newv & 0xffff0000) != 0xffff0000) { regs.v = regs.n = 1; } else
        !          1162:        {
        !          1163:        if (((WORD)rem < 0) != ((LONG)dst < 0)) rem = -rem;
        !          1164:        regs.v = regs.c = 0;
        !          1165:        regs.z = ((WORD)(newv)) == 0;
        !          1166:        regs.n = ((WORD)(newv)) < 0;
        !          1167:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !          1168:        regs.d[dstreg] = (newv);
        !          1169:        }
        !          1170:        }
        !          1171: }}}}
        !          1172: void op_81fa(UWORD opcode)
        !          1173: {
        !          1174:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1175: {{     CPTR srca = m68k_getpc();
        !          1176:        srca += (LONG)(WORD)nextiword();
        !          1177: {      WORD src = get_word(srca);
        !          1178: {      LONG dst = regs.d[dstreg];
        !          1179:        if(src != 0){
        !          1180:        LONG newv = (LONG)dst / (WORD)src;
        !          1181:        UWORD rem = (LONG)dst % (WORD)src;
        !          1182:        if ((newv & 0xffff0000) && (newv & 0xffff0000) != 0xffff0000) { regs.v = regs.n = 1; } else
        !          1183:        {
        !          1184:        if (((WORD)rem < 0) != ((LONG)dst < 0)) rem = -rem;
        !          1185:        regs.v = regs.c = 0;
        !          1186:        regs.z = ((WORD)(newv)) == 0;
        !          1187:        regs.n = ((WORD)(newv)) < 0;
        !          1188:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !          1189:        regs.d[dstreg] = (newv);
        !          1190:        }
        !          1191:        }
        !          1192: }}}}}
        !          1193: void op_81fb(UWORD opcode)
        !          1194: {
        !          1195:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1196: {{     CPTR srca = m68k_getpc();
        !          1197:        UWORD srcdp = nextiword();
        !          1198:        srca += (LONG)(BYTE)(srcdp & 0xFF);
        !          1199: {      ULONG srcdpr = srcdp & 0x8000 ? regs.a[(srcdp & 0x7000) >> 12] : regs.d[(srcdp & 0x7000) >> 12];
        !          1200:        if (!(srcdp & 0x800)) srcdpr = (LONG)(WORD)srcdpr;
        !          1201:        srca += srcdpr;
        !          1202: {      WORD src = get_word(srca);
        !          1203: {      LONG dst = regs.d[dstreg];
        !          1204:        if(src != 0){
        !          1205:        LONG newv = (LONG)dst / (WORD)src;
        !          1206:        UWORD rem = (LONG)dst % (WORD)src;
        !          1207:        if ((newv & 0xffff0000) && (newv & 0xffff0000) != 0xffff0000) { regs.v = regs.n = 1; } else
        !          1208:        {
        !          1209:        if (((WORD)rem < 0) != ((LONG)dst < 0)) rem = -rem;
        !          1210:        regs.v = regs.c = 0;
        !          1211:        regs.z = ((WORD)(newv)) == 0;
        !          1212:        regs.n = ((WORD)(newv)) < 0;
        !          1213:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !          1214:        regs.d[dstreg] = (newv);
        !          1215:        }
        !          1216:        }
        !          1217: }}}}}}
        !          1218: void op_81fc(UWORD opcode)
        !          1219: {
        !          1220:        ULONG dstreg = (opcode & 3584) >> 9;
        !          1221: {{     WORD src = nextiword();
        !          1222: {      LONG dst = regs.d[dstreg];
        !          1223:        if(src != 0){
        !          1224:        LONG newv = (LONG)dst / (WORD)src;
        !          1225:        UWORD rem = (LONG)dst % (WORD)src;
        !          1226:        if ((newv & 0xffff0000) && (newv & 0xffff0000) != 0xffff0000) { regs.v = regs.n = 1; } else
        !          1227:        {
        !          1228:        if (((WORD)rem < 0) != ((LONG)dst < 0)) rem = -rem;
        !          1229:        regs.v = regs.c = 0;
        !          1230:        regs.z = ((WORD)(newv)) == 0;
        !          1231:        regs.n = ((WORD)(newv)) < 0;
        !          1232:        newv = (newv & 0xffff) | ((ULONG)rem << 16);
        !          1233:        regs.d[dstreg] = (newv);
        !          1234:        }
        !          1235:        }
        !          1236: }}}}

unix.superglobalmegacorp.com

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