Annotation of uae/CPU Sources/cpu8.c, revision 1.1.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.