Annotation of uae/CPU Sources/cpuE.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_e000(UWORD opcode)
        !            10: {
        !            11:        ULONG srcreg = 8;
        !            12:        ULONG dstreg = (opcode & 7) >> 0;
        !            13: {{     ULONG cnt = srcreg;
        !            14: {      BYTE data = regs.d[dstreg];
        !            15: {      UBYTE val = data;
        !            16:        cnt &= 63;
        !            17:        regs.v = 0;
        !            18: {      ULONG cmask = 0x80;
        !            19:        ULONG sign = cmask & val;
        !            20:        for(;cnt;--cnt){
        !            21:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !            22:        }
        !            23:        regs.n = sign != 0;
        !            24:        regs.z = val == 0;
        !            25:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !            26: }}}}}}
        !            27: void op_e008(UWORD opcode)
        !            28: {
        !            29:        ULONG srcreg = 8;
        !            30:        ULONG dstreg = (opcode & 7) >> 0;
        !            31: {{     ULONG cnt = srcreg;
        !            32: {      BYTE data = regs.d[dstreg];
        !            33: {      UBYTE val = data;
        !            34:        cnt &= 63;
        !            35: {      int carry = 0;
        !            36:        for(;cnt;--cnt){
        !            37:        carry=val&1; val >>= 1;
        !            38:        }
        !            39:        regs.v = regs.c = 0;
        !            40:        regs.z = ((BYTE)(val)) == 0;
        !            41:        regs.n = ((BYTE)(val)) < 0;
        !            42: regs.c = regs.x = carry!=0;
        !            43:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !            44: }}}}}}
        !            45: void op_e010(UWORD opcode)
        !            46: {
        !            47:        ULONG srcreg = 8;
        !            48:        ULONG dstreg = (opcode & 7) >> 0;
        !            49: {{     ULONG cnt = srcreg;
        !            50: {      BYTE data = regs.d[dstreg];
        !            51: {      UBYTE val = data;
        !            52:        cnt &= 63;
        !            53: {      int carry = 0;
        !            54:        ULONG cmask = 0x80;
        !            55:        for(;cnt;--cnt){
        !            56:        carry=val&1; val >>= 1;
        !            57:        if(regs.x) val |= cmask;
        !            58:        regs.x = carry != 0;
        !            59:        }
        !            60:        regs.v = regs.c = 0;
        !            61:        regs.z = ((BYTE)(val)) == 0;
        !            62:        regs.n = ((BYTE)(val)) < 0;
        !            63:        regs.x = regs.c = carry!=0;
        !            64:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !            65: }}}}}}
        !            66: void op_e018(UWORD opcode)
        !            67: {
        !            68:        ULONG srcreg = 8;
        !            69:        ULONG dstreg = (opcode & 7) >> 0;
        !            70: {{     ULONG cnt = srcreg;
        !            71: {      BYTE data = regs.d[dstreg];
        !            72: {      UBYTE val = data;
        !            73:        cnt &= 63;
        !            74: {      int carry = 0;
        !            75:        ULONG cmask = 0x80;
        !            76:        for(;cnt;--cnt){
        !            77:        carry=val&1; val = (ULONG)val >> 1;
        !            78:        if(carry) val |= cmask;
        !            79:        }
        !            80:        regs.v = regs.c = 0;
        !            81:        regs.z = ((BYTE)(val)) == 0;
        !            82:        regs.n = ((BYTE)(val)) < 0;
        !            83:        regs.c = carry!=0;
        !            84:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !            85: }}}}}}
        !            86: void op_e020(UWORD opcode)
        !            87: {
        !            88:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !            89:        ULONG dstreg = (opcode & 7) >> 0;
        !            90: {{     BYTE cnt = regs.d[srcreg];
        !            91: {      BYTE data = regs.d[dstreg];
        !            92: {      UBYTE val = data;
        !            93:        cnt &= 63;
        !            94:        regs.v = 0;
        !            95: {      ULONG cmask = 0x80;
        !            96:        ULONG sign = cmask & val;
        !            97:        for(;cnt;--cnt){
        !            98:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !            99:        }
        !           100:        regs.n = sign != 0;
        !           101:        regs.z = val == 0;
        !           102:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !           103: }}}}}}
        !           104: void op_e028(UWORD opcode)
        !           105: {
        !           106:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           107:        ULONG dstreg = (opcode & 7) >> 0;
        !           108: {{     BYTE cnt = regs.d[srcreg];
        !           109: {      BYTE data = regs.d[dstreg];
        !           110: {      UBYTE val = data;
        !           111:        cnt &= 63;
        !           112: {      int carry = 0;
        !           113:        for(;cnt;--cnt){
        !           114:        carry=val&1; val >>= 1;
        !           115:        }
        !           116:        regs.v = regs.c = 0;
        !           117:        regs.z = ((BYTE)(val)) == 0;
        !           118:        regs.n = ((BYTE)(val)) < 0;
        !           119: regs.c = regs.x = carry!=0;
        !           120:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !           121: }}}}}}
        !           122: void op_e030(UWORD opcode)
        !           123: {
        !           124:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           125:        ULONG dstreg = (opcode & 7) >> 0;
        !           126: {{     BYTE cnt = regs.d[srcreg];
        !           127: {      BYTE data = regs.d[dstreg];
        !           128: {      UBYTE val = data;
        !           129:        cnt &= 63;
        !           130: {      int carry = 0;
        !           131:        ULONG cmask = 0x80;
        !           132:        for(;cnt;--cnt){
        !           133:        carry=val&1; val >>= 1;
        !           134:        if(regs.x) val |= cmask;
        !           135:        regs.x = carry != 0;
        !           136:        }
        !           137:        regs.v = regs.c = 0;
        !           138:        regs.z = ((BYTE)(val)) == 0;
        !           139:        regs.n = ((BYTE)(val)) < 0;
        !           140:        regs.x = regs.c = carry!=0;
        !           141:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !           142: }}}}}}
        !           143: void op_e038(UWORD opcode)
        !           144: {
        !           145:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           146:        ULONG dstreg = (opcode & 7) >> 0;
        !           147: {{     BYTE cnt = regs.d[srcreg];
        !           148: {      BYTE data = regs.d[dstreg];
        !           149: {      UBYTE val = data;
        !           150:        cnt &= 63;
        !           151: {      int carry = 0;
        !           152:        ULONG cmask = 0x80;
        !           153:        for(;cnt;--cnt){
        !           154:        carry=val&1; val = (ULONG)val >> 1;
        !           155:        if(carry) val |= cmask;
        !           156:        }
        !           157:        regs.v = regs.c = 0;
        !           158:        regs.z = ((BYTE)(val)) == 0;
        !           159:        regs.n = ((BYTE)(val)) < 0;
        !           160:        regs.c = carry!=0;
        !           161:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !           162: }}}}}}
        !           163: void op_e040(UWORD opcode)
        !           164: {
        !           165:        ULONG srcreg = 8;
        !           166:        ULONG dstreg = (opcode & 7) >> 0;
        !           167: {{     ULONG cnt = srcreg;
        !           168: {      WORD data = regs.d[dstreg];
        !           169: {      UWORD val = data;
        !           170:        cnt &= 63;
        !           171:        regs.v = 0;
        !           172: {      ULONG cmask = 0x8000;
        !           173:        ULONG sign = cmask & val;
        !           174:        for(;cnt;--cnt){
        !           175:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !           176:        }
        !           177:        regs.n = sign != 0;
        !           178:        regs.z = val == 0;
        !           179:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           180: }}}}}}
        !           181: void op_e048(UWORD opcode)
        !           182: {
        !           183:        ULONG srcreg = 8;
        !           184:        ULONG dstreg = (opcode & 7) >> 0;
        !           185: {{     ULONG cnt = srcreg;
        !           186: {      WORD data = regs.d[dstreg];
        !           187: {      UWORD val = data;
        !           188:        cnt &= 63;
        !           189: {      int carry = 0;
        !           190:        for(;cnt;--cnt){
        !           191:        carry=val&1; val >>= 1;
        !           192:        }
        !           193:        regs.v = regs.c = 0;
        !           194:        regs.z = ((WORD)(val)) == 0;
        !           195:        regs.n = ((WORD)(val)) < 0;
        !           196: regs.c = regs.x = carry!=0;
        !           197:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           198: }}}}}}
        !           199: void op_e050(UWORD opcode)
        !           200: {
        !           201:        ULONG srcreg = 8;
        !           202:        ULONG dstreg = (opcode & 7) >> 0;
        !           203: {{     ULONG cnt = srcreg;
        !           204: {      WORD data = regs.d[dstreg];
        !           205: {      UWORD val = data;
        !           206:        cnt &= 63;
        !           207: {      int carry = 0;
        !           208:        ULONG cmask = 0x8000;
        !           209:        for(;cnt;--cnt){
        !           210:        carry=val&1; val >>= 1;
        !           211:        if(regs.x) val |= cmask;
        !           212:        regs.x = carry != 0;
        !           213:        }
        !           214:        regs.v = regs.c = 0;
        !           215:        regs.z = ((WORD)(val)) == 0;
        !           216:        regs.n = ((WORD)(val)) < 0;
        !           217:        regs.x = regs.c = carry!=0;
        !           218:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           219: }}}}}}
        !           220: void op_e058(UWORD opcode)
        !           221: {
        !           222:        ULONG srcreg = 8;
        !           223:        ULONG dstreg = (opcode & 7) >> 0;
        !           224: {{     ULONG cnt = srcreg;
        !           225: {      WORD data = regs.d[dstreg];
        !           226: {      UWORD val = data;
        !           227:        cnt &= 63;
        !           228: {      int carry = 0;
        !           229:        ULONG cmask = 0x8000;
        !           230:        for(;cnt;--cnt){
        !           231:        carry=val&1; val = (ULONG)val >> 1;
        !           232:        if(carry) val |= cmask;
        !           233:        }
        !           234:        regs.v = regs.c = 0;
        !           235:        regs.z = ((WORD)(val)) == 0;
        !           236:        regs.n = ((WORD)(val)) < 0;
        !           237:        regs.c = carry!=0;
        !           238:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           239: }}}}}}
        !           240: void op_e060(UWORD opcode)
        !           241: {
        !           242:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           243:        ULONG dstreg = (opcode & 7) >> 0;
        !           244: {{     WORD cnt = regs.d[srcreg];
        !           245: {      WORD data = regs.d[dstreg];
        !           246: {      UWORD val = data;
        !           247:        cnt &= 63;
        !           248:        regs.v = 0;
        !           249: {      ULONG cmask = 0x8000;
        !           250:        ULONG sign = cmask & val;
        !           251:        for(;cnt;--cnt){
        !           252:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !           253:        }
        !           254:        regs.n = sign != 0;
        !           255:        regs.z = val == 0;
        !           256:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           257: }}}}}}
        !           258: void op_e068(UWORD opcode)
        !           259: {
        !           260:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           261:        ULONG dstreg = (opcode & 7) >> 0;
        !           262: {{     WORD cnt = regs.d[srcreg];
        !           263: {      WORD data = regs.d[dstreg];
        !           264: {      UWORD val = data;
        !           265:        cnt &= 63;
        !           266: {      int carry = 0;
        !           267:        for(;cnt;--cnt){
        !           268:        carry=val&1; val >>= 1;
        !           269:        }
        !           270:        regs.v = regs.c = 0;
        !           271:        regs.z = ((WORD)(val)) == 0;
        !           272:        regs.n = ((WORD)(val)) < 0;
        !           273: regs.c = regs.x = carry!=0;
        !           274:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           275: }}}}}}
        !           276: void op_e070(UWORD opcode)
        !           277: {
        !           278:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           279:        ULONG dstreg = (opcode & 7) >> 0;
        !           280: {{     WORD cnt = regs.d[srcreg];
        !           281: {      WORD data = regs.d[dstreg];
        !           282: {      UWORD val = data;
        !           283:        cnt &= 63;
        !           284: {      int carry = 0;
        !           285:        ULONG cmask = 0x8000;
        !           286:        for(;cnt;--cnt){
        !           287:        carry=val&1; val >>= 1;
        !           288:        if(regs.x) val |= cmask;
        !           289:        regs.x = carry != 0;
        !           290:        }
        !           291:        regs.v = regs.c = 0;
        !           292:        regs.z = ((WORD)(val)) == 0;
        !           293:        regs.n = ((WORD)(val)) < 0;
        !           294:        regs.x = regs.c = carry!=0;
        !           295:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           296: }}}}}}
        !           297: void op_e078(UWORD opcode)
        !           298: {
        !           299:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           300:        ULONG dstreg = (opcode & 7) >> 0;
        !           301: {{     WORD cnt = regs.d[srcreg];
        !           302: {      WORD data = regs.d[dstreg];
        !           303: {      UWORD val = data;
        !           304:        cnt &= 63;
        !           305: {      int carry = 0;
        !           306:        ULONG cmask = 0x8000;
        !           307:        for(;cnt;--cnt){
        !           308:        carry=val&1; val = (ULONG)val >> 1;
        !           309:        if(carry) val |= cmask;
        !           310:        }
        !           311:        regs.v = regs.c = 0;
        !           312:        regs.z = ((WORD)(val)) == 0;
        !           313:        regs.n = ((WORD)(val)) < 0;
        !           314:        regs.c = carry!=0;
        !           315:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           316: }}}}}}
        !           317: void op_e080(UWORD opcode)
        !           318: {
        !           319:        ULONG srcreg = 8;
        !           320:        ULONG dstreg = (opcode & 7) >> 0;
        !           321: {{     ULONG cnt = srcreg;
        !           322: {      LONG data = regs.d[dstreg];
        !           323: {      ULONG val = data;
        !           324:        cnt &= 63;
        !           325:        regs.v = 0;
        !           326: {      ULONG cmask = 0x80000000;
        !           327:        ULONG sign = cmask & val;
        !           328:        for(;cnt;--cnt){
        !           329:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !           330:        }
        !           331:        regs.n = sign != 0;
        !           332:        regs.z = val == 0;
        !           333:        regs.d[dstreg] = (val);
        !           334: }}}}}}
        !           335: void op_e088(UWORD opcode)
        !           336: {
        !           337:        ULONG srcreg = 8;
        !           338:        ULONG dstreg = (opcode & 7) >> 0;
        !           339: {{     ULONG cnt = srcreg;
        !           340: {      LONG data = regs.d[dstreg];
        !           341: {      ULONG val = data;
        !           342:        cnt &= 63;
        !           343: {      int carry = 0;
        !           344:        for(;cnt;--cnt){
        !           345:        carry=val&1; val >>= 1;
        !           346:        }
        !           347:        regs.v = regs.c = 0;
        !           348:        regs.z = ((LONG)(val)) == 0;
        !           349:        regs.n = ((LONG)(val)) < 0;
        !           350: regs.c = regs.x = carry!=0;
        !           351:        regs.d[dstreg] = (val);
        !           352: }}}}}}
        !           353: void op_e090(UWORD opcode)
        !           354: {
        !           355:        ULONG srcreg = 8;
        !           356:        ULONG dstreg = (opcode & 7) >> 0;
        !           357: {{     ULONG cnt = srcreg;
        !           358: {      LONG data = regs.d[dstreg];
        !           359: {      ULONG val = data;
        !           360:        cnt &= 63;
        !           361: {      int carry = 0;
        !           362:        ULONG cmask = 0x80000000;
        !           363:        for(;cnt;--cnt){
        !           364:        carry=val&1; val >>= 1;
        !           365:        if(regs.x) val |= cmask;
        !           366:        regs.x = carry != 0;
        !           367:        }
        !           368:        regs.v = regs.c = 0;
        !           369:        regs.z = ((LONG)(val)) == 0;
        !           370:        regs.n = ((LONG)(val)) < 0;
        !           371:        regs.x = regs.c = carry!=0;
        !           372:        regs.d[dstreg] = (val);
        !           373: }}}}}}
        !           374: void op_e098(UWORD opcode)
        !           375: {
        !           376:        ULONG srcreg = 8;
        !           377:        ULONG dstreg = (opcode & 7) >> 0;
        !           378: {{     ULONG cnt = srcreg;
        !           379: {      LONG data = regs.d[dstreg];
        !           380: {      ULONG val = data;
        !           381:        cnt &= 63;
        !           382: {      int carry = 0;
        !           383:        ULONG cmask = 0x80000000;
        !           384:        for(;cnt;--cnt){
        !           385:        carry=val&1; val = (ULONG)val >> 1;
        !           386:        if(carry) val |= cmask;
        !           387:        }
        !           388:        regs.v = regs.c = 0;
        !           389:        regs.z = ((LONG)(val)) == 0;
        !           390:        regs.n = ((LONG)(val)) < 0;
        !           391:        regs.c = carry!=0;
        !           392:        regs.d[dstreg] = (val);
        !           393: }}}}}}
        !           394: void op_e0a0(UWORD opcode)
        !           395: {
        !           396:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           397:        ULONG dstreg = (opcode & 7) >> 0;
        !           398: {{     LONG cnt = regs.d[srcreg];
        !           399: {      LONG data = regs.d[dstreg];
        !           400: {      ULONG val = data;
        !           401:        cnt &= 63;
        !           402:        regs.v = 0;
        !           403: {      ULONG cmask = 0x80000000;
        !           404:        ULONG sign = cmask & val;
        !           405:        for(;cnt;--cnt){
        !           406:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !           407:        }
        !           408:        regs.n = sign != 0;
        !           409:        regs.z = val == 0;
        !           410:        regs.d[dstreg] = (val);
        !           411: }}}}}}
        !           412: void op_e0a8(UWORD opcode)
        !           413: {
        !           414:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           415:        ULONG dstreg = (opcode & 7) >> 0;
        !           416: {{     LONG cnt = regs.d[srcreg];
        !           417: {      LONG data = regs.d[dstreg];
        !           418: {      ULONG val = data;
        !           419:        cnt &= 63;
        !           420: {      int carry = 0;
        !           421:        for(;cnt;--cnt){
        !           422:        carry=val&1; val >>= 1;
        !           423:        }
        !           424:        regs.v = regs.c = 0;
        !           425:        regs.z = ((LONG)(val)) == 0;
        !           426:        regs.n = ((LONG)(val)) < 0;
        !           427: regs.c = regs.x = carry!=0;
        !           428:        regs.d[dstreg] = (val);
        !           429: }}}}}}
        !           430: void op_e0b0(UWORD opcode)
        !           431: {
        !           432:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           433:        ULONG dstreg = (opcode & 7) >> 0;
        !           434: {{     LONG cnt = regs.d[srcreg];
        !           435: {      LONG data = regs.d[dstreg];
        !           436: {      ULONG val = data;
        !           437:        cnt &= 63;
        !           438: {      int carry = 0;
        !           439:        ULONG cmask = 0x80000000;
        !           440:        for(;cnt;--cnt){
        !           441:        carry=val&1; val >>= 1;
        !           442:        if(regs.x) val |= cmask;
        !           443:        regs.x = carry != 0;
        !           444:        }
        !           445:        regs.v = regs.c = 0;
        !           446:        regs.z = ((LONG)(val)) == 0;
        !           447:        regs.n = ((LONG)(val)) < 0;
        !           448:        regs.x = regs.c = carry!=0;
        !           449:        regs.d[dstreg] = (val);
        !           450: }}}}}}
        !           451: void op_e0b8(UWORD opcode)
        !           452: {
        !           453:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           454:        ULONG dstreg = (opcode & 7) >> 0;
        !           455: {{     LONG cnt = regs.d[srcreg];
        !           456: {      LONG data = regs.d[dstreg];
        !           457: {      ULONG val = data;
        !           458:        cnt &= 63;
        !           459: {      int carry = 0;
        !           460:        ULONG cmask = 0x80000000;
        !           461:        for(;cnt;--cnt){
        !           462:        carry=val&1; val = (ULONG)val >> 1;
        !           463:        if(carry) val |= cmask;
        !           464:        }
        !           465:        regs.v = regs.c = 0;
        !           466:        regs.z = ((LONG)(val)) == 0;
        !           467:        regs.n = ((LONG)(val)) < 0;
        !           468:        regs.c = carry!=0;
        !           469:        regs.d[dstreg] = (val);
        !           470: }}}}}}
        !           471: void op_e0d0(UWORD opcode)
        !           472: {
        !           473:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           474: {{     CPTR dataa = regs.a[srcreg];
        !           475:        WORD data = get_word(dataa);
        !           476:        regs.v = 0;
        !           477: {      UWORD val = data;
        !           478:        ULONG cmask = 0x8000;
        !           479:        ULONG sign = cmask & val;
        !           480:        regs.c=regs.x=val&1; val = (val >> 1) | sign;
        !           481:        regs.n = sign != 0;
        !           482:        regs.z = val == 0;
        !           483:        put_word(dataa,val);
        !           484: }}}}
        !           485: void op_e0d8(UWORD opcode)
        !           486: {
        !           487:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           488: {{     CPTR dataa = regs.a[srcreg];
        !           489:        WORD data = get_word(dataa);
        !           490: {      regs.a[srcreg] += 2;
        !           491:        regs.v = 0;
        !           492: {      UWORD val = data;
        !           493:        ULONG cmask = 0x8000;
        !           494:        ULONG sign = cmask & val;
        !           495:        regs.c=regs.x=val&1; val = (val >> 1) | sign;
        !           496:        regs.n = sign != 0;
        !           497:        regs.z = val == 0;
        !           498:        put_word(dataa,val);
        !           499: }}}}}
        !           500: void op_e0e0(UWORD opcode)
        !           501: {
        !           502:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           503: {{     regs.a[srcreg] -= 2;
        !           504: {      CPTR dataa = regs.a[srcreg];
        !           505:        WORD data = get_word(dataa);
        !           506:        regs.v = 0;
        !           507: {      UWORD val = data;
        !           508:        ULONG cmask = 0x8000;
        !           509:        ULONG sign = cmask & val;
        !           510:        regs.c=regs.x=val&1; val = (val >> 1) | sign;
        !           511:        regs.n = sign != 0;
        !           512:        regs.z = val == 0;
        !           513:        put_word(dataa,val);
        !           514: }}}}}
        !           515: void op_e0e8(UWORD opcode)
        !           516: {
        !           517:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           518: {{     CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !           519:        WORD data = get_word(dataa);
        !           520:        regs.v = 0;
        !           521: {      UWORD val = data;
        !           522:        ULONG cmask = 0x8000;
        !           523:        ULONG sign = cmask & val;
        !           524:        regs.c=regs.x=val&1; val = (val >> 1) | sign;
        !           525:        regs.n = sign != 0;
        !           526:        regs.z = val == 0;
        !           527:        put_word(dataa,val);
        !           528: }}}}
        !           529: void op_e0f0(UWORD opcode)
        !           530: {
        !           531:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !           532: {{     CPTR dataa = regs.a[srcreg];
        !           533:        UWORD datadp = nextiword();
        !           534:        dataa += (LONG)(BYTE)(datadp & 0xFF);
        !           535: {      ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
        !           536:        if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
        !           537:        dataa += datadpr;
        !           538: {      WORD data = get_word(dataa);
        !           539:        regs.v = 0;
        !           540: {      UWORD val = data;
        !           541:        ULONG cmask = 0x8000;
        !           542:        ULONG sign = cmask & val;
        !           543:        regs.c=regs.x=val&1; val = (val >> 1) | sign;
        !           544:        regs.n = sign != 0;
        !           545:        regs.z = val == 0;
        !           546:        put_word(dataa,val);
        !           547: }}}}}}
        !           548: void op_e0f8(UWORD opcode)
        !           549: {
        !           550: {{     CPTR dataa = (LONG)(WORD)nextiword();
        !           551:        WORD data = get_word(dataa);
        !           552:        regs.v = 0;
        !           553: {      UWORD val = data;
        !           554:        ULONG cmask = 0x8000;
        !           555:        ULONG sign = cmask & val;
        !           556:        regs.c=regs.x=val&1; val = (val >> 1) | sign;
        !           557:        regs.n = sign != 0;
        !           558:        regs.z = val == 0;
        !           559:        put_word(dataa,val);
        !           560: }}}}
        !           561: void op_e0f9(UWORD opcode)
        !           562: {
        !           563: {{     CPTR dataa = nextilong();
        !           564:        WORD data = get_word(dataa);
        !           565:        regs.v = 0;
        !           566: {      UWORD val = data;
        !           567:        ULONG cmask = 0x8000;
        !           568:        ULONG sign = cmask & val;
        !           569:        regs.c=regs.x=val&1; val = (val >> 1) | sign;
        !           570:        regs.n = sign != 0;
        !           571:        regs.z = val == 0;
        !           572:        put_word(dataa,val);
        !           573: }}}}
        !           574: void op_e100(UWORD opcode)
        !           575: {
        !           576:        ULONG srcreg = 8;
        !           577:        ULONG dstreg = (opcode & 7) >> 0;
        !           578: {{     ULONG cnt = srcreg;
        !           579: {      BYTE data = regs.d[dstreg];
        !           580: {      UBYTE val = data;
        !           581:        cnt &= 63;
        !           582:        regs.v = 0;
        !           583: {      ULONG cmask = 0x80;
        !           584:        ULONG sign = cmask & val;
        !           585:        for(;cnt;--cnt){
        !           586:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !           587:        if ((val&cmask)!=sign)regs.v=1;
        !           588:        }
        !           589:        regs.n = (val&cmask) != 0;
        !           590:        regs.z = val == 0;
        !           591:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !           592: }}}}}}
        !           593: void op_e108(UWORD opcode)
        !           594: {
        !           595:        ULONG srcreg = 8;
        !           596:        ULONG dstreg = (opcode & 7) >> 0;
        !           597: {{     ULONG cnt = srcreg;
        !           598: {      BYTE data = regs.d[dstreg];
        !           599: {      UBYTE val = data;
        !           600:        cnt &= 63;
        !           601: {      int carry = 0;
        !           602:        ULONG cmask = 0x80;
        !           603:        for(;cnt;--cnt){
        !           604:        carry=val&cmask; val <<= 1;
        !           605:        }
        !           606:        regs.v = regs.c = 0;
        !           607:        regs.z = ((BYTE)(val)) == 0;
        !           608:        regs.n = ((BYTE)(val)) < 0;
        !           609: regs.c = regs.x = carry!=0;
        !           610:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !           611: }}}}}}
        !           612: void op_e110(UWORD opcode)
        !           613: {
        !           614:        ULONG srcreg = 8;
        !           615:        ULONG dstreg = (opcode & 7) >> 0;
        !           616: {{     ULONG cnt = srcreg;
        !           617: {      BYTE data = regs.d[dstreg];
        !           618: {      UBYTE val = data;
        !           619:        cnt &= 63;
        !           620: {      int carry = 0;
        !           621:        ULONG cmask = 0x80;
        !           622:        for(;cnt;--cnt){
        !           623:        carry=val&cmask; val <<= 1;
        !           624:        if(regs.x) val |= 1;
        !           625:        regs.x = carry != 0;
        !           626:        }
        !           627:        regs.v = regs.c = 0;
        !           628:        regs.z = ((BYTE)(val)) == 0;
        !           629:        regs.n = ((BYTE)(val)) < 0;
        !           630:        regs.x = regs.c = carry!=0;
        !           631:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !           632: }}}}}}
        !           633: void op_e118(UWORD opcode)
        !           634: {
        !           635:        ULONG srcreg = 8;
        !           636:        ULONG dstreg = (opcode & 7) >> 0;
        !           637: {{     ULONG cnt = srcreg;
        !           638: {      BYTE data = regs.d[dstreg];
        !           639: {      UBYTE val = data;
        !           640:        cnt &= 63;
        !           641: {      int carry = 0;
        !           642:        ULONG cmask = 0x80;
        !           643:        for(;cnt;--cnt){
        !           644:        carry=val&cmask; val <<= 1;
        !           645:        if(carry)  val |= 1;
        !           646:        }
        !           647:        regs.v = regs.c = 0;
        !           648:        regs.z = ((BYTE)(val)) == 0;
        !           649:        regs.n = ((BYTE)(val)) < 0;
        !           650: regs.c = carry!=0;
        !           651:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !           652: }}}}}}
        !           653: void op_e120(UWORD opcode)
        !           654: {
        !           655:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           656:        ULONG dstreg = (opcode & 7) >> 0;
        !           657: {{     BYTE cnt = regs.d[srcreg];
        !           658: {      BYTE data = regs.d[dstreg];
        !           659: {      UBYTE val = data;
        !           660:        cnt &= 63;
        !           661:        regs.v = 0;
        !           662: {      ULONG cmask = 0x80;
        !           663:        ULONG sign = cmask & val;
        !           664:        for(;cnt;--cnt){
        !           665:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !           666:        if ((val&cmask)!=sign)regs.v=1;
        !           667:        }
        !           668:        regs.n = (val&cmask) != 0;
        !           669:        regs.z = val == 0;
        !           670:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !           671: }}}}}}
        !           672: void op_e128(UWORD opcode)
        !           673: {
        !           674:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           675:        ULONG dstreg = (opcode & 7) >> 0;
        !           676: {{     BYTE cnt = regs.d[srcreg];
        !           677: {      BYTE data = regs.d[dstreg];
        !           678: {      UBYTE val = data;
        !           679:        cnt &= 63;
        !           680: {      int carry = 0;
        !           681:        ULONG cmask = 0x80;
        !           682:        for(;cnt;--cnt){
        !           683:        carry=val&cmask; val <<= 1;
        !           684:        }
        !           685:        regs.v = regs.c = 0;
        !           686:        regs.z = ((BYTE)(val)) == 0;
        !           687:        regs.n = ((BYTE)(val)) < 0;
        !           688: regs.c = regs.x = carry!=0;
        !           689:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !           690: }}}}}}
        !           691: void op_e130(UWORD opcode)
        !           692: {
        !           693:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           694:        ULONG dstreg = (opcode & 7) >> 0;
        !           695: {{     BYTE cnt = regs.d[srcreg];
        !           696: {      BYTE data = regs.d[dstreg];
        !           697: {      UBYTE val = data;
        !           698:        cnt &= 63;
        !           699: {      int carry = 0;
        !           700:        ULONG cmask = 0x80;
        !           701:        for(;cnt;--cnt){
        !           702:        carry=val&cmask; val <<= 1;
        !           703:        if(regs.x) val |= 1;
        !           704:        regs.x = carry != 0;
        !           705:        }
        !           706:        regs.v = regs.c = 0;
        !           707:        regs.z = ((BYTE)(val)) == 0;
        !           708:        regs.n = ((BYTE)(val)) < 0;
        !           709:        regs.x = regs.c = carry!=0;
        !           710:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !           711: }}}}}}
        !           712: void op_e138(UWORD opcode)
        !           713: {
        !           714:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           715:        ULONG dstreg = (opcode & 7) >> 0;
        !           716: {{     BYTE cnt = regs.d[srcreg];
        !           717: {      BYTE data = regs.d[dstreg];
        !           718: {      UBYTE val = data;
        !           719:        cnt &= 63;
        !           720: {      int carry = 0;
        !           721:        ULONG cmask = 0x80;
        !           722:        for(;cnt;--cnt){
        !           723:        carry=val&cmask; val <<= 1;
        !           724:        if(carry)  val |= 1;
        !           725:        }
        !           726:        regs.v = regs.c = 0;
        !           727:        regs.z = ((BYTE)(val)) == 0;
        !           728:        regs.n = ((BYTE)(val)) < 0;
        !           729: regs.c = carry!=0;
        !           730:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !           731: }}}}}}
        !           732: void op_e140(UWORD opcode)
        !           733: {
        !           734:        ULONG srcreg = 8;
        !           735:        ULONG dstreg = (opcode & 7) >> 0;
        !           736: {{     ULONG cnt = srcreg;
        !           737: {      WORD data = regs.d[dstreg];
        !           738: {      UWORD val = data;
        !           739:        cnt &= 63;
        !           740:        regs.v = 0;
        !           741: {      ULONG cmask = 0x8000;
        !           742:        ULONG sign = cmask & val;
        !           743:        for(;cnt;--cnt){
        !           744:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !           745:        if ((val&cmask)!=sign)regs.v=1;
        !           746:        }
        !           747:        regs.n = (val&cmask) != 0;
        !           748:        regs.z = val == 0;
        !           749:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           750: }}}}}}
        !           751: void op_e148(UWORD opcode)
        !           752: {
        !           753:        ULONG srcreg = 8;
        !           754:        ULONG dstreg = (opcode & 7) >> 0;
        !           755: {{     ULONG cnt = srcreg;
        !           756: {      WORD data = regs.d[dstreg];
        !           757: {      UWORD val = data;
        !           758:        cnt &= 63;
        !           759: {      int carry = 0;
        !           760:        ULONG cmask = 0x8000;
        !           761:        for(;cnt;--cnt){
        !           762:        carry=val&cmask; val <<= 1;
        !           763:        }
        !           764:        regs.v = regs.c = 0;
        !           765:        regs.z = ((WORD)(val)) == 0;
        !           766:        regs.n = ((WORD)(val)) < 0;
        !           767: regs.c = regs.x = carry!=0;
        !           768:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           769: }}}}}}
        !           770: void op_e150(UWORD opcode)
        !           771: {
        !           772:        ULONG srcreg = 8;
        !           773:        ULONG dstreg = (opcode & 7) >> 0;
        !           774: {{     ULONG cnt = srcreg;
        !           775: {      WORD data = regs.d[dstreg];
        !           776: {      UWORD val = data;
        !           777:        cnt &= 63;
        !           778: {      int carry = 0;
        !           779:        ULONG cmask = 0x8000;
        !           780:        for(;cnt;--cnt){
        !           781:        carry=val&cmask; val <<= 1;
        !           782:        if(regs.x) val |= 1;
        !           783:        regs.x = carry != 0;
        !           784:        }
        !           785:        regs.v = regs.c = 0;
        !           786:        regs.z = ((WORD)(val)) == 0;
        !           787:        regs.n = ((WORD)(val)) < 0;
        !           788:        regs.x = regs.c = carry!=0;
        !           789:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           790: }}}}}}
        !           791: void op_e158(UWORD opcode)
        !           792: {
        !           793:        ULONG srcreg = 8;
        !           794:        ULONG dstreg = (opcode & 7) >> 0;
        !           795: {{     ULONG cnt = srcreg;
        !           796: {      WORD data = regs.d[dstreg];
        !           797: {      UWORD val = data;
        !           798:        cnt &= 63;
        !           799: {      int carry = 0;
        !           800:        ULONG cmask = 0x8000;
        !           801:        for(;cnt;--cnt){
        !           802:        carry=val&cmask; val <<= 1;
        !           803:        if(carry)  val |= 1;
        !           804:        }
        !           805:        regs.v = regs.c = 0;
        !           806:        regs.z = ((WORD)(val)) == 0;
        !           807:        regs.n = ((WORD)(val)) < 0;
        !           808: regs.c = carry!=0;
        !           809:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           810: }}}}}}
        !           811: void op_e160(UWORD opcode)
        !           812: {
        !           813:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           814:        ULONG dstreg = (opcode & 7) >> 0;
        !           815: {{     WORD cnt = regs.d[srcreg];
        !           816: {      WORD data = regs.d[dstreg];
        !           817: {      UWORD val = data;
        !           818:        cnt &= 63;
        !           819:        regs.v = 0;
        !           820: {      ULONG cmask = 0x8000;
        !           821:        ULONG sign = cmask & val;
        !           822:        for(;cnt;--cnt){
        !           823:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !           824:        if ((val&cmask)!=sign)regs.v=1;
        !           825:        }
        !           826:        regs.n = (val&cmask) != 0;
        !           827:        regs.z = val == 0;
        !           828:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           829: }}}}}}
        !           830: void op_e168(UWORD opcode)
        !           831: {
        !           832:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           833:        ULONG dstreg = (opcode & 7) >> 0;
        !           834: {{     WORD cnt = regs.d[srcreg];
        !           835: {      WORD data = regs.d[dstreg];
        !           836: {      UWORD val = data;
        !           837:        cnt &= 63;
        !           838: {      int carry = 0;
        !           839:        ULONG cmask = 0x8000;
        !           840:        for(;cnt;--cnt){
        !           841:        carry=val&cmask; val <<= 1;
        !           842:        }
        !           843:        regs.v = regs.c = 0;
        !           844:        regs.z = ((WORD)(val)) == 0;
        !           845:        regs.n = ((WORD)(val)) < 0;
        !           846: regs.c = regs.x = carry!=0;
        !           847:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           848: }}}}}}
        !           849: void op_e170(UWORD opcode)
        !           850: {
        !           851:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           852:        ULONG dstreg = (opcode & 7) >> 0;
        !           853: {{     WORD cnt = regs.d[srcreg];
        !           854: {      WORD data = regs.d[dstreg];
        !           855: {      UWORD val = data;
        !           856:        cnt &= 63;
        !           857: {      int carry = 0;
        !           858:        ULONG cmask = 0x8000;
        !           859:        for(;cnt;--cnt){
        !           860:        carry=val&cmask; val <<= 1;
        !           861:        if(regs.x) val |= 1;
        !           862:        regs.x = carry != 0;
        !           863:        }
        !           864:        regs.v = regs.c = 0;
        !           865:        regs.z = ((WORD)(val)) == 0;
        !           866:        regs.n = ((WORD)(val)) < 0;
        !           867:        regs.x = regs.c = carry!=0;
        !           868:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           869: }}}}}}
        !           870: void op_e178(UWORD opcode)
        !           871: {
        !           872:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           873:        ULONG dstreg = (opcode & 7) >> 0;
        !           874: {{     WORD cnt = regs.d[srcreg];
        !           875: {      WORD data = regs.d[dstreg];
        !           876: {      UWORD val = data;
        !           877:        cnt &= 63;
        !           878: {      int carry = 0;
        !           879:        ULONG cmask = 0x8000;
        !           880:        for(;cnt;--cnt){
        !           881:        carry=val&cmask; val <<= 1;
        !           882:        if(carry)  val |= 1;
        !           883:        }
        !           884:        regs.v = regs.c = 0;
        !           885:        regs.z = ((WORD)(val)) == 0;
        !           886:        regs.n = ((WORD)(val)) < 0;
        !           887: regs.c = carry!=0;
        !           888:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !           889: }}}}}}
        !           890: void op_e180(UWORD opcode)
        !           891: {
        !           892:        ULONG srcreg = 8;
        !           893:        ULONG dstreg = (opcode & 7) >> 0;
        !           894: {{     ULONG cnt = srcreg;
        !           895: {      LONG data = regs.d[dstreg];
        !           896: {      ULONG val = data;
        !           897:        cnt &= 63;
        !           898:        regs.v = 0;
        !           899: {      ULONG cmask = 0x80000000;
        !           900:        ULONG sign = cmask & val;
        !           901:        for(;cnt;--cnt){
        !           902:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !           903:        if ((val&cmask)!=sign)regs.v=1;
        !           904:        }
        !           905:        regs.n = (val&cmask) != 0;
        !           906:        regs.z = val == 0;
        !           907:        regs.d[dstreg] = (val);
        !           908: }}}}}}
        !           909: void op_e188(UWORD opcode)
        !           910: {
        !           911:        ULONG srcreg = 8;
        !           912:        ULONG dstreg = (opcode & 7) >> 0;
        !           913: {{     ULONG cnt = srcreg;
        !           914: {      LONG data = regs.d[dstreg];
        !           915: {      ULONG val = data;
        !           916:        cnt &= 63;
        !           917: {      int carry = 0;
        !           918:        ULONG cmask = 0x80000000;
        !           919:        for(;cnt;--cnt){
        !           920:        carry=val&cmask; val <<= 1;
        !           921:        }
        !           922:        regs.v = regs.c = 0;
        !           923:        regs.z = ((LONG)(val)) == 0;
        !           924:        regs.n = ((LONG)(val)) < 0;
        !           925: regs.c = regs.x = carry!=0;
        !           926:        regs.d[dstreg] = (val);
        !           927: }}}}}}
        !           928: void op_e190(UWORD opcode)
        !           929: {
        !           930:        ULONG srcreg = 8;
        !           931:        ULONG dstreg = (opcode & 7) >> 0;
        !           932: {{     ULONG cnt = srcreg;
        !           933: {      LONG data = regs.d[dstreg];
        !           934: {      ULONG val = data;
        !           935:        cnt &= 63;
        !           936: {      int carry = 0;
        !           937:        ULONG cmask = 0x80000000;
        !           938:        for(;cnt;--cnt){
        !           939:        carry=val&cmask; val <<= 1;
        !           940:        if(regs.x) val |= 1;
        !           941:        regs.x = carry != 0;
        !           942:        }
        !           943:        regs.v = regs.c = 0;
        !           944:        regs.z = ((LONG)(val)) == 0;
        !           945:        regs.n = ((LONG)(val)) < 0;
        !           946:        regs.x = regs.c = carry!=0;
        !           947:        regs.d[dstreg] = (val);
        !           948: }}}}}}
        !           949: void op_e198(UWORD opcode)
        !           950: {
        !           951:        ULONG srcreg = 8;
        !           952:        ULONG dstreg = (opcode & 7) >> 0;
        !           953: {{     ULONG cnt = srcreg;
        !           954: {      LONG data = regs.d[dstreg];
        !           955: {      ULONG val = data;
        !           956:        cnt &= 63;
        !           957: {      int carry = 0;
        !           958:        ULONG cmask = 0x80000000;
        !           959:        for(;cnt;--cnt){
        !           960:        carry=val&cmask; val <<= 1;
        !           961:        if(carry)  val |= 1;
        !           962:        }
        !           963:        regs.v = regs.c = 0;
        !           964:        regs.z = ((LONG)(val)) == 0;
        !           965:        regs.n = ((LONG)(val)) < 0;
        !           966: regs.c = carry!=0;
        !           967:        regs.d[dstreg] = (val);
        !           968: }}}}}}
        !           969: void op_e1a0(UWORD opcode)
        !           970: {
        !           971:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           972:        ULONG dstreg = (opcode & 7) >> 0;
        !           973: {{     LONG cnt = regs.d[srcreg];
        !           974: {      LONG data = regs.d[dstreg];
        !           975: {      ULONG val = data;
        !           976:        cnt &= 63;
        !           977:        regs.v = 0;
        !           978: {      ULONG cmask = 0x80000000;
        !           979:        ULONG sign = cmask & val;
        !           980:        for(;cnt;--cnt){
        !           981:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !           982:        if ((val&cmask)!=sign)regs.v=1;
        !           983:        }
        !           984:        regs.n = (val&cmask) != 0;
        !           985:        regs.z = val == 0;
        !           986:        regs.d[dstreg] = (val);
        !           987: }}}}}}
        !           988: void op_e1a8(UWORD opcode)
        !           989: {
        !           990:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !           991:        ULONG dstreg = (opcode & 7) >> 0;
        !           992: {{     LONG cnt = regs.d[srcreg];
        !           993: {      LONG data = regs.d[dstreg];
        !           994: {      ULONG val = data;
        !           995:        cnt &= 63;
        !           996: {      int carry = 0;
        !           997:        ULONG cmask = 0x80000000;
        !           998:        for(;cnt;--cnt){
        !           999:        carry=val&cmask; val <<= 1;
        !          1000:        }
        !          1001:        regs.v = regs.c = 0;
        !          1002:        regs.z = ((LONG)(val)) == 0;
        !          1003:        regs.n = ((LONG)(val)) < 0;
        !          1004: regs.c = regs.x = carry!=0;
        !          1005:        regs.d[dstreg] = (val);
        !          1006: }}}}}}
        !          1007: void op_e1b0(UWORD opcode)
        !          1008: {
        !          1009:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !          1010:        ULONG dstreg = (opcode & 7) >> 0;
        !          1011: {{     LONG cnt = regs.d[srcreg];
        !          1012: {      LONG data = regs.d[dstreg];
        !          1013: {      ULONG val = data;
        !          1014:        cnt &= 63;
        !          1015: {      int carry = 0;
        !          1016:        ULONG cmask = 0x80000000;
        !          1017:        for(;cnt;--cnt){
        !          1018:        carry=val&cmask; val <<= 1;
        !          1019:        if(regs.x) val |= 1;
        !          1020:        regs.x = carry != 0;
        !          1021:        }
        !          1022:        regs.v = regs.c = 0;
        !          1023:        regs.z = ((LONG)(val)) == 0;
        !          1024:        regs.n = ((LONG)(val)) < 0;
        !          1025:        regs.x = regs.c = carry!=0;
        !          1026:        regs.d[dstreg] = (val);
        !          1027: }}}}}}
        !          1028: void op_e1b8(UWORD opcode)
        !          1029: {
        !          1030:        ULONG srcreg = (LONG)(BYTE)((opcode & 3584) >> 9);
        !          1031:        ULONG dstreg = (opcode & 7) >> 0;
        !          1032: {{     LONG cnt = regs.d[srcreg];
        !          1033: {      LONG data = regs.d[dstreg];
        !          1034: {      ULONG val = data;
        !          1035:        cnt &= 63;
        !          1036: {      int carry = 0;
        !          1037:        ULONG cmask = 0x80000000;
        !          1038:        for(;cnt;--cnt){
        !          1039:        carry=val&cmask; val <<= 1;
        !          1040:        if(carry)  val |= 1;
        !          1041:        }
        !          1042:        regs.v = regs.c = 0;
        !          1043:        regs.z = ((LONG)(val)) == 0;
        !          1044:        regs.n = ((LONG)(val)) < 0;
        !          1045: regs.c = carry!=0;
        !          1046:        regs.d[dstreg] = (val);
        !          1047: }}}}}}
        !          1048: void op_e1d0(UWORD opcode)
        !          1049: {
        !          1050:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1051: {{     CPTR dataa = regs.a[srcreg];
        !          1052:        WORD data = get_word(dataa);
        !          1053:        regs.v = 0;
        !          1054: {      UWORD val = data;
        !          1055:        ULONG cmask = 0x8000;
        !          1056:        ULONG sign = cmask & val;
        !          1057:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          1058:        if ((val&cmask)!=sign)regs.v=1;
        !          1059:        regs.n = (val&cmask) != 0;
        !          1060:        regs.z = val == 0;
        !          1061:        put_word(dataa,val);
        !          1062: }}}}
        !          1063: void op_e1d8(UWORD opcode)
        !          1064: {
        !          1065:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1066: {{     CPTR dataa = regs.a[srcreg];
        !          1067:        WORD data = get_word(dataa);
        !          1068: {      regs.a[srcreg] += 2;
        !          1069:        regs.v = 0;
        !          1070: {      UWORD val = data;
        !          1071:        ULONG cmask = 0x8000;
        !          1072:        ULONG sign = cmask & val;
        !          1073:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          1074:        if ((val&cmask)!=sign)regs.v=1;
        !          1075:        regs.n = (val&cmask) != 0;
        !          1076:        regs.z = val == 0;
        !          1077:        put_word(dataa,val);
        !          1078: }}}}}
        !          1079: void op_e1e0(UWORD opcode)
        !          1080: {
        !          1081:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1082: {{     regs.a[srcreg] -= 2;
        !          1083: {      CPTR dataa = regs.a[srcreg];
        !          1084:        WORD data = get_word(dataa);
        !          1085:        regs.v = 0;
        !          1086: {      UWORD val = data;
        !          1087:        ULONG cmask = 0x8000;
        !          1088:        ULONG sign = cmask & val;
        !          1089:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          1090:        if ((val&cmask)!=sign)regs.v=1;
        !          1091:        regs.n = (val&cmask) != 0;
        !          1092:        regs.z = val == 0;
        !          1093:        put_word(dataa,val);
        !          1094: }}}}}
        !          1095: void op_e1e8(UWORD opcode)
        !          1096: {
        !          1097:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1098: {{     CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          1099:        WORD data = get_word(dataa);
        !          1100:        regs.v = 0;
        !          1101: {      UWORD val = data;
        !          1102:        ULONG cmask = 0x8000;
        !          1103:        ULONG sign = cmask & val;
        !          1104:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          1105:        if ((val&cmask)!=sign)regs.v=1;
        !          1106:        regs.n = (val&cmask) != 0;
        !          1107:        regs.z = val == 0;
        !          1108:        put_word(dataa,val);
        !          1109: }}}}
        !          1110: void op_e1f0(UWORD opcode)
        !          1111: {
        !          1112:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1113: {{     CPTR dataa = regs.a[srcreg];
        !          1114:        UWORD datadp = nextiword();
        !          1115:        dataa += (LONG)(BYTE)(datadp & 0xFF);
        !          1116: {      ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
        !          1117:        if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
        !          1118:        dataa += datadpr;
        !          1119: {      WORD data = get_word(dataa);
        !          1120:        regs.v = 0;
        !          1121: {      UWORD val = data;
        !          1122:        ULONG cmask = 0x8000;
        !          1123:        ULONG sign = cmask & val;
        !          1124:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          1125:        if ((val&cmask)!=sign)regs.v=1;
        !          1126:        regs.n = (val&cmask) != 0;
        !          1127:        regs.z = val == 0;
        !          1128:        put_word(dataa,val);
        !          1129: }}}}}}
        !          1130: void op_e1f8(UWORD opcode)
        !          1131: {
        !          1132: {{     CPTR dataa = (LONG)(WORD)nextiword();
        !          1133:        WORD data = get_word(dataa);
        !          1134:        regs.v = 0;
        !          1135: {      UWORD val = data;
        !          1136:        ULONG cmask = 0x8000;
        !          1137:        ULONG sign = cmask & val;
        !          1138:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          1139:        if ((val&cmask)!=sign)regs.v=1;
        !          1140:        regs.n = (val&cmask) != 0;
        !          1141:        regs.z = val == 0;
        !          1142:        put_word(dataa,val);
        !          1143: }}}}
        !          1144: void op_e1f9(UWORD opcode)
        !          1145: {
        !          1146: {{     CPTR dataa = nextilong();
        !          1147:        WORD data = get_word(dataa);
        !          1148:        regs.v = 0;
        !          1149: {      UWORD val = data;
        !          1150:        ULONG cmask = 0x8000;
        !          1151:        ULONG sign = cmask & val;
        !          1152:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          1153:        if ((val&cmask)!=sign)regs.v=1;
        !          1154:        regs.n = (val&cmask) != 0;
        !          1155:        regs.z = val == 0;
        !          1156:        put_word(dataa,val);
        !          1157: }}}}
        !          1158: void op_e200(UWORD opcode)
        !          1159: {
        !          1160:        ULONG srcreg = 1;
        !          1161:        ULONG dstreg = (opcode & 7) >> 0;
        !          1162: {{     ULONG cnt = srcreg;
        !          1163: {      BYTE data = regs.d[dstreg];
        !          1164: {      UBYTE val = data;
        !          1165:        cnt &= 63;
        !          1166:        regs.v = 0;
        !          1167: {      ULONG cmask = 0x80;
        !          1168:        ULONG sign = cmask & val;
        !          1169:        for(;cnt;--cnt){
        !          1170:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          1171:        }
        !          1172:        regs.n = sign != 0;
        !          1173:        regs.z = val == 0;
        !          1174:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          1175: }}}}}}
        !          1176: void op_e208(UWORD opcode)
        !          1177: {
        !          1178:        ULONG srcreg = 1;
        !          1179:        ULONG dstreg = (opcode & 7) >> 0;
        !          1180: {{     ULONG cnt = srcreg;
        !          1181: {      BYTE data = regs.d[dstreg];
        !          1182: {      UBYTE val = data;
        !          1183:        cnt &= 63;
        !          1184: {      int carry = 0;
        !          1185:        for(;cnt;--cnt){
        !          1186:        carry=val&1; val >>= 1;
        !          1187:        }
        !          1188:        regs.v = regs.c = 0;
        !          1189:        regs.z = ((BYTE)(val)) == 0;
        !          1190:        regs.n = ((BYTE)(val)) < 0;
        !          1191: regs.c = regs.x = carry!=0;
        !          1192:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          1193: }}}}}}
        !          1194: void op_e210(UWORD opcode)
        !          1195: {
        !          1196:        ULONG srcreg = 1;
        !          1197:        ULONG dstreg = (opcode & 7) >> 0;
        !          1198: {{     ULONG cnt = srcreg;
        !          1199: {      BYTE data = regs.d[dstreg];
        !          1200: {      UBYTE val = data;
        !          1201:        cnt &= 63;
        !          1202: {      int carry = 0;
        !          1203:        ULONG cmask = 0x80;
        !          1204:        for(;cnt;--cnt){
        !          1205:        carry=val&1; val >>= 1;
        !          1206:        if(regs.x) val |= cmask;
        !          1207:        regs.x = carry != 0;
        !          1208:        }
        !          1209:        regs.v = regs.c = 0;
        !          1210:        regs.z = ((BYTE)(val)) == 0;
        !          1211:        regs.n = ((BYTE)(val)) < 0;
        !          1212:        regs.x = regs.c = carry!=0;
        !          1213:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          1214: }}}}}}
        !          1215: void op_e218(UWORD opcode)
        !          1216: {
        !          1217:        ULONG srcreg = 1;
        !          1218:        ULONG dstreg = (opcode & 7) >> 0;
        !          1219: {{     ULONG cnt = srcreg;
        !          1220: {      BYTE data = regs.d[dstreg];
        !          1221: {      UBYTE val = data;
        !          1222:        cnt &= 63;
        !          1223: {      int carry = 0;
        !          1224:        ULONG cmask = 0x80;
        !          1225:        for(;cnt;--cnt){
        !          1226:        carry=val&1; val = (ULONG)val >> 1;
        !          1227:        if(carry) val |= cmask;
        !          1228:        }
        !          1229:        regs.v = regs.c = 0;
        !          1230:        regs.z = ((BYTE)(val)) == 0;
        !          1231:        regs.n = ((BYTE)(val)) < 0;
        !          1232:        regs.c = carry!=0;
        !          1233:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          1234: }}}}}}
        !          1235: void op_e240(UWORD opcode)
        !          1236: {
        !          1237:        ULONG srcreg = 1;
        !          1238:        ULONG dstreg = (opcode & 7) >> 0;
        !          1239: {{     ULONG cnt = srcreg;
        !          1240: {      WORD data = regs.d[dstreg];
        !          1241: {      UWORD val = data;
        !          1242:        cnt &= 63;
        !          1243:        regs.v = 0;
        !          1244: {      ULONG cmask = 0x8000;
        !          1245:        ULONG sign = cmask & val;
        !          1246:        for(;cnt;--cnt){
        !          1247:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          1248:        }
        !          1249:        regs.n = sign != 0;
        !          1250:        regs.z = val == 0;
        !          1251:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          1252: }}}}}}
        !          1253: void op_e248(UWORD opcode)
        !          1254: {
        !          1255:        ULONG srcreg = 1;
        !          1256:        ULONG dstreg = (opcode & 7) >> 0;
        !          1257: {{     ULONG cnt = srcreg;
        !          1258: {      WORD data = regs.d[dstreg];
        !          1259: {      UWORD val = data;
        !          1260:        cnt &= 63;
        !          1261: {      int carry = 0;
        !          1262:        for(;cnt;--cnt){
        !          1263:        carry=val&1; val >>= 1;
        !          1264:        }
        !          1265:        regs.v = regs.c = 0;
        !          1266:        regs.z = ((WORD)(val)) == 0;
        !          1267:        regs.n = ((WORD)(val)) < 0;
        !          1268: regs.c = regs.x = carry!=0;
        !          1269:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          1270: }}}}}}
        !          1271: void op_e250(UWORD opcode)
        !          1272: {
        !          1273:        ULONG srcreg = 1;
        !          1274:        ULONG dstreg = (opcode & 7) >> 0;
        !          1275: {{     ULONG cnt = srcreg;
        !          1276: {      WORD data = regs.d[dstreg];
        !          1277: {      UWORD val = data;
        !          1278:        cnt &= 63;
        !          1279: {      int carry = 0;
        !          1280:        ULONG cmask = 0x8000;
        !          1281:        for(;cnt;--cnt){
        !          1282:        carry=val&1; val >>= 1;
        !          1283:        if(regs.x) val |= cmask;
        !          1284:        regs.x = carry != 0;
        !          1285:        }
        !          1286:        regs.v = regs.c = 0;
        !          1287:        regs.z = ((WORD)(val)) == 0;
        !          1288:        regs.n = ((WORD)(val)) < 0;
        !          1289:        regs.x = regs.c = carry!=0;
        !          1290:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          1291: }}}}}}
        !          1292: void op_e258(UWORD opcode)
        !          1293: {
        !          1294:        ULONG srcreg = 1;
        !          1295:        ULONG dstreg = (opcode & 7) >> 0;
        !          1296: {{     ULONG cnt = srcreg;
        !          1297: {      WORD data = regs.d[dstreg];
        !          1298: {      UWORD val = data;
        !          1299:        cnt &= 63;
        !          1300: {      int carry = 0;
        !          1301:        ULONG cmask = 0x8000;
        !          1302:        for(;cnt;--cnt){
        !          1303:        carry=val&1; val = (ULONG)val >> 1;
        !          1304:        if(carry) val |= cmask;
        !          1305:        }
        !          1306:        regs.v = regs.c = 0;
        !          1307:        regs.z = ((WORD)(val)) == 0;
        !          1308:        regs.n = ((WORD)(val)) < 0;
        !          1309:        regs.c = carry!=0;
        !          1310:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          1311: }}}}}}
        !          1312: void op_e280(UWORD opcode)
        !          1313: {
        !          1314:        ULONG srcreg = 1;
        !          1315:        ULONG dstreg = (opcode & 7) >> 0;
        !          1316: {{     ULONG cnt = srcreg;
        !          1317: {      LONG data = regs.d[dstreg];
        !          1318: {      ULONG val = data;
        !          1319:        cnt &= 63;
        !          1320:        regs.v = 0;
        !          1321: {      ULONG cmask = 0x80000000;
        !          1322:        ULONG sign = cmask & val;
        !          1323:        for(;cnt;--cnt){
        !          1324:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          1325:        }
        !          1326:        regs.n = sign != 0;
        !          1327:        regs.z = val == 0;
        !          1328:        regs.d[dstreg] = (val);
        !          1329: }}}}}}
        !          1330: void op_e288(UWORD opcode)
        !          1331: {
        !          1332:        ULONG srcreg = 1;
        !          1333:        ULONG dstreg = (opcode & 7) >> 0;
        !          1334: {{     ULONG cnt = srcreg;
        !          1335: {      LONG data = regs.d[dstreg];
        !          1336: {      ULONG val = data;
        !          1337:        cnt &= 63;
        !          1338: {      int carry = 0;
        !          1339:        for(;cnt;--cnt){
        !          1340:        carry=val&1; val >>= 1;
        !          1341:        }
        !          1342:        regs.v = regs.c = 0;
        !          1343:        regs.z = ((LONG)(val)) == 0;
        !          1344:        regs.n = ((LONG)(val)) < 0;
        !          1345: regs.c = regs.x = carry!=0;
        !          1346:        regs.d[dstreg] = (val);
        !          1347: }}}}}}
        !          1348: void op_e290(UWORD opcode)
        !          1349: {
        !          1350:        ULONG srcreg = 1;
        !          1351:        ULONG dstreg = (opcode & 7) >> 0;
        !          1352: {{     ULONG cnt = srcreg;
        !          1353: {      LONG data = regs.d[dstreg];
        !          1354: {      ULONG val = data;
        !          1355:        cnt &= 63;
        !          1356: {      int carry = 0;
        !          1357:        ULONG cmask = 0x80000000;
        !          1358:        for(;cnt;--cnt){
        !          1359:        carry=val&1; val >>= 1;
        !          1360:        if(regs.x) val |= cmask;
        !          1361:        regs.x = carry != 0;
        !          1362:        }
        !          1363:        regs.v = regs.c = 0;
        !          1364:        regs.z = ((LONG)(val)) == 0;
        !          1365:        regs.n = ((LONG)(val)) < 0;
        !          1366:        regs.x = regs.c = carry!=0;
        !          1367:        regs.d[dstreg] = (val);
        !          1368: }}}}}}
        !          1369: void op_e298(UWORD opcode)
        !          1370: {
        !          1371:        ULONG srcreg = 1;
        !          1372:        ULONG dstreg = (opcode & 7) >> 0;
        !          1373: {{     ULONG cnt = srcreg;
        !          1374: {      LONG data = regs.d[dstreg];
        !          1375: {      ULONG val = data;
        !          1376:        cnt &= 63;
        !          1377: {      int carry = 0;
        !          1378:        ULONG cmask = 0x80000000;
        !          1379:        for(;cnt;--cnt){
        !          1380:        carry=val&1; val = (ULONG)val >> 1;
        !          1381:        if(carry) val |= cmask;
        !          1382:        }
        !          1383:        regs.v = regs.c = 0;
        !          1384:        regs.z = ((LONG)(val)) == 0;
        !          1385:        regs.n = ((LONG)(val)) < 0;
        !          1386:        regs.c = carry!=0;
        !          1387:        regs.d[dstreg] = (val);
        !          1388: }}}}}}
        !          1389: void op_e2d0(UWORD opcode)
        !          1390: {
        !          1391:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1392: {{     CPTR dataa = regs.a[srcreg];
        !          1393:        WORD data = get_word(dataa);
        !          1394: {      UWORD val = data;
        !          1395:        int carry = val&1;
        !          1396:        carry=val&1; val >>= 1;
        !          1397:        regs.v = regs.c = 0;
        !          1398:        regs.z = ((WORD)(val)) == 0;
        !          1399:        regs.n = ((WORD)(val)) < 0;
        !          1400: regs.c = regs.x = carry!=0;
        !          1401:        put_word(dataa,val);
        !          1402: }}}}
        !          1403: void op_e2d8(UWORD opcode)
        !          1404: {
        !          1405:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1406: {{     CPTR dataa = regs.a[srcreg];
        !          1407:        WORD data = get_word(dataa);
        !          1408: {      regs.a[srcreg] += 2;
        !          1409: {      UWORD val = data;
        !          1410:        int carry = val&1;
        !          1411:        carry=val&1; val >>= 1;
        !          1412:        regs.v = regs.c = 0;
        !          1413:        regs.z = ((WORD)(val)) == 0;
        !          1414:        regs.n = ((WORD)(val)) < 0;
        !          1415: regs.c = regs.x = carry!=0;
        !          1416:        put_word(dataa,val);
        !          1417: }}}}}
        !          1418: void op_e2e0(UWORD opcode)
        !          1419: {
        !          1420:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1421: {{     regs.a[srcreg] -= 2;
        !          1422: {      CPTR dataa = regs.a[srcreg];
        !          1423:        WORD data = get_word(dataa);
        !          1424: {      UWORD val = data;
        !          1425:        int carry = val&1;
        !          1426:        carry=val&1; val >>= 1;
        !          1427:        regs.v = regs.c = 0;
        !          1428:        regs.z = ((WORD)(val)) == 0;
        !          1429:        regs.n = ((WORD)(val)) < 0;
        !          1430: regs.c = regs.x = carry!=0;
        !          1431:        put_word(dataa,val);
        !          1432: }}}}}
        !          1433: void op_e2e8(UWORD opcode)
        !          1434: {
        !          1435:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1436: {{     CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          1437:        WORD data = get_word(dataa);
        !          1438: {      UWORD val = data;
        !          1439:        int carry = val&1;
        !          1440:        carry=val&1; val >>= 1;
        !          1441:        regs.v = regs.c = 0;
        !          1442:        regs.z = ((WORD)(val)) == 0;
        !          1443:        regs.n = ((WORD)(val)) < 0;
        !          1444: regs.c = regs.x = carry!=0;
        !          1445:        put_word(dataa,val);
        !          1446: }}}}
        !          1447: void op_e2f0(UWORD opcode)
        !          1448: {
        !          1449:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1450: {{     CPTR dataa = regs.a[srcreg];
        !          1451:        UWORD datadp = nextiword();
        !          1452:        dataa += (LONG)(BYTE)(datadp & 0xFF);
        !          1453: {      ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
        !          1454:        if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
        !          1455:        dataa += datadpr;
        !          1456: {      WORD data = get_word(dataa);
        !          1457: {      UWORD val = data;
        !          1458:        int carry = val&1;
        !          1459:        carry=val&1; val >>= 1;
        !          1460:        regs.v = regs.c = 0;
        !          1461:        regs.z = ((WORD)(val)) == 0;
        !          1462:        regs.n = ((WORD)(val)) < 0;
        !          1463: regs.c = regs.x = carry!=0;
        !          1464:        put_word(dataa,val);
        !          1465: }}}}}}
        !          1466: void op_e2f8(UWORD opcode)
        !          1467: {
        !          1468: {{     CPTR dataa = (LONG)(WORD)nextiword();
        !          1469:        WORD data = get_word(dataa);
        !          1470: {      UWORD val = data;
        !          1471:        int carry = val&1;
        !          1472:        carry=val&1; val >>= 1;
        !          1473:        regs.v = regs.c = 0;
        !          1474:        regs.z = ((WORD)(val)) == 0;
        !          1475:        regs.n = ((WORD)(val)) < 0;
        !          1476: regs.c = regs.x = carry!=0;
        !          1477:        put_word(dataa,val);
        !          1478: }}}}
        !          1479: void op_e2f9(UWORD opcode)
        !          1480: {
        !          1481: {{     CPTR dataa = nextilong();
        !          1482:        WORD data = get_word(dataa);
        !          1483: {      UWORD val = data;
        !          1484:        int carry = val&1;
        !          1485:        carry=val&1; val >>= 1;
        !          1486:        regs.v = regs.c = 0;
        !          1487:        regs.z = ((WORD)(val)) == 0;
        !          1488:        regs.n = ((WORD)(val)) < 0;
        !          1489: regs.c = regs.x = carry!=0;
        !          1490:        put_word(dataa,val);
        !          1491: }}}}
        !          1492: void op_e300(UWORD opcode)
        !          1493: {
        !          1494:        ULONG srcreg = 1;
        !          1495:        ULONG dstreg = (opcode & 7) >> 0;
        !          1496: {{     ULONG cnt = srcreg;
        !          1497: {      BYTE data = regs.d[dstreg];
        !          1498: {      UBYTE val = data;
        !          1499:        cnt &= 63;
        !          1500:        regs.v = 0;
        !          1501: {      ULONG cmask = 0x80;
        !          1502:        ULONG sign = cmask & val;
        !          1503:        for(;cnt;--cnt){
        !          1504:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          1505:        if ((val&cmask)!=sign)regs.v=1;
        !          1506:        }
        !          1507:        regs.n = (val&cmask) != 0;
        !          1508:        regs.z = val == 0;
        !          1509:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          1510: }}}}}}
        !          1511: void op_e308(UWORD opcode)
        !          1512: {
        !          1513:        ULONG srcreg = 1;
        !          1514:        ULONG dstreg = (opcode & 7) >> 0;
        !          1515: {{     ULONG cnt = srcreg;
        !          1516: {      BYTE data = regs.d[dstreg];
        !          1517: {      UBYTE val = data;
        !          1518:        cnt &= 63;
        !          1519: {      int carry = 0;
        !          1520:        ULONG cmask = 0x80;
        !          1521:        for(;cnt;--cnt){
        !          1522:        carry=val&cmask; val <<= 1;
        !          1523:        }
        !          1524:        regs.v = regs.c = 0;
        !          1525:        regs.z = ((BYTE)(val)) == 0;
        !          1526:        regs.n = ((BYTE)(val)) < 0;
        !          1527: regs.c = regs.x = carry!=0;
        !          1528:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          1529: }}}}}}
        !          1530: void op_e310(UWORD opcode)
        !          1531: {
        !          1532:        ULONG srcreg = 1;
        !          1533:        ULONG dstreg = (opcode & 7) >> 0;
        !          1534: {{     ULONG cnt = srcreg;
        !          1535: {      BYTE data = regs.d[dstreg];
        !          1536: {      UBYTE val = data;
        !          1537:        cnt &= 63;
        !          1538: {      int carry = 0;
        !          1539:        ULONG cmask = 0x80;
        !          1540:        for(;cnt;--cnt){
        !          1541:        carry=val&cmask; val <<= 1;
        !          1542:        if(regs.x) val |= 1;
        !          1543:        regs.x = carry != 0;
        !          1544:        }
        !          1545:        regs.v = regs.c = 0;
        !          1546:        regs.z = ((BYTE)(val)) == 0;
        !          1547:        regs.n = ((BYTE)(val)) < 0;
        !          1548:        regs.x = regs.c = carry!=0;
        !          1549:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          1550: }}}}}}
        !          1551: void op_e318(UWORD opcode)
        !          1552: {
        !          1553:        ULONG srcreg = 1;
        !          1554:        ULONG dstreg = (opcode & 7) >> 0;
        !          1555: {{     ULONG cnt = srcreg;
        !          1556: {      BYTE data = regs.d[dstreg];
        !          1557: {      UBYTE val = data;
        !          1558:        cnt &= 63;
        !          1559: {      int carry = 0;
        !          1560:        ULONG cmask = 0x80;
        !          1561:        for(;cnt;--cnt){
        !          1562:        carry=val&cmask; val <<= 1;
        !          1563:        if(carry)  val |= 1;
        !          1564:        }
        !          1565:        regs.v = regs.c = 0;
        !          1566:        regs.z = ((BYTE)(val)) == 0;
        !          1567:        regs.n = ((BYTE)(val)) < 0;
        !          1568: regs.c = carry!=0;
        !          1569:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          1570: }}}}}}
        !          1571: void op_e340(UWORD opcode)
        !          1572: {
        !          1573:        ULONG srcreg = 1;
        !          1574:        ULONG dstreg = (opcode & 7) >> 0;
        !          1575: {{     ULONG cnt = srcreg;
        !          1576: {      WORD data = regs.d[dstreg];
        !          1577: {      UWORD val = data;
        !          1578:        cnt &= 63;
        !          1579:        regs.v = 0;
        !          1580: {      ULONG cmask = 0x8000;
        !          1581:        ULONG sign = cmask & val;
        !          1582:        for(;cnt;--cnt){
        !          1583:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          1584:        if ((val&cmask)!=sign)regs.v=1;
        !          1585:        }
        !          1586:        regs.n = (val&cmask) != 0;
        !          1587:        regs.z = val == 0;
        !          1588:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          1589: }}}}}}
        !          1590: void op_e348(UWORD opcode)
        !          1591: {
        !          1592:        ULONG srcreg = 1;
        !          1593:        ULONG dstreg = (opcode & 7) >> 0;
        !          1594: {{     ULONG cnt = srcreg;
        !          1595: {      WORD data = regs.d[dstreg];
        !          1596: {      UWORD val = data;
        !          1597:        cnt &= 63;
        !          1598: {      int carry = 0;
        !          1599:        ULONG cmask = 0x8000;
        !          1600:        for(;cnt;--cnt){
        !          1601:        carry=val&cmask; val <<= 1;
        !          1602:        }
        !          1603:        regs.v = regs.c = 0;
        !          1604:        regs.z = ((WORD)(val)) == 0;
        !          1605:        regs.n = ((WORD)(val)) < 0;
        !          1606: regs.c = regs.x = carry!=0;
        !          1607:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          1608: }}}}}}
        !          1609: void op_e350(UWORD opcode)
        !          1610: {
        !          1611:        ULONG srcreg = 1;
        !          1612:        ULONG dstreg = (opcode & 7) >> 0;
        !          1613: {{     ULONG cnt = srcreg;
        !          1614: {      WORD data = regs.d[dstreg];
        !          1615: {      UWORD val = data;
        !          1616:        cnt &= 63;
        !          1617: {      int carry = 0;
        !          1618:        ULONG cmask = 0x8000;
        !          1619:        for(;cnt;--cnt){
        !          1620:        carry=val&cmask; val <<= 1;
        !          1621:        if(regs.x) val |= 1;
        !          1622:        regs.x = carry != 0;
        !          1623:        }
        !          1624:        regs.v = regs.c = 0;
        !          1625:        regs.z = ((WORD)(val)) == 0;
        !          1626:        regs.n = ((WORD)(val)) < 0;
        !          1627:        regs.x = regs.c = carry!=0;
        !          1628:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          1629: }}}}}}
        !          1630: void op_e358(UWORD opcode)
        !          1631: {
        !          1632:        ULONG srcreg = 1;
        !          1633:        ULONG dstreg = (opcode & 7) >> 0;
        !          1634: {{     ULONG cnt = srcreg;
        !          1635: {      WORD data = regs.d[dstreg];
        !          1636: {      UWORD val = data;
        !          1637:        cnt &= 63;
        !          1638: {      int carry = 0;
        !          1639:        ULONG cmask = 0x8000;
        !          1640:        for(;cnt;--cnt){
        !          1641:        carry=val&cmask; val <<= 1;
        !          1642:        if(carry)  val |= 1;
        !          1643:        }
        !          1644:        regs.v = regs.c = 0;
        !          1645:        regs.z = ((WORD)(val)) == 0;
        !          1646:        regs.n = ((WORD)(val)) < 0;
        !          1647: regs.c = carry!=0;
        !          1648:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          1649: }}}}}}
        !          1650: void op_e380(UWORD opcode)
        !          1651: {
        !          1652:        ULONG srcreg = 1;
        !          1653:        ULONG dstreg = (opcode & 7) >> 0;
        !          1654: {{     ULONG cnt = srcreg;
        !          1655: {      LONG data = regs.d[dstreg];
        !          1656: {      ULONG val = data;
        !          1657:        cnt &= 63;
        !          1658:        regs.v = 0;
        !          1659: {      ULONG cmask = 0x80000000;
        !          1660:        ULONG sign = cmask & val;
        !          1661:        for(;cnt;--cnt){
        !          1662:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          1663:        if ((val&cmask)!=sign)regs.v=1;
        !          1664:        }
        !          1665:        regs.n = (val&cmask) != 0;
        !          1666:        regs.z = val == 0;
        !          1667:        regs.d[dstreg] = (val);
        !          1668: }}}}}}
        !          1669: void op_e388(UWORD opcode)
        !          1670: {
        !          1671:        ULONG srcreg = 1;
        !          1672:        ULONG dstreg = (opcode & 7) >> 0;
        !          1673: {{     ULONG cnt = srcreg;
        !          1674: {      LONG data = regs.d[dstreg];
        !          1675: {      ULONG val = data;
        !          1676:        cnt &= 63;
        !          1677: {      int carry = 0;
        !          1678:        ULONG cmask = 0x80000000;
        !          1679:        for(;cnt;--cnt){
        !          1680:        carry=val&cmask; val <<= 1;
        !          1681:        }
        !          1682:        regs.v = regs.c = 0;
        !          1683:        regs.z = ((LONG)(val)) == 0;
        !          1684:        regs.n = ((LONG)(val)) < 0;
        !          1685: regs.c = regs.x = carry!=0;
        !          1686:        regs.d[dstreg] = (val);
        !          1687: }}}}}}
        !          1688: void op_e390(UWORD opcode)
        !          1689: {
        !          1690:        ULONG srcreg = 1;
        !          1691:        ULONG dstreg = (opcode & 7) >> 0;
        !          1692: {{     ULONG cnt = srcreg;
        !          1693: {      LONG data = regs.d[dstreg];
        !          1694: {      ULONG val = data;
        !          1695:        cnt &= 63;
        !          1696: {      int carry = 0;
        !          1697:        ULONG cmask = 0x80000000;
        !          1698:        for(;cnt;--cnt){
        !          1699:        carry=val&cmask; val <<= 1;
        !          1700:        if(regs.x) val |= 1;
        !          1701:        regs.x = carry != 0;
        !          1702:        }
        !          1703:        regs.v = regs.c = 0;
        !          1704:        regs.z = ((LONG)(val)) == 0;
        !          1705:        regs.n = ((LONG)(val)) < 0;
        !          1706:        regs.x = regs.c = carry!=0;
        !          1707:        regs.d[dstreg] = (val);
        !          1708: }}}}}}
        !          1709: void op_e398(UWORD opcode)
        !          1710: {
        !          1711:        ULONG srcreg = 1;
        !          1712:        ULONG dstreg = (opcode & 7) >> 0;
        !          1713: {{     ULONG cnt = srcreg;
        !          1714: {      LONG data = regs.d[dstreg];
        !          1715: {      ULONG val = data;
        !          1716:        cnt &= 63;
        !          1717: {      int carry = 0;
        !          1718:        ULONG cmask = 0x80000000;
        !          1719:        for(;cnt;--cnt){
        !          1720:        carry=val&cmask; val <<= 1;
        !          1721:        if(carry)  val |= 1;
        !          1722:        }
        !          1723:        regs.v = regs.c = 0;
        !          1724:        regs.z = ((LONG)(val)) == 0;
        !          1725:        regs.n = ((LONG)(val)) < 0;
        !          1726: regs.c = carry!=0;
        !          1727:        regs.d[dstreg] = (val);
        !          1728: }}}}}}
        !          1729: void op_e3d0(UWORD opcode)
        !          1730: {
        !          1731:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1732: {{     CPTR dataa = regs.a[srcreg];
        !          1733:        WORD data = get_word(dataa);
        !          1734: {      UWORD val = data;
        !          1735:        ULONG cmask = 0x8000;
        !          1736:        int carry = val&cmask;
        !          1737:        val <<= 1;
        !          1738:        regs.v = regs.c = 0;
        !          1739:        regs.z = ((WORD)(val)) == 0;
        !          1740:        regs.n = ((WORD)(val)) < 0;
        !          1741: regs.c = regs.x = carry!=0;
        !          1742:        put_word(dataa,val);
        !          1743: }}}}
        !          1744: void op_e3d8(UWORD opcode)
        !          1745: {
        !          1746:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1747: {{     CPTR dataa = regs.a[srcreg];
        !          1748:        WORD data = get_word(dataa);
        !          1749: {      regs.a[srcreg] += 2;
        !          1750: {      UWORD val = data;
        !          1751:        ULONG cmask = 0x8000;
        !          1752:        int carry = val&cmask;
        !          1753:        val <<= 1;
        !          1754:        regs.v = regs.c = 0;
        !          1755:        regs.z = ((WORD)(val)) == 0;
        !          1756:        regs.n = ((WORD)(val)) < 0;
        !          1757: regs.c = regs.x = carry!=0;
        !          1758:        put_word(dataa,val);
        !          1759: }}}}}
        !          1760: void op_e3e0(UWORD opcode)
        !          1761: {
        !          1762:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1763: {{     regs.a[srcreg] -= 2;
        !          1764: {      CPTR dataa = regs.a[srcreg];
        !          1765:        WORD data = get_word(dataa);
        !          1766: {      UWORD val = data;
        !          1767:        ULONG cmask = 0x8000;
        !          1768:        int carry = val&cmask;
        !          1769:        val <<= 1;
        !          1770:        regs.v = regs.c = 0;
        !          1771:        regs.z = ((WORD)(val)) == 0;
        !          1772:        regs.n = ((WORD)(val)) < 0;
        !          1773: regs.c = regs.x = carry!=0;
        !          1774:        put_word(dataa,val);
        !          1775: }}}}}
        !          1776: void op_e3e8(UWORD opcode)
        !          1777: {
        !          1778:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1779: {{     CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          1780:        WORD data = get_word(dataa);
        !          1781: {      UWORD val = data;
        !          1782:        ULONG cmask = 0x8000;
        !          1783:        int carry = val&cmask;
        !          1784:        val <<= 1;
        !          1785:        regs.v = regs.c = 0;
        !          1786:        regs.z = ((WORD)(val)) == 0;
        !          1787:        regs.n = ((WORD)(val)) < 0;
        !          1788: regs.c = regs.x = carry!=0;
        !          1789:        put_word(dataa,val);
        !          1790: }}}}
        !          1791: void op_e3f0(UWORD opcode)
        !          1792: {
        !          1793:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          1794: {{     CPTR dataa = regs.a[srcreg];
        !          1795:        UWORD datadp = nextiword();
        !          1796:        dataa += (LONG)(BYTE)(datadp & 0xFF);
        !          1797: {      ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
        !          1798:        if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
        !          1799:        dataa += datadpr;
        !          1800: {      WORD data = get_word(dataa);
        !          1801: {      UWORD val = data;
        !          1802:        ULONG cmask = 0x8000;
        !          1803:        int carry = val&cmask;
        !          1804:        val <<= 1;
        !          1805:        regs.v = regs.c = 0;
        !          1806:        regs.z = ((WORD)(val)) == 0;
        !          1807:        regs.n = ((WORD)(val)) < 0;
        !          1808: regs.c = regs.x = carry!=0;
        !          1809:        put_word(dataa,val);
        !          1810: }}}}}}
        !          1811: void op_e3f8(UWORD opcode)
        !          1812: {
        !          1813: {{     CPTR dataa = (LONG)(WORD)nextiword();
        !          1814:        WORD data = get_word(dataa);
        !          1815: {      UWORD val = data;
        !          1816:        ULONG cmask = 0x8000;
        !          1817:        int carry = val&cmask;
        !          1818:        val <<= 1;
        !          1819:        regs.v = regs.c = 0;
        !          1820:        regs.z = ((WORD)(val)) == 0;
        !          1821:        regs.n = ((WORD)(val)) < 0;
        !          1822: regs.c = regs.x = carry!=0;
        !          1823:        put_word(dataa,val);
        !          1824: }}}}
        !          1825: void op_e3f9(UWORD opcode)
        !          1826: {
        !          1827: {{     CPTR dataa = nextilong();
        !          1828:        WORD data = get_word(dataa);
        !          1829: {      UWORD val = data;
        !          1830:        ULONG cmask = 0x8000;
        !          1831:        int carry = val&cmask;
        !          1832:        val <<= 1;
        !          1833:        regs.v = regs.c = 0;
        !          1834:        regs.z = ((WORD)(val)) == 0;
        !          1835:        regs.n = ((WORD)(val)) < 0;
        !          1836: regs.c = regs.x = carry!=0;
        !          1837:        put_word(dataa,val);
        !          1838: }}}}
        !          1839: void op_e400(UWORD opcode)
        !          1840: {
        !          1841:        ULONG srcreg = 2;
        !          1842:        ULONG dstreg = (opcode & 7) >> 0;
        !          1843: {{     ULONG cnt = srcreg;
        !          1844: {      BYTE data = regs.d[dstreg];
        !          1845: {      UBYTE val = data;
        !          1846:        cnt &= 63;
        !          1847:        regs.v = 0;
        !          1848: {      ULONG cmask = 0x80;
        !          1849:        ULONG sign = cmask & val;
        !          1850:        for(;cnt;--cnt){
        !          1851:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          1852:        }
        !          1853:        regs.n = sign != 0;
        !          1854:        regs.z = val == 0;
        !          1855:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          1856: }}}}}}
        !          1857: void op_e408(UWORD opcode)
        !          1858: {
        !          1859:        ULONG srcreg = 2;
        !          1860:        ULONG dstreg = (opcode & 7) >> 0;
        !          1861: {{     ULONG cnt = srcreg;
        !          1862: {      BYTE data = regs.d[dstreg];
        !          1863: {      UBYTE val = data;
        !          1864:        cnt &= 63;
        !          1865: {      int carry = 0;
        !          1866:        for(;cnt;--cnt){
        !          1867:        carry=val&1; val >>= 1;
        !          1868:        }
        !          1869:        regs.v = regs.c = 0;
        !          1870:        regs.z = ((BYTE)(val)) == 0;
        !          1871:        regs.n = ((BYTE)(val)) < 0;
        !          1872: regs.c = regs.x = carry!=0;
        !          1873:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          1874: }}}}}}
        !          1875: void op_e410(UWORD opcode)
        !          1876: {
        !          1877:        ULONG srcreg = 2;
        !          1878:        ULONG dstreg = (opcode & 7) >> 0;
        !          1879: {{     ULONG cnt = srcreg;
        !          1880: {      BYTE data = regs.d[dstreg];
        !          1881: {      UBYTE val = data;
        !          1882:        cnt &= 63;
        !          1883: {      int carry = 0;
        !          1884:        ULONG cmask = 0x80;
        !          1885:        for(;cnt;--cnt){
        !          1886:        carry=val&1; val >>= 1;
        !          1887:        if(regs.x) val |= cmask;
        !          1888:        regs.x = carry != 0;
        !          1889:        }
        !          1890:        regs.v = regs.c = 0;
        !          1891:        regs.z = ((BYTE)(val)) == 0;
        !          1892:        regs.n = ((BYTE)(val)) < 0;
        !          1893:        regs.x = regs.c = carry!=0;
        !          1894:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          1895: }}}}}}
        !          1896: void op_e418(UWORD opcode)
        !          1897: {
        !          1898:        ULONG srcreg = 2;
        !          1899:        ULONG dstreg = (opcode & 7) >> 0;
        !          1900: {{     ULONG cnt = srcreg;
        !          1901: {      BYTE data = regs.d[dstreg];
        !          1902: {      UBYTE val = data;
        !          1903:        cnt &= 63;
        !          1904: {      int carry = 0;
        !          1905:        ULONG cmask = 0x80;
        !          1906:        for(;cnt;--cnt){
        !          1907:        carry=val&1; val = (ULONG)val >> 1;
        !          1908:        if(carry) val |= cmask;
        !          1909:        }
        !          1910:        regs.v = regs.c = 0;
        !          1911:        regs.z = ((BYTE)(val)) == 0;
        !          1912:        regs.n = ((BYTE)(val)) < 0;
        !          1913:        regs.c = carry!=0;
        !          1914:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          1915: }}}}}}
        !          1916: void op_e440(UWORD opcode)
        !          1917: {
        !          1918:        ULONG srcreg = 2;
        !          1919:        ULONG dstreg = (opcode & 7) >> 0;
        !          1920: {{     ULONG cnt = srcreg;
        !          1921: {      WORD data = regs.d[dstreg];
        !          1922: {      UWORD val = data;
        !          1923:        cnt &= 63;
        !          1924:        regs.v = 0;
        !          1925: {      ULONG cmask = 0x8000;
        !          1926:        ULONG sign = cmask & val;
        !          1927:        for(;cnt;--cnt){
        !          1928:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          1929:        }
        !          1930:        regs.n = sign != 0;
        !          1931:        regs.z = val == 0;
        !          1932:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          1933: }}}}}}
        !          1934: void op_e448(UWORD opcode)
        !          1935: {
        !          1936:        ULONG srcreg = 2;
        !          1937:        ULONG dstreg = (opcode & 7) >> 0;
        !          1938: {{     ULONG cnt = srcreg;
        !          1939: {      WORD data = regs.d[dstreg];
        !          1940: {      UWORD val = data;
        !          1941:        cnt &= 63;
        !          1942: {      int carry = 0;
        !          1943:        for(;cnt;--cnt){
        !          1944:        carry=val&1; val >>= 1;
        !          1945:        }
        !          1946:        regs.v = regs.c = 0;
        !          1947:        regs.z = ((WORD)(val)) == 0;
        !          1948:        regs.n = ((WORD)(val)) < 0;
        !          1949: regs.c = regs.x = carry!=0;
        !          1950:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          1951: }}}}}}
        !          1952: void op_e450(UWORD opcode)
        !          1953: {
        !          1954:        ULONG srcreg = 2;
        !          1955:        ULONG dstreg = (opcode & 7) >> 0;
        !          1956: {{     ULONG cnt = srcreg;
        !          1957: {      WORD data = regs.d[dstreg];
        !          1958: {      UWORD val = data;
        !          1959:        cnt &= 63;
        !          1960: {      int carry = 0;
        !          1961:        ULONG cmask = 0x8000;
        !          1962:        for(;cnt;--cnt){
        !          1963:        carry=val&1; val >>= 1;
        !          1964:        if(regs.x) val |= cmask;
        !          1965:        regs.x = carry != 0;
        !          1966:        }
        !          1967:        regs.v = regs.c = 0;
        !          1968:        regs.z = ((WORD)(val)) == 0;
        !          1969:        regs.n = ((WORD)(val)) < 0;
        !          1970:        regs.x = regs.c = carry!=0;
        !          1971:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          1972: }}}}}}
        !          1973: void op_e458(UWORD opcode)
        !          1974: {
        !          1975:        ULONG srcreg = 2;
        !          1976:        ULONG dstreg = (opcode & 7) >> 0;
        !          1977: {{     ULONG cnt = srcreg;
        !          1978: {      WORD data = regs.d[dstreg];
        !          1979: {      UWORD val = data;
        !          1980:        cnt &= 63;
        !          1981: {      int carry = 0;
        !          1982:        ULONG cmask = 0x8000;
        !          1983:        for(;cnt;--cnt){
        !          1984:        carry=val&1; val = (ULONG)val >> 1;
        !          1985:        if(carry) val |= cmask;
        !          1986:        }
        !          1987:        regs.v = regs.c = 0;
        !          1988:        regs.z = ((WORD)(val)) == 0;
        !          1989:        regs.n = ((WORD)(val)) < 0;
        !          1990:        regs.c = carry!=0;
        !          1991:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          1992: }}}}}}
        !          1993: void op_e480(UWORD opcode)
        !          1994: {
        !          1995:        ULONG srcreg = 2;
        !          1996:        ULONG dstreg = (opcode & 7) >> 0;
        !          1997: {{     ULONG cnt = srcreg;
        !          1998: {      LONG data = regs.d[dstreg];
        !          1999: {      ULONG val = data;
        !          2000:        cnt &= 63;
        !          2001:        regs.v = 0;
        !          2002: {      ULONG cmask = 0x80000000;
        !          2003:        ULONG sign = cmask & val;
        !          2004:        for(;cnt;--cnt){
        !          2005:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          2006:        }
        !          2007:        regs.n = sign != 0;
        !          2008:        regs.z = val == 0;
        !          2009:        regs.d[dstreg] = (val);
        !          2010: }}}}}}
        !          2011: void op_e488(UWORD opcode)
        !          2012: {
        !          2013:        ULONG srcreg = 2;
        !          2014:        ULONG dstreg = (opcode & 7) >> 0;
        !          2015: {{     ULONG cnt = srcreg;
        !          2016: {      LONG data = regs.d[dstreg];
        !          2017: {      ULONG val = data;
        !          2018:        cnt &= 63;
        !          2019: {      int carry = 0;
        !          2020:        for(;cnt;--cnt){
        !          2021:        carry=val&1; val >>= 1;
        !          2022:        }
        !          2023:        regs.v = regs.c = 0;
        !          2024:        regs.z = ((LONG)(val)) == 0;
        !          2025:        regs.n = ((LONG)(val)) < 0;
        !          2026: regs.c = regs.x = carry!=0;
        !          2027:        regs.d[dstreg] = (val);
        !          2028: }}}}}}
        !          2029: void op_e490(UWORD opcode)
        !          2030: {
        !          2031:        ULONG srcreg = 2;
        !          2032:        ULONG dstreg = (opcode & 7) >> 0;
        !          2033: {{     ULONG cnt = srcreg;
        !          2034: {      LONG data = regs.d[dstreg];
        !          2035: {      ULONG val = data;
        !          2036:        cnt &= 63;
        !          2037: {      int carry = 0;
        !          2038:        ULONG cmask = 0x80000000;
        !          2039:        for(;cnt;--cnt){
        !          2040:        carry=val&1; val >>= 1;
        !          2041:        if(regs.x) val |= cmask;
        !          2042:        regs.x = carry != 0;
        !          2043:        }
        !          2044:        regs.v = regs.c = 0;
        !          2045:        regs.z = ((LONG)(val)) == 0;
        !          2046:        regs.n = ((LONG)(val)) < 0;
        !          2047:        regs.x = regs.c = carry!=0;
        !          2048:        regs.d[dstreg] = (val);
        !          2049: }}}}}}
        !          2050: void op_e498(UWORD opcode)
        !          2051: {
        !          2052:        ULONG srcreg = 2;
        !          2053:        ULONG dstreg = (opcode & 7) >> 0;
        !          2054: {{     ULONG cnt = srcreg;
        !          2055: {      LONG data = regs.d[dstreg];
        !          2056: {      ULONG val = data;
        !          2057:        cnt &= 63;
        !          2058: {      int carry = 0;
        !          2059:        ULONG cmask = 0x80000000;
        !          2060:        for(;cnt;--cnt){
        !          2061:        carry=val&1; val = (ULONG)val >> 1;
        !          2062:        if(carry) val |= cmask;
        !          2063:        }
        !          2064:        regs.v = regs.c = 0;
        !          2065:        regs.z = ((LONG)(val)) == 0;
        !          2066:        regs.n = ((LONG)(val)) < 0;
        !          2067:        regs.c = carry!=0;
        !          2068:        regs.d[dstreg] = (val);
        !          2069: }}}}}}
        !          2070: void op_e4d0(UWORD opcode)
        !          2071: {
        !          2072:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2073: {{     CPTR dataa = regs.a[srcreg];
        !          2074:        WORD data = get_word(dataa);
        !          2075: {      UWORD val = data;
        !          2076:        int carry = val&1;
        !          2077:        ULONG cmask = 0x8000;
        !          2078:        val >>= 1;
        !          2079:        if(regs.x) val |= cmask;
        !          2080:        regs.x = carry != 0;
        !          2081:        regs.v = regs.c = 0;
        !          2082:        regs.z = ((WORD)(val)) == 0;
        !          2083:        regs.n = ((WORD)(val)) < 0;
        !          2084: regs.x = regs.c = carry!=0;
        !          2085:        put_word(dataa,val);
        !          2086: }}}}
        !          2087: void op_e4d8(UWORD opcode)
        !          2088: {
        !          2089:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2090: {{     CPTR dataa = regs.a[srcreg];
        !          2091:        WORD data = get_word(dataa);
        !          2092: {      regs.a[srcreg] += 2;
        !          2093: {      UWORD val = data;
        !          2094:        int carry = val&1;
        !          2095:        ULONG cmask = 0x8000;
        !          2096:        val >>= 1;
        !          2097:        if(regs.x) val |= cmask;
        !          2098:        regs.x = carry != 0;
        !          2099:        regs.v = regs.c = 0;
        !          2100:        regs.z = ((WORD)(val)) == 0;
        !          2101:        regs.n = ((WORD)(val)) < 0;
        !          2102: regs.x = regs.c = carry!=0;
        !          2103:        put_word(dataa,val);
        !          2104: }}}}}
        !          2105: void op_e4e0(UWORD opcode)
        !          2106: {
        !          2107:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2108: {{     regs.a[srcreg] -= 2;
        !          2109: {      CPTR dataa = regs.a[srcreg];
        !          2110:        WORD data = get_word(dataa);
        !          2111: {      UWORD val = data;
        !          2112:        int carry = val&1;
        !          2113:        ULONG cmask = 0x8000;
        !          2114:        val >>= 1;
        !          2115:        if(regs.x) val |= cmask;
        !          2116:        regs.x = carry != 0;
        !          2117:        regs.v = regs.c = 0;
        !          2118:        regs.z = ((WORD)(val)) == 0;
        !          2119:        regs.n = ((WORD)(val)) < 0;
        !          2120: regs.x = regs.c = carry!=0;
        !          2121:        put_word(dataa,val);
        !          2122: }}}}}
        !          2123: void op_e4e8(UWORD opcode)
        !          2124: {
        !          2125:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2126: {{     CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          2127:        WORD data = get_word(dataa);
        !          2128: {      UWORD val = data;
        !          2129:        int carry = val&1;
        !          2130:        ULONG cmask = 0x8000;
        !          2131:        val >>= 1;
        !          2132:        if(regs.x) val |= cmask;
        !          2133:        regs.x = carry != 0;
        !          2134:        regs.v = regs.c = 0;
        !          2135:        regs.z = ((WORD)(val)) == 0;
        !          2136:        regs.n = ((WORD)(val)) < 0;
        !          2137: regs.x = regs.c = carry!=0;
        !          2138:        put_word(dataa,val);
        !          2139: }}}}
        !          2140: void op_e4f0(UWORD opcode)
        !          2141: {
        !          2142:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2143: {{     CPTR dataa = regs.a[srcreg];
        !          2144:        UWORD datadp = nextiword();
        !          2145:        dataa += (LONG)(BYTE)(datadp & 0xFF);
        !          2146: {      ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
        !          2147:        if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
        !          2148:        dataa += datadpr;
        !          2149: {      WORD data = get_word(dataa);
        !          2150: {      UWORD val = data;
        !          2151:        int carry = val&1;
        !          2152:        ULONG cmask = 0x8000;
        !          2153:        val >>= 1;
        !          2154:        if(regs.x) val |= cmask;
        !          2155:        regs.x = carry != 0;
        !          2156:        regs.v = regs.c = 0;
        !          2157:        regs.z = ((WORD)(val)) == 0;
        !          2158:        regs.n = ((WORD)(val)) < 0;
        !          2159: regs.x = regs.c = carry!=0;
        !          2160:        put_word(dataa,val);
        !          2161: }}}}}}
        !          2162: void op_e4f8(UWORD opcode)
        !          2163: {
        !          2164: {{     CPTR dataa = (LONG)(WORD)nextiword();
        !          2165:        WORD data = get_word(dataa);
        !          2166: {      UWORD val = data;
        !          2167:        int carry = val&1;
        !          2168:        ULONG cmask = 0x8000;
        !          2169:        val >>= 1;
        !          2170:        if(regs.x) val |= cmask;
        !          2171:        regs.x = carry != 0;
        !          2172:        regs.v = regs.c = 0;
        !          2173:        regs.z = ((WORD)(val)) == 0;
        !          2174:        regs.n = ((WORD)(val)) < 0;
        !          2175: regs.x = regs.c = carry!=0;
        !          2176:        put_word(dataa,val);
        !          2177: }}}}
        !          2178: void op_e4f9(UWORD opcode)
        !          2179: {
        !          2180: {{     CPTR dataa = nextilong();
        !          2181:        WORD data = get_word(dataa);
        !          2182: {      UWORD val = data;
        !          2183:        int carry = val&1;
        !          2184:        ULONG cmask = 0x8000;
        !          2185:        val >>= 1;
        !          2186:        if(regs.x) val |= cmask;
        !          2187:        regs.x = carry != 0;
        !          2188:        regs.v = regs.c = 0;
        !          2189:        regs.z = ((WORD)(val)) == 0;
        !          2190:        regs.n = ((WORD)(val)) < 0;
        !          2191: regs.x = regs.c = carry!=0;
        !          2192:        put_word(dataa,val);
        !          2193: }}}}
        !          2194: void op_e500(UWORD opcode)
        !          2195: {
        !          2196:        ULONG srcreg = 2;
        !          2197:        ULONG dstreg = (opcode & 7) >> 0;
        !          2198: {{     ULONG cnt = srcreg;
        !          2199: {      BYTE data = regs.d[dstreg];
        !          2200: {      UBYTE val = data;
        !          2201:        cnt &= 63;
        !          2202:        regs.v = 0;
        !          2203: {      ULONG cmask = 0x80;
        !          2204:        ULONG sign = cmask & val;
        !          2205:        for(;cnt;--cnt){
        !          2206:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          2207:        if ((val&cmask)!=sign)regs.v=1;
        !          2208:        }
        !          2209:        regs.n = (val&cmask) != 0;
        !          2210:        regs.z = val == 0;
        !          2211:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          2212: }}}}}}
        !          2213: void op_e508(UWORD opcode)
        !          2214: {
        !          2215:        ULONG srcreg = 2;
        !          2216:        ULONG dstreg = (opcode & 7) >> 0;
        !          2217: {{     ULONG cnt = srcreg;
        !          2218: {      BYTE data = regs.d[dstreg];
        !          2219: {      UBYTE val = data;
        !          2220:        cnt &= 63;
        !          2221: {      int carry = 0;
        !          2222:        ULONG cmask = 0x80;
        !          2223:        for(;cnt;--cnt){
        !          2224:        carry=val&cmask; val <<= 1;
        !          2225:        }
        !          2226:        regs.v = regs.c = 0;
        !          2227:        regs.z = ((BYTE)(val)) == 0;
        !          2228:        regs.n = ((BYTE)(val)) < 0;
        !          2229: regs.c = regs.x = carry!=0;
        !          2230:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          2231: }}}}}}
        !          2232: void op_e510(UWORD opcode)
        !          2233: {
        !          2234:        ULONG srcreg = 2;
        !          2235:        ULONG dstreg = (opcode & 7) >> 0;
        !          2236: {{     ULONG cnt = srcreg;
        !          2237: {      BYTE data = regs.d[dstreg];
        !          2238: {      UBYTE val = data;
        !          2239:        cnt &= 63;
        !          2240: {      int carry = 0;
        !          2241:        ULONG cmask = 0x80;
        !          2242:        for(;cnt;--cnt){
        !          2243:        carry=val&cmask; val <<= 1;
        !          2244:        if(regs.x) val |= 1;
        !          2245:        regs.x = carry != 0;
        !          2246:        }
        !          2247:        regs.v = regs.c = 0;
        !          2248:        regs.z = ((BYTE)(val)) == 0;
        !          2249:        regs.n = ((BYTE)(val)) < 0;
        !          2250:        regs.x = regs.c = carry!=0;
        !          2251:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          2252: }}}}}}
        !          2253: void op_e518(UWORD opcode)
        !          2254: {
        !          2255:        ULONG srcreg = 2;
        !          2256:        ULONG dstreg = (opcode & 7) >> 0;
        !          2257: {{     ULONG cnt = srcreg;
        !          2258: {      BYTE data = regs.d[dstreg];
        !          2259: {      UBYTE val = data;
        !          2260:        cnt &= 63;
        !          2261: {      int carry = 0;
        !          2262:        ULONG cmask = 0x80;
        !          2263:        for(;cnt;--cnt){
        !          2264:        carry=val&cmask; val <<= 1;
        !          2265:        if(carry)  val |= 1;
        !          2266:        }
        !          2267:        regs.v = regs.c = 0;
        !          2268:        regs.z = ((BYTE)(val)) == 0;
        !          2269:        regs.n = ((BYTE)(val)) < 0;
        !          2270: regs.c = carry!=0;
        !          2271:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          2272: }}}}}}
        !          2273: void op_e540(UWORD opcode)
        !          2274: {
        !          2275:        ULONG srcreg = 2;
        !          2276:        ULONG dstreg = (opcode & 7) >> 0;
        !          2277: {{     ULONG cnt = srcreg;
        !          2278: {      WORD data = regs.d[dstreg];
        !          2279: {      UWORD val = data;
        !          2280:        cnt &= 63;
        !          2281:        regs.v = 0;
        !          2282: {      ULONG cmask = 0x8000;
        !          2283:        ULONG sign = cmask & val;
        !          2284:        for(;cnt;--cnt){
        !          2285:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          2286:        if ((val&cmask)!=sign)regs.v=1;
        !          2287:        }
        !          2288:        regs.n = (val&cmask) != 0;
        !          2289:        regs.z = val == 0;
        !          2290:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          2291: }}}}}}
        !          2292: void op_e548(UWORD opcode)
        !          2293: {
        !          2294:        ULONG srcreg = 2;
        !          2295:        ULONG dstreg = (opcode & 7) >> 0;
        !          2296: {{     ULONG cnt = srcreg;
        !          2297: {      WORD data = regs.d[dstreg];
        !          2298: {      UWORD val = data;
        !          2299:        cnt &= 63;
        !          2300: {      int carry = 0;
        !          2301:        ULONG cmask = 0x8000;
        !          2302:        for(;cnt;--cnt){
        !          2303:        carry=val&cmask; val <<= 1;
        !          2304:        }
        !          2305:        regs.v = regs.c = 0;
        !          2306:        regs.z = ((WORD)(val)) == 0;
        !          2307:        regs.n = ((WORD)(val)) < 0;
        !          2308: regs.c = regs.x = carry!=0;
        !          2309:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          2310: }}}}}}
        !          2311: void op_e550(UWORD opcode)
        !          2312: {
        !          2313:        ULONG srcreg = 2;
        !          2314:        ULONG dstreg = (opcode & 7) >> 0;
        !          2315: {{     ULONG cnt = srcreg;
        !          2316: {      WORD data = regs.d[dstreg];
        !          2317: {      UWORD val = data;
        !          2318:        cnt &= 63;
        !          2319: {      int carry = 0;
        !          2320:        ULONG cmask = 0x8000;
        !          2321:        for(;cnt;--cnt){
        !          2322:        carry=val&cmask; val <<= 1;
        !          2323:        if(regs.x) val |= 1;
        !          2324:        regs.x = carry != 0;
        !          2325:        }
        !          2326:        regs.v = regs.c = 0;
        !          2327:        regs.z = ((WORD)(val)) == 0;
        !          2328:        regs.n = ((WORD)(val)) < 0;
        !          2329:        regs.x = regs.c = carry!=0;
        !          2330:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          2331: }}}}}}
        !          2332: void op_e558(UWORD opcode)
        !          2333: {
        !          2334:        ULONG srcreg = 2;
        !          2335:        ULONG dstreg = (opcode & 7) >> 0;
        !          2336: {{     ULONG cnt = srcreg;
        !          2337: {      WORD data = regs.d[dstreg];
        !          2338: {      UWORD val = data;
        !          2339:        cnt &= 63;
        !          2340: {      int carry = 0;
        !          2341:        ULONG cmask = 0x8000;
        !          2342:        for(;cnt;--cnt){
        !          2343:        carry=val&cmask; val <<= 1;
        !          2344:        if(carry)  val |= 1;
        !          2345:        }
        !          2346:        regs.v = regs.c = 0;
        !          2347:        regs.z = ((WORD)(val)) == 0;
        !          2348:        regs.n = ((WORD)(val)) < 0;
        !          2349: regs.c = carry!=0;
        !          2350:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          2351: }}}}}}
        !          2352: void op_e580(UWORD opcode)
        !          2353: {
        !          2354:        ULONG srcreg = 2;
        !          2355:        ULONG dstreg = (opcode & 7) >> 0;
        !          2356: {{     ULONG cnt = srcreg;
        !          2357: {      LONG data = regs.d[dstreg];
        !          2358: {      ULONG val = data;
        !          2359:        cnt &= 63;
        !          2360:        regs.v = 0;
        !          2361: {      ULONG cmask = 0x80000000;
        !          2362:        ULONG sign = cmask & val;
        !          2363:        for(;cnt;--cnt){
        !          2364:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          2365:        if ((val&cmask)!=sign)regs.v=1;
        !          2366:        }
        !          2367:        regs.n = (val&cmask) != 0;
        !          2368:        regs.z = val == 0;
        !          2369:        regs.d[dstreg] = (val);
        !          2370: }}}}}}
        !          2371: void op_e588(UWORD opcode)
        !          2372: {
        !          2373:        ULONG srcreg = 2;
        !          2374:        ULONG dstreg = (opcode & 7) >> 0;
        !          2375: {{     ULONG cnt = srcreg;
        !          2376: {      LONG data = regs.d[dstreg];
        !          2377: {      ULONG val = data;
        !          2378:        cnt &= 63;
        !          2379: {      int carry = 0;
        !          2380:        ULONG cmask = 0x80000000;
        !          2381:        for(;cnt;--cnt){
        !          2382:        carry=val&cmask; val <<= 1;
        !          2383:        }
        !          2384:        regs.v = regs.c = 0;
        !          2385:        regs.z = ((LONG)(val)) == 0;
        !          2386:        regs.n = ((LONG)(val)) < 0;
        !          2387: regs.c = regs.x = carry!=0;
        !          2388:        regs.d[dstreg] = (val);
        !          2389: }}}}}}
        !          2390: void op_e590(UWORD opcode)
        !          2391: {
        !          2392:        ULONG srcreg = 2;
        !          2393:        ULONG dstreg = (opcode & 7) >> 0;
        !          2394: {{     ULONG cnt = srcreg;
        !          2395: {      LONG data = regs.d[dstreg];
        !          2396: {      ULONG val = data;
        !          2397:        cnt &= 63;
        !          2398: {      int carry = 0;
        !          2399:        ULONG cmask = 0x80000000;
        !          2400:        for(;cnt;--cnt){
        !          2401:        carry=val&cmask; val <<= 1;
        !          2402:        if(regs.x) val |= 1;
        !          2403:        regs.x = carry != 0;
        !          2404:        }
        !          2405:        regs.v = regs.c = 0;
        !          2406:        regs.z = ((LONG)(val)) == 0;
        !          2407:        regs.n = ((LONG)(val)) < 0;
        !          2408:        regs.x = regs.c = carry!=0;
        !          2409:        regs.d[dstreg] = (val);
        !          2410: }}}}}}
        !          2411: void op_e598(UWORD opcode)
        !          2412: {
        !          2413:        ULONG srcreg = 2;
        !          2414:        ULONG dstreg = (opcode & 7) >> 0;
        !          2415: {{     ULONG cnt = srcreg;
        !          2416: {      LONG data = regs.d[dstreg];
        !          2417: {      ULONG val = data;
        !          2418:        cnt &= 63;
        !          2419: {      int carry = 0;
        !          2420:        ULONG cmask = 0x80000000;
        !          2421:        for(;cnt;--cnt){
        !          2422:        carry=val&cmask; val <<= 1;
        !          2423:        if(carry)  val |= 1;
        !          2424:        }
        !          2425:        regs.v = regs.c = 0;
        !          2426:        regs.z = ((LONG)(val)) == 0;
        !          2427:        regs.n = ((LONG)(val)) < 0;
        !          2428: regs.c = carry!=0;
        !          2429:        regs.d[dstreg] = (val);
        !          2430: }}}}}}
        !          2431: void op_e5d0(UWORD opcode)
        !          2432: {
        !          2433:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2434: {{     CPTR dataa = regs.a[srcreg];
        !          2435:        WORD data = get_word(dataa);
        !          2436: {      UWORD val = data;
        !          2437:        ULONG cmask = 0x8000;
        !          2438:        int carry = val&cmask;
        !          2439:        val <<= 1;
        !          2440:        if(regs.x) val |= 1;
        !          2441:        regs.x = carry != 0;
        !          2442:        regs.v = regs.c = 0;
        !          2443:        regs.z = ((WORD)(val)) == 0;
        !          2444:        regs.n = ((WORD)(val)) < 0;
        !          2445: regs.x = regs.c = carry!=0;
        !          2446:        put_word(dataa,val);
        !          2447: }}}}
        !          2448: void op_e5d8(UWORD opcode)
        !          2449: {
        !          2450:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2451: {{     CPTR dataa = regs.a[srcreg];
        !          2452:        WORD data = get_word(dataa);
        !          2453: {      regs.a[srcreg] += 2;
        !          2454: {      UWORD val = data;
        !          2455:        ULONG cmask = 0x8000;
        !          2456:        int carry = val&cmask;
        !          2457:        val <<= 1;
        !          2458:        if(regs.x) val |= 1;
        !          2459:        regs.x = carry != 0;
        !          2460:        regs.v = regs.c = 0;
        !          2461:        regs.z = ((WORD)(val)) == 0;
        !          2462:        regs.n = ((WORD)(val)) < 0;
        !          2463: regs.x = regs.c = carry!=0;
        !          2464:        put_word(dataa,val);
        !          2465: }}}}}
        !          2466: void op_e5e0(UWORD opcode)
        !          2467: {
        !          2468:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2469: {{     regs.a[srcreg] -= 2;
        !          2470: {      CPTR dataa = regs.a[srcreg];
        !          2471:        WORD data = get_word(dataa);
        !          2472: {      UWORD val = data;
        !          2473:        ULONG cmask = 0x8000;
        !          2474:        int carry = val&cmask;
        !          2475:        val <<= 1;
        !          2476:        if(regs.x) val |= 1;
        !          2477:        regs.x = carry != 0;
        !          2478:        regs.v = regs.c = 0;
        !          2479:        regs.z = ((WORD)(val)) == 0;
        !          2480:        regs.n = ((WORD)(val)) < 0;
        !          2481: regs.x = regs.c = carry!=0;
        !          2482:        put_word(dataa,val);
        !          2483: }}}}}
        !          2484: void op_e5e8(UWORD opcode)
        !          2485: {
        !          2486:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2487: {{     CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          2488:        WORD data = get_word(dataa);
        !          2489: {      UWORD val = data;
        !          2490:        ULONG cmask = 0x8000;
        !          2491:        int carry = val&cmask;
        !          2492:        val <<= 1;
        !          2493:        if(regs.x) val |= 1;
        !          2494:        regs.x = carry != 0;
        !          2495:        regs.v = regs.c = 0;
        !          2496:        regs.z = ((WORD)(val)) == 0;
        !          2497:        regs.n = ((WORD)(val)) < 0;
        !          2498: regs.x = regs.c = carry!=0;
        !          2499:        put_word(dataa,val);
        !          2500: }}}}
        !          2501: void op_e5f0(UWORD opcode)
        !          2502: {
        !          2503:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2504: {{     CPTR dataa = regs.a[srcreg];
        !          2505:        UWORD datadp = nextiword();
        !          2506:        dataa += (LONG)(BYTE)(datadp & 0xFF);
        !          2507: {      ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
        !          2508:        if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
        !          2509:        dataa += datadpr;
        !          2510: {      WORD data = get_word(dataa);
        !          2511: {      UWORD val = data;
        !          2512:        ULONG cmask = 0x8000;
        !          2513:        int carry = val&cmask;
        !          2514:        val <<= 1;
        !          2515:        if(regs.x) val |= 1;
        !          2516:        regs.x = carry != 0;
        !          2517:        regs.v = regs.c = 0;
        !          2518:        regs.z = ((WORD)(val)) == 0;
        !          2519:        regs.n = ((WORD)(val)) < 0;
        !          2520: regs.x = regs.c = carry!=0;
        !          2521:        put_word(dataa,val);
        !          2522: }}}}}}
        !          2523: void op_e5f8(UWORD opcode)
        !          2524: {
        !          2525: {{     CPTR dataa = (LONG)(WORD)nextiword();
        !          2526:        WORD data = get_word(dataa);
        !          2527: {      UWORD val = data;
        !          2528:        ULONG cmask = 0x8000;
        !          2529:        int carry = val&cmask;
        !          2530:        val <<= 1;
        !          2531:        if(regs.x) val |= 1;
        !          2532:        regs.x = carry != 0;
        !          2533:        regs.v = regs.c = 0;
        !          2534:        regs.z = ((WORD)(val)) == 0;
        !          2535:        regs.n = ((WORD)(val)) < 0;
        !          2536: regs.x = regs.c = carry!=0;
        !          2537:        put_word(dataa,val);
        !          2538: }}}}
        !          2539: void op_e5f9(UWORD opcode)
        !          2540: {
        !          2541: {{     CPTR dataa = nextilong();
        !          2542:        WORD data = get_word(dataa);
        !          2543: {      UWORD val = data;
        !          2544:        ULONG cmask = 0x8000;
        !          2545:        int carry = val&cmask;
        !          2546:        val <<= 1;
        !          2547:        if(regs.x) val |= 1;
        !          2548:        regs.x = carry != 0;
        !          2549:        regs.v = regs.c = 0;
        !          2550:        regs.z = ((WORD)(val)) == 0;
        !          2551:        regs.n = ((WORD)(val)) < 0;
        !          2552: regs.x = regs.c = carry!=0;
        !          2553:        put_word(dataa,val);
        !          2554: }}}}
        !          2555: void op_e600(UWORD opcode)
        !          2556: {
        !          2557:        ULONG srcreg = 3;
        !          2558:        ULONG dstreg = (opcode & 7) >> 0;
        !          2559: {{     ULONG cnt = srcreg;
        !          2560: {      BYTE data = regs.d[dstreg];
        !          2561: {      UBYTE val = data;
        !          2562:        cnt &= 63;
        !          2563:        regs.v = 0;
        !          2564: {      ULONG cmask = 0x80;
        !          2565:        ULONG sign = cmask & val;
        !          2566:        for(;cnt;--cnt){
        !          2567:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          2568:        }
        !          2569:        regs.n = sign != 0;
        !          2570:        regs.z = val == 0;
        !          2571:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          2572: }}}}}}
        !          2573: void op_e608(UWORD opcode)
        !          2574: {
        !          2575:        ULONG srcreg = 3;
        !          2576:        ULONG dstreg = (opcode & 7) >> 0;
        !          2577: {{     ULONG cnt = srcreg;
        !          2578: {      BYTE data = regs.d[dstreg];
        !          2579: {      UBYTE val = data;
        !          2580:        cnt &= 63;
        !          2581: {      int carry = 0;
        !          2582:        for(;cnt;--cnt){
        !          2583:        carry=val&1; val >>= 1;
        !          2584:        }
        !          2585:        regs.v = regs.c = 0;
        !          2586:        regs.z = ((BYTE)(val)) == 0;
        !          2587:        regs.n = ((BYTE)(val)) < 0;
        !          2588: regs.c = regs.x = carry!=0;
        !          2589:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          2590: }}}}}}
        !          2591: void op_e610(UWORD opcode)
        !          2592: {
        !          2593:        ULONG srcreg = 3;
        !          2594:        ULONG dstreg = (opcode & 7) >> 0;
        !          2595: {{     ULONG cnt = srcreg;
        !          2596: {      BYTE data = regs.d[dstreg];
        !          2597: {      UBYTE val = data;
        !          2598:        cnt &= 63;
        !          2599: {      int carry = 0;
        !          2600:        ULONG cmask = 0x80;
        !          2601:        for(;cnt;--cnt){
        !          2602:        carry=val&1; val >>= 1;
        !          2603:        if(regs.x) val |= cmask;
        !          2604:        regs.x = carry != 0;
        !          2605:        }
        !          2606:        regs.v = regs.c = 0;
        !          2607:        regs.z = ((BYTE)(val)) == 0;
        !          2608:        regs.n = ((BYTE)(val)) < 0;
        !          2609:        regs.x = regs.c = carry!=0;
        !          2610:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          2611: }}}}}}
        !          2612: void op_e618(UWORD opcode)
        !          2613: {
        !          2614:        ULONG srcreg = 3;
        !          2615:        ULONG dstreg = (opcode & 7) >> 0;
        !          2616: {{     ULONG cnt = srcreg;
        !          2617: {      BYTE data = regs.d[dstreg];
        !          2618: {      UBYTE val = data;
        !          2619:        cnt &= 63;
        !          2620: {      int carry = 0;
        !          2621:        ULONG cmask = 0x80;
        !          2622:        for(;cnt;--cnt){
        !          2623:        carry=val&1; val = (ULONG)val >> 1;
        !          2624:        if(carry) val |= cmask;
        !          2625:        }
        !          2626:        regs.v = regs.c = 0;
        !          2627:        regs.z = ((BYTE)(val)) == 0;
        !          2628:        regs.n = ((BYTE)(val)) < 0;
        !          2629:        regs.c = carry!=0;
        !          2630:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          2631: }}}}}}
        !          2632: void op_e640(UWORD opcode)
        !          2633: {
        !          2634:        ULONG srcreg = 3;
        !          2635:        ULONG dstreg = (opcode & 7) >> 0;
        !          2636: {{     ULONG cnt = srcreg;
        !          2637: {      WORD data = regs.d[dstreg];
        !          2638: {      UWORD val = data;
        !          2639:        cnt &= 63;
        !          2640:        regs.v = 0;
        !          2641: {      ULONG cmask = 0x8000;
        !          2642:        ULONG sign = cmask & val;
        !          2643:        for(;cnt;--cnt){
        !          2644:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          2645:        }
        !          2646:        regs.n = sign != 0;
        !          2647:        regs.z = val == 0;
        !          2648:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          2649: }}}}}}
        !          2650: void op_e648(UWORD opcode)
        !          2651: {
        !          2652:        ULONG srcreg = 3;
        !          2653:        ULONG dstreg = (opcode & 7) >> 0;
        !          2654: {{     ULONG cnt = srcreg;
        !          2655: {      WORD data = regs.d[dstreg];
        !          2656: {      UWORD val = data;
        !          2657:        cnt &= 63;
        !          2658: {      int carry = 0;
        !          2659:        for(;cnt;--cnt){
        !          2660:        carry=val&1; val >>= 1;
        !          2661:        }
        !          2662:        regs.v = regs.c = 0;
        !          2663:        regs.z = ((WORD)(val)) == 0;
        !          2664:        regs.n = ((WORD)(val)) < 0;
        !          2665: regs.c = regs.x = carry!=0;
        !          2666:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          2667: }}}}}}
        !          2668: void op_e650(UWORD opcode)
        !          2669: {
        !          2670:        ULONG srcreg = 3;
        !          2671:        ULONG dstreg = (opcode & 7) >> 0;
        !          2672: {{     ULONG cnt = srcreg;
        !          2673: {      WORD data = regs.d[dstreg];
        !          2674: {      UWORD val = data;
        !          2675:        cnt &= 63;
        !          2676: {      int carry = 0;
        !          2677:        ULONG cmask = 0x8000;
        !          2678:        for(;cnt;--cnt){
        !          2679:        carry=val&1; val >>= 1;
        !          2680:        if(regs.x) val |= cmask;
        !          2681:        regs.x = carry != 0;
        !          2682:        }
        !          2683:        regs.v = regs.c = 0;
        !          2684:        regs.z = ((WORD)(val)) == 0;
        !          2685:        regs.n = ((WORD)(val)) < 0;
        !          2686:        regs.x = regs.c = carry!=0;
        !          2687:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          2688: }}}}}}
        !          2689: void op_e658(UWORD opcode)
        !          2690: {
        !          2691:        ULONG srcreg = 3;
        !          2692:        ULONG dstreg = (opcode & 7) >> 0;
        !          2693: {{     ULONG cnt = srcreg;
        !          2694: {      WORD data = regs.d[dstreg];
        !          2695: {      UWORD val = data;
        !          2696:        cnt &= 63;
        !          2697: {      int carry = 0;
        !          2698:        ULONG cmask = 0x8000;
        !          2699:        for(;cnt;--cnt){
        !          2700:        carry=val&1; val = (ULONG)val >> 1;
        !          2701:        if(carry) val |= cmask;
        !          2702:        }
        !          2703:        regs.v = regs.c = 0;
        !          2704:        regs.z = ((WORD)(val)) == 0;
        !          2705:        regs.n = ((WORD)(val)) < 0;
        !          2706:        regs.c = carry!=0;
        !          2707:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          2708: }}}}}}
        !          2709: void op_e680(UWORD opcode)
        !          2710: {
        !          2711:        ULONG srcreg = 3;
        !          2712:        ULONG dstreg = (opcode & 7) >> 0;
        !          2713: {{     ULONG cnt = srcreg;
        !          2714: {      LONG data = regs.d[dstreg];
        !          2715: {      ULONG val = data;
        !          2716:        cnt &= 63;
        !          2717:        regs.v = 0;
        !          2718: {      ULONG cmask = 0x80000000;
        !          2719:        ULONG sign = cmask & val;
        !          2720:        for(;cnt;--cnt){
        !          2721:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          2722:        }
        !          2723:        regs.n = sign != 0;
        !          2724:        regs.z = val == 0;
        !          2725:        regs.d[dstreg] = (val);
        !          2726: }}}}}}
        !          2727: void op_e688(UWORD opcode)
        !          2728: {
        !          2729:        ULONG srcreg = 3;
        !          2730:        ULONG dstreg = (opcode & 7) >> 0;
        !          2731: {{     ULONG cnt = srcreg;
        !          2732: {      LONG data = regs.d[dstreg];
        !          2733: {      ULONG val = data;
        !          2734:        cnt &= 63;
        !          2735: {      int carry = 0;
        !          2736:        for(;cnt;--cnt){
        !          2737:        carry=val&1; val >>= 1;
        !          2738:        }
        !          2739:        regs.v = regs.c = 0;
        !          2740:        regs.z = ((LONG)(val)) == 0;
        !          2741:        regs.n = ((LONG)(val)) < 0;
        !          2742: regs.c = regs.x = carry!=0;
        !          2743:        regs.d[dstreg] = (val);
        !          2744: }}}}}}
        !          2745: void op_e690(UWORD opcode)
        !          2746: {
        !          2747:        ULONG srcreg = 3;
        !          2748:        ULONG dstreg = (opcode & 7) >> 0;
        !          2749: {{     ULONG cnt = srcreg;
        !          2750: {      LONG data = regs.d[dstreg];
        !          2751: {      ULONG val = data;
        !          2752:        cnt &= 63;
        !          2753: {      int carry = 0;
        !          2754:        ULONG cmask = 0x80000000;
        !          2755:        for(;cnt;--cnt){
        !          2756:        carry=val&1; val >>= 1;
        !          2757:        if(regs.x) val |= cmask;
        !          2758:        regs.x = carry != 0;
        !          2759:        }
        !          2760:        regs.v = regs.c = 0;
        !          2761:        regs.z = ((LONG)(val)) == 0;
        !          2762:        regs.n = ((LONG)(val)) < 0;
        !          2763:        regs.x = regs.c = carry!=0;
        !          2764:        regs.d[dstreg] = (val);
        !          2765: }}}}}}
        !          2766: void op_e698(UWORD opcode)
        !          2767: {
        !          2768:        ULONG srcreg = 3;
        !          2769:        ULONG dstreg = (opcode & 7) >> 0;
        !          2770: {{     ULONG cnt = srcreg;
        !          2771: {      LONG data = regs.d[dstreg];
        !          2772: {      ULONG val = data;
        !          2773:        cnt &= 63;
        !          2774: {      int carry = 0;
        !          2775:        ULONG cmask = 0x80000000;
        !          2776:        for(;cnt;--cnt){
        !          2777:        carry=val&1; val = (ULONG)val >> 1;
        !          2778:        if(carry) val |= cmask;
        !          2779:        }
        !          2780:        regs.v = regs.c = 0;
        !          2781:        regs.z = ((LONG)(val)) == 0;
        !          2782:        regs.n = ((LONG)(val)) < 0;
        !          2783:        regs.c = carry!=0;
        !          2784:        regs.d[dstreg] = (val);
        !          2785: }}}}}}
        !          2786: void op_e6d0(UWORD opcode)
        !          2787: {
        !          2788:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2789: {{     CPTR dataa = regs.a[srcreg];
        !          2790:        WORD data = get_word(dataa);
        !          2791: {      UWORD val = data;
        !          2792:        int carry = val&1;
        !          2793:        ULONG cmask = 0x8000;
        !          2794:        val >>= 1;
        !          2795:        if(carry) val |= cmask;
        !          2796:        regs.v = regs.c = 0;
        !          2797:        regs.z = ((WORD)(val)) == 0;
        !          2798:        regs.n = ((WORD)(val)) < 0;
        !          2799: regs.c = carry!=0;
        !          2800:        put_word(dataa,val);
        !          2801: }}}}
        !          2802: void op_e6d8(UWORD opcode)
        !          2803: {
        !          2804:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2805: {{     CPTR dataa = regs.a[srcreg];
        !          2806:        WORD data = get_word(dataa);
        !          2807: {      regs.a[srcreg] += 2;
        !          2808: {      UWORD val = data;
        !          2809:        int carry = val&1;
        !          2810:        ULONG cmask = 0x8000;
        !          2811:        val >>= 1;
        !          2812:        if(carry) val |= cmask;
        !          2813:        regs.v = regs.c = 0;
        !          2814:        regs.z = ((WORD)(val)) == 0;
        !          2815:        regs.n = ((WORD)(val)) < 0;
        !          2816: regs.c = carry!=0;
        !          2817:        put_word(dataa,val);
        !          2818: }}}}}
        !          2819: void op_e6e0(UWORD opcode)
        !          2820: {
        !          2821:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2822: {{     regs.a[srcreg] -= 2;
        !          2823: {      CPTR dataa = regs.a[srcreg];
        !          2824:        WORD data = get_word(dataa);
        !          2825: {      UWORD val = data;
        !          2826:        int carry = val&1;
        !          2827:        ULONG cmask = 0x8000;
        !          2828:        val >>= 1;
        !          2829:        if(carry) val |= cmask;
        !          2830:        regs.v = regs.c = 0;
        !          2831:        regs.z = ((WORD)(val)) == 0;
        !          2832:        regs.n = ((WORD)(val)) < 0;
        !          2833: regs.c = carry!=0;
        !          2834:        put_word(dataa,val);
        !          2835: }}}}}
        !          2836: void op_e6e8(UWORD opcode)
        !          2837: {
        !          2838:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2839: {{     CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          2840:        WORD data = get_word(dataa);
        !          2841: {      UWORD val = data;
        !          2842:        int carry = val&1;
        !          2843:        ULONG cmask = 0x8000;
        !          2844:        val >>= 1;
        !          2845:        if(carry) val |= cmask;
        !          2846:        regs.v = regs.c = 0;
        !          2847:        regs.z = ((WORD)(val)) == 0;
        !          2848:        regs.n = ((WORD)(val)) < 0;
        !          2849: regs.c = carry!=0;
        !          2850:        put_word(dataa,val);
        !          2851: }}}}
        !          2852: void op_e6f0(UWORD opcode)
        !          2853: {
        !          2854:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          2855: {{     CPTR dataa = regs.a[srcreg];
        !          2856:        UWORD datadp = nextiword();
        !          2857:        dataa += (LONG)(BYTE)(datadp & 0xFF);
        !          2858: {      ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
        !          2859:        if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
        !          2860:        dataa += datadpr;
        !          2861: {      WORD data = get_word(dataa);
        !          2862: {      UWORD val = data;
        !          2863:        int carry = val&1;
        !          2864:        ULONG cmask = 0x8000;
        !          2865:        val >>= 1;
        !          2866:        if(carry) val |= cmask;
        !          2867:        regs.v = regs.c = 0;
        !          2868:        regs.z = ((WORD)(val)) == 0;
        !          2869:        regs.n = ((WORD)(val)) < 0;
        !          2870: regs.c = carry!=0;
        !          2871:        put_word(dataa,val);
        !          2872: }}}}}}
        !          2873: void op_e6f8(UWORD opcode)
        !          2874: {
        !          2875: {{     CPTR dataa = (LONG)(WORD)nextiword();
        !          2876:        WORD data = get_word(dataa);
        !          2877: {      UWORD val = data;
        !          2878:        int carry = val&1;
        !          2879:        ULONG cmask = 0x8000;
        !          2880:        val >>= 1;
        !          2881:        if(carry) val |= cmask;
        !          2882:        regs.v = regs.c = 0;
        !          2883:        regs.z = ((WORD)(val)) == 0;
        !          2884:        regs.n = ((WORD)(val)) < 0;
        !          2885: regs.c = carry!=0;
        !          2886:        put_word(dataa,val);
        !          2887: }}}}
        !          2888: void op_e6f9(UWORD opcode)
        !          2889: {
        !          2890: {{     CPTR dataa = nextilong();
        !          2891:        WORD data = get_word(dataa);
        !          2892: {      UWORD val = data;
        !          2893:        int carry = val&1;
        !          2894:        ULONG cmask = 0x8000;
        !          2895:        val >>= 1;
        !          2896:        if(carry) val |= cmask;
        !          2897:        regs.v = regs.c = 0;
        !          2898:        regs.z = ((WORD)(val)) == 0;
        !          2899:        regs.n = ((WORD)(val)) < 0;
        !          2900: regs.c = carry!=0;
        !          2901:        put_word(dataa,val);
        !          2902: }}}}
        !          2903: void op_e700(UWORD opcode)
        !          2904: {
        !          2905:        ULONG srcreg = 3;
        !          2906:        ULONG dstreg = (opcode & 7) >> 0;
        !          2907: {{     ULONG cnt = srcreg;
        !          2908: {      BYTE data = regs.d[dstreg];
        !          2909: {      UBYTE val = data;
        !          2910:        cnt &= 63;
        !          2911:        regs.v = 0;
        !          2912: {      ULONG cmask = 0x80;
        !          2913:        ULONG sign = cmask & val;
        !          2914:        for(;cnt;--cnt){
        !          2915:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          2916:        if ((val&cmask)!=sign)regs.v=1;
        !          2917:        }
        !          2918:        regs.n = (val&cmask) != 0;
        !          2919:        regs.z = val == 0;
        !          2920:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          2921: }}}}}}
        !          2922: void op_e708(UWORD opcode)
        !          2923: {
        !          2924:        ULONG srcreg = 3;
        !          2925:        ULONG dstreg = (opcode & 7) >> 0;
        !          2926: {{     ULONG cnt = srcreg;
        !          2927: {      BYTE data = regs.d[dstreg];
        !          2928: {      UBYTE val = data;
        !          2929:        cnt &= 63;
        !          2930: {      int carry = 0;
        !          2931:        ULONG cmask = 0x80;
        !          2932:        for(;cnt;--cnt){
        !          2933:        carry=val&cmask; val <<= 1;
        !          2934:        }
        !          2935:        regs.v = regs.c = 0;
        !          2936:        regs.z = ((BYTE)(val)) == 0;
        !          2937:        regs.n = ((BYTE)(val)) < 0;
        !          2938: regs.c = regs.x = carry!=0;
        !          2939:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          2940: }}}}}}
        !          2941: void op_e710(UWORD opcode)
        !          2942: {
        !          2943:        ULONG srcreg = 3;
        !          2944:        ULONG dstreg = (opcode & 7) >> 0;
        !          2945: {{     ULONG cnt = srcreg;
        !          2946: {      BYTE data = regs.d[dstreg];
        !          2947: {      UBYTE val = data;
        !          2948:        cnt &= 63;
        !          2949: {      int carry = 0;
        !          2950:        ULONG cmask = 0x80;
        !          2951:        for(;cnt;--cnt){
        !          2952:        carry=val&cmask; val <<= 1;
        !          2953:        if(regs.x) val |= 1;
        !          2954:        regs.x = carry != 0;
        !          2955:        }
        !          2956:        regs.v = regs.c = 0;
        !          2957:        regs.z = ((BYTE)(val)) == 0;
        !          2958:        regs.n = ((BYTE)(val)) < 0;
        !          2959:        regs.x = regs.c = carry!=0;
        !          2960:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          2961: }}}}}}
        !          2962: void op_e718(UWORD opcode)
        !          2963: {
        !          2964:        ULONG srcreg = 3;
        !          2965:        ULONG dstreg = (opcode & 7) >> 0;
        !          2966: {{     ULONG cnt = srcreg;
        !          2967: {      BYTE data = regs.d[dstreg];
        !          2968: {      UBYTE val = data;
        !          2969:        cnt &= 63;
        !          2970: {      int carry = 0;
        !          2971:        ULONG cmask = 0x80;
        !          2972:        for(;cnt;--cnt){
        !          2973:        carry=val&cmask; val <<= 1;
        !          2974:        if(carry)  val |= 1;
        !          2975:        }
        !          2976:        regs.v = regs.c = 0;
        !          2977:        regs.z = ((BYTE)(val)) == 0;
        !          2978:        regs.n = ((BYTE)(val)) < 0;
        !          2979: regs.c = carry!=0;
        !          2980:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          2981: }}}}}}
        !          2982: void op_e740(UWORD opcode)
        !          2983: {
        !          2984:        ULONG srcreg = 3;
        !          2985:        ULONG dstreg = (opcode & 7) >> 0;
        !          2986: {{     ULONG cnt = srcreg;
        !          2987: {      WORD data = regs.d[dstreg];
        !          2988: {      UWORD val = data;
        !          2989:        cnt &= 63;
        !          2990:        regs.v = 0;
        !          2991: {      ULONG cmask = 0x8000;
        !          2992:        ULONG sign = cmask & val;
        !          2993:        for(;cnt;--cnt){
        !          2994:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          2995:        if ((val&cmask)!=sign)regs.v=1;
        !          2996:        }
        !          2997:        regs.n = (val&cmask) != 0;
        !          2998:        regs.z = val == 0;
        !          2999:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3000: }}}}}}
        !          3001: void op_e748(UWORD opcode)
        !          3002: {
        !          3003:        ULONG srcreg = 3;
        !          3004:        ULONG dstreg = (opcode & 7) >> 0;
        !          3005: {{     ULONG cnt = srcreg;
        !          3006: {      WORD data = regs.d[dstreg];
        !          3007: {      UWORD val = data;
        !          3008:        cnt &= 63;
        !          3009: {      int carry = 0;
        !          3010:        ULONG cmask = 0x8000;
        !          3011:        for(;cnt;--cnt){
        !          3012:        carry=val&cmask; val <<= 1;
        !          3013:        }
        !          3014:        regs.v = regs.c = 0;
        !          3015:        regs.z = ((WORD)(val)) == 0;
        !          3016:        regs.n = ((WORD)(val)) < 0;
        !          3017: regs.c = regs.x = carry!=0;
        !          3018:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3019: }}}}}}
        !          3020: void op_e750(UWORD opcode)
        !          3021: {
        !          3022:        ULONG srcreg = 3;
        !          3023:        ULONG dstreg = (opcode & 7) >> 0;
        !          3024: {{     ULONG cnt = srcreg;
        !          3025: {      WORD data = regs.d[dstreg];
        !          3026: {      UWORD val = data;
        !          3027:        cnt &= 63;
        !          3028: {      int carry = 0;
        !          3029:        ULONG cmask = 0x8000;
        !          3030:        for(;cnt;--cnt){
        !          3031:        carry=val&cmask; val <<= 1;
        !          3032:        if(regs.x) val |= 1;
        !          3033:        regs.x = carry != 0;
        !          3034:        }
        !          3035:        regs.v = regs.c = 0;
        !          3036:        regs.z = ((WORD)(val)) == 0;
        !          3037:        regs.n = ((WORD)(val)) < 0;
        !          3038:        regs.x = regs.c = carry!=0;
        !          3039:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3040: }}}}}}
        !          3041: void op_e758(UWORD opcode)
        !          3042: {
        !          3043:        ULONG srcreg = 3;
        !          3044:        ULONG dstreg = (opcode & 7) >> 0;
        !          3045: {{     ULONG cnt = srcreg;
        !          3046: {      WORD data = regs.d[dstreg];
        !          3047: {      UWORD val = data;
        !          3048:        cnt &= 63;
        !          3049: {      int carry = 0;
        !          3050:        ULONG cmask = 0x8000;
        !          3051:        for(;cnt;--cnt){
        !          3052:        carry=val&cmask; val <<= 1;
        !          3053:        if(carry)  val |= 1;
        !          3054:        }
        !          3055:        regs.v = regs.c = 0;
        !          3056:        regs.z = ((WORD)(val)) == 0;
        !          3057:        regs.n = ((WORD)(val)) < 0;
        !          3058: regs.c = carry!=0;
        !          3059:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3060: }}}}}}
        !          3061: void op_e780(UWORD opcode)
        !          3062: {
        !          3063:        ULONG srcreg = 3;
        !          3064:        ULONG dstreg = (opcode & 7) >> 0;
        !          3065: {{     ULONG cnt = srcreg;
        !          3066: {      LONG data = regs.d[dstreg];
        !          3067: {      ULONG val = data;
        !          3068:        cnt &= 63;
        !          3069:        regs.v = 0;
        !          3070: {      ULONG cmask = 0x80000000;
        !          3071:        ULONG sign = cmask & val;
        !          3072:        for(;cnt;--cnt){
        !          3073:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          3074:        if ((val&cmask)!=sign)regs.v=1;
        !          3075:        }
        !          3076:        regs.n = (val&cmask) != 0;
        !          3077:        regs.z = val == 0;
        !          3078:        regs.d[dstreg] = (val);
        !          3079: }}}}}}
        !          3080: void op_e788(UWORD opcode)
        !          3081: {
        !          3082:        ULONG srcreg = 3;
        !          3083:        ULONG dstreg = (opcode & 7) >> 0;
        !          3084: {{     ULONG cnt = srcreg;
        !          3085: {      LONG data = regs.d[dstreg];
        !          3086: {      ULONG val = data;
        !          3087:        cnt &= 63;
        !          3088: {      int carry = 0;
        !          3089:        ULONG cmask = 0x80000000;
        !          3090:        for(;cnt;--cnt){
        !          3091:        carry=val&cmask; val <<= 1;
        !          3092:        }
        !          3093:        regs.v = regs.c = 0;
        !          3094:        regs.z = ((LONG)(val)) == 0;
        !          3095:        regs.n = ((LONG)(val)) < 0;
        !          3096: regs.c = regs.x = carry!=0;
        !          3097:        regs.d[dstreg] = (val);
        !          3098: }}}}}}
        !          3099: void op_e790(UWORD opcode)
        !          3100: {
        !          3101:        ULONG srcreg = 3;
        !          3102:        ULONG dstreg = (opcode & 7) >> 0;
        !          3103: {{     ULONG cnt = srcreg;
        !          3104: {      LONG data = regs.d[dstreg];
        !          3105: {      ULONG val = data;
        !          3106:        cnt &= 63;
        !          3107: {      int carry = 0;
        !          3108:        ULONG cmask = 0x80000000;
        !          3109:        for(;cnt;--cnt){
        !          3110:        carry=val&cmask; val <<= 1;
        !          3111:        if(regs.x) val |= 1;
        !          3112:        regs.x = carry != 0;
        !          3113:        }
        !          3114:        regs.v = regs.c = 0;
        !          3115:        regs.z = ((LONG)(val)) == 0;
        !          3116:        regs.n = ((LONG)(val)) < 0;
        !          3117:        regs.x = regs.c = carry!=0;
        !          3118:        regs.d[dstreg] = (val);
        !          3119: }}}}}}
        !          3120: void op_e798(UWORD opcode)
        !          3121: {
        !          3122:        ULONG srcreg = 3;
        !          3123:        ULONG dstreg = (opcode & 7) >> 0;
        !          3124: {{     ULONG cnt = srcreg;
        !          3125: {      LONG data = regs.d[dstreg];
        !          3126: {      ULONG val = data;
        !          3127:        cnt &= 63;
        !          3128: {      int carry = 0;
        !          3129:        ULONG cmask = 0x80000000;
        !          3130:        for(;cnt;--cnt){
        !          3131:        carry=val&cmask; val <<= 1;
        !          3132:        if(carry)  val |= 1;
        !          3133:        }
        !          3134:        regs.v = regs.c = 0;
        !          3135:        regs.z = ((LONG)(val)) == 0;
        !          3136:        regs.n = ((LONG)(val)) < 0;
        !          3137: regs.c = carry!=0;
        !          3138:        regs.d[dstreg] = (val);
        !          3139: }}}}}}
        !          3140: void op_e7d0(UWORD opcode)
        !          3141: {
        !          3142:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3143: {{     CPTR dataa = regs.a[srcreg];
        !          3144:        WORD data = get_word(dataa);
        !          3145: {      UWORD val = data;
        !          3146:        ULONG cmask = 0x8000;
        !          3147:        int carry = val&cmask;
        !          3148:        val <<= 1;
        !          3149:        if(carry)  val |= 1;
        !          3150:        regs.v = regs.c = 0;
        !          3151:        regs.z = ((WORD)(val)) == 0;
        !          3152:        regs.n = ((WORD)(val)) < 0;
        !          3153: regs.c = carry!=0;
        !          3154:        put_word(dataa,val);
        !          3155: }}}}
        !          3156: void op_e7d8(UWORD opcode)
        !          3157: {
        !          3158:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3159: {{     CPTR dataa = regs.a[srcreg];
        !          3160:        WORD data = get_word(dataa);
        !          3161: {      regs.a[srcreg] += 2;
        !          3162: {      UWORD val = data;
        !          3163:        ULONG cmask = 0x8000;
        !          3164:        int carry = val&cmask;
        !          3165:        val <<= 1;
        !          3166:        if(carry)  val |= 1;
        !          3167:        regs.v = regs.c = 0;
        !          3168:        regs.z = ((WORD)(val)) == 0;
        !          3169:        regs.n = ((WORD)(val)) < 0;
        !          3170: regs.c = carry!=0;
        !          3171:        put_word(dataa,val);
        !          3172: }}}}}
        !          3173: void op_e7e0(UWORD opcode)
        !          3174: {
        !          3175:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3176: {{     regs.a[srcreg] -= 2;
        !          3177: {      CPTR dataa = regs.a[srcreg];
        !          3178:        WORD data = get_word(dataa);
        !          3179: {      UWORD val = data;
        !          3180:        ULONG cmask = 0x8000;
        !          3181:        int carry = val&cmask;
        !          3182:        val <<= 1;
        !          3183:        if(carry)  val |= 1;
        !          3184:        regs.v = regs.c = 0;
        !          3185:        regs.z = ((WORD)(val)) == 0;
        !          3186:        regs.n = ((WORD)(val)) < 0;
        !          3187: regs.c = carry!=0;
        !          3188:        put_word(dataa,val);
        !          3189: }}}}}
        !          3190: void op_e7e8(UWORD opcode)
        !          3191: {
        !          3192:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3193: {{     CPTR dataa = regs.a[srcreg] + (LONG)(WORD)nextiword();
        !          3194:        WORD data = get_word(dataa);
        !          3195: {      UWORD val = data;
        !          3196:        ULONG cmask = 0x8000;
        !          3197:        int carry = val&cmask;
        !          3198:        val <<= 1;
        !          3199:        if(carry)  val |= 1;
        !          3200:        regs.v = regs.c = 0;
        !          3201:        regs.z = ((WORD)(val)) == 0;
        !          3202:        regs.n = ((WORD)(val)) < 0;
        !          3203: regs.c = carry!=0;
        !          3204:        put_word(dataa,val);
        !          3205: }}}}
        !          3206: void op_e7f0(UWORD opcode)
        !          3207: {
        !          3208:        ULONG srcreg = (LONG)(BYTE)((opcode & 7) >> 0);
        !          3209: {{     CPTR dataa = regs.a[srcreg];
        !          3210:        UWORD datadp = nextiword();
        !          3211:        dataa += (LONG)(BYTE)(datadp & 0xFF);
        !          3212: {      ULONG datadpr = datadp & 0x8000 ? regs.a[(datadp & 0x7000) >> 12] : regs.d[(datadp & 0x7000) >> 12];
        !          3213:        if (!(datadp & 0x800)) datadpr = (LONG)(WORD)datadpr;
        !          3214:        dataa += datadpr;
        !          3215: {      WORD data = get_word(dataa);
        !          3216: {      UWORD val = data;
        !          3217:        ULONG cmask = 0x8000;
        !          3218:        int carry = val&cmask;
        !          3219:        val <<= 1;
        !          3220:        if(carry)  val |= 1;
        !          3221:        regs.v = regs.c = 0;
        !          3222:        regs.z = ((WORD)(val)) == 0;
        !          3223:        regs.n = ((WORD)(val)) < 0;
        !          3224: regs.c = carry!=0;
        !          3225:        put_word(dataa,val);
        !          3226: }}}}}}
        !          3227: void op_e7f8(UWORD opcode)
        !          3228: {
        !          3229: {{     CPTR dataa = (LONG)(WORD)nextiword();
        !          3230:        WORD data = get_word(dataa);
        !          3231: {      UWORD val = data;
        !          3232:        ULONG cmask = 0x8000;
        !          3233:        int carry = val&cmask;
        !          3234:        val <<= 1;
        !          3235:        if(carry)  val |= 1;
        !          3236:        regs.v = regs.c = 0;
        !          3237:        regs.z = ((WORD)(val)) == 0;
        !          3238:        regs.n = ((WORD)(val)) < 0;
        !          3239: regs.c = carry!=0;
        !          3240:        put_word(dataa,val);
        !          3241: }}}}
        !          3242: void op_e7f9(UWORD opcode)
        !          3243: {
        !          3244: {{     CPTR dataa = nextilong();
        !          3245:        WORD data = get_word(dataa);
        !          3246: {      UWORD val = data;
        !          3247:        ULONG cmask = 0x8000;
        !          3248:        int carry = val&cmask;
        !          3249:        val <<= 1;
        !          3250:        if(carry)  val |= 1;
        !          3251:        regs.v = regs.c = 0;
        !          3252:        regs.z = ((WORD)(val)) == 0;
        !          3253:        regs.n = ((WORD)(val)) < 0;
        !          3254: regs.c = carry!=0;
        !          3255:        put_word(dataa,val);
        !          3256: }}}}
        !          3257: void op_e800(UWORD opcode)
        !          3258: {
        !          3259:        ULONG srcreg = 4;
        !          3260:        ULONG dstreg = (opcode & 7) >> 0;
        !          3261: {{     ULONG cnt = srcreg;
        !          3262: {      BYTE data = regs.d[dstreg];
        !          3263: {      UBYTE val = data;
        !          3264:        cnt &= 63;
        !          3265:        regs.v = 0;
        !          3266: {      ULONG cmask = 0x80;
        !          3267:        ULONG sign = cmask & val;
        !          3268:        for(;cnt;--cnt){
        !          3269:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          3270:        }
        !          3271:        regs.n = sign != 0;
        !          3272:        regs.z = val == 0;
        !          3273:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3274: }}}}}}
        !          3275: void op_e808(UWORD opcode)
        !          3276: {
        !          3277:        ULONG srcreg = 4;
        !          3278:        ULONG dstreg = (opcode & 7) >> 0;
        !          3279: {{     ULONG cnt = srcreg;
        !          3280: {      BYTE data = regs.d[dstreg];
        !          3281: {      UBYTE val = data;
        !          3282:        cnt &= 63;
        !          3283: {      int carry = 0;
        !          3284:        for(;cnt;--cnt){
        !          3285:        carry=val&1; val >>= 1;
        !          3286:        }
        !          3287:        regs.v = regs.c = 0;
        !          3288:        regs.z = ((BYTE)(val)) == 0;
        !          3289:        regs.n = ((BYTE)(val)) < 0;
        !          3290: regs.c = regs.x = carry!=0;
        !          3291:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3292: }}}}}}
        !          3293: void op_e810(UWORD opcode)
        !          3294: {
        !          3295:        ULONG srcreg = 4;
        !          3296:        ULONG dstreg = (opcode & 7) >> 0;
        !          3297: {{     ULONG cnt = srcreg;
        !          3298: {      BYTE data = regs.d[dstreg];
        !          3299: {      UBYTE val = data;
        !          3300:        cnt &= 63;
        !          3301: {      int carry = 0;
        !          3302:        ULONG cmask = 0x80;
        !          3303:        for(;cnt;--cnt){
        !          3304:        carry=val&1; val >>= 1;
        !          3305:        if(regs.x) val |= cmask;
        !          3306:        regs.x = carry != 0;
        !          3307:        }
        !          3308:        regs.v = regs.c = 0;
        !          3309:        regs.z = ((BYTE)(val)) == 0;
        !          3310:        regs.n = ((BYTE)(val)) < 0;
        !          3311:        regs.x = regs.c = carry!=0;
        !          3312:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3313: }}}}}}
        !          3314: void op_e818(UWORD opcode)
        !          3315: {
        !          3316:        ULONG srcreg = 4;
        !          3317:        ULONG dstreg = (opcode & 7) >> 0;
        !          3318: {{     ULONG cnt = srcreg;
        !          3319: {      BYTE data = regs.d[dstreg];
        !          3320: {      UBYTE val = data;
        !          3321:        cnt &= 63;
        !          3322: {      int carry = 0;
        !          3323:        ULONG cmask = 0x80;
        !          3324:        for(;cnt;--cnt){
        !          3325:        carry=val&1; val = (ULONG)val >> 1;
        !          3326:        if(carry) val |= cmask;
        !          3327:        }
        !          3328:        regs.v = regs.c = 0;
        !          3329:        regs.z = ((BYTE)(val)) == 0;
        !          3330:        regs.n = ((BYTE)(val)) < 0;
        !          3331:        regs.c = carry!=0;
        !          3332:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3333: }}}}}}
        !          3334: void op_e840(UWORD opcode)
        !          3335: {
        !          3336:        ULONG srcreg = 4;
        !          3337:        ULONG dstreg = (opcode & 7) >> 0;
        !          3338: {{     ULONG cnt = srcreg;
        !          3339: {      WORD data = regs.d[dstreg];
        !          3340: {      UWORD val = data;
        !          3341:        cnt &= 63;
        !          3342:        regs.v = 0;
        !          3343: {      ULONG cmask = 0x8000;
        !          3344:        ULONG sign = cmask & val;
        !          3345:        for(;cnt;--cnt){
        !          3346:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          3347:        }
        !          3348:        regs.n = sign != 0;
        !          3349:        regs.z = val == 0;
        !          3350:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3351: }}}}}}
        !          3352: void op_e848(UWORD opcode)
        !          3353: {
        !          3354:        ULONG srcreg = 4;
        !          3355:        ULONG dstreg = (opcode & 7) >> 0;
        !          3356: {{     ULONG cnt = srcreg;
        !          3357: {      WORD data = regs.d[dstreg];
        !          3358: {      UWORD val = data;
        !          3359:        cnt &= 63;
        !          3360: {      int carry = 0;
        !          3361:        for(;cnt;--cnt){
        !          3362:        carry=val&1; val >>= 1;
        !          3363:        }
        !          3364:        regs.v = regs.c = 0;
        !          3365:        regs.z = ((WORD)(val)) == 0;
        !          3366:        regs.n = ((WORD)(val)) < 0;
        !          3367: regs.c = regs.x = carry!=0;
        !          3368:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3369: }}}}}}
        !          3370: void op_e850(UWORD opcode)
        !          3371: {
        !          3372:        ULONG srcreg = 4;
        !          3373:        ULONG dstreg = (opcode & 7) >> 0;
        !          3374: {{     ULONG cnt = srcreg;
        !          3375: {      WORD data = regs.d[dstreg];
        !          3376: {      UWORD val = data;
        !          3377:        cnt &= 63;
        !          3378: {      int carry = 0;
        !          3379:        ULONG cmask = 0x8000;
        !          3380:        for(;cnt;--cnt){
        !          3381:        carry=val&1; val >>= 1;
        !          3382:        if(regs.x) val |= cmask;
        !          3383:        regs.x = carry != 0;
        !          3384:        }
        !          3385:        regs.v = regs.c = 0;
        !          3386:        regs.z = ((WORD)(val)) == 0;
        !          3387:        regs.n = ((WORD)(val)) < 0;
        !          3388:        regs.x = regs.c = carry!=0;
        !          3389:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3390: }}}}}}
        !          3391: void op_e858(UWORD opcode)
        !          3392: {
        !          3393:        ULONG srcreg = 4;
        !          3394:        ULONG dstreg = (opcode & 7) >> 0;
        !          3395: {{     ULONG cnt = srcreg;
        !          3396: {      WORD data = regs.d[dstreg];
        !          3397: {      UWORD val = data;
        !          3398:        cnt &= 63;
        !          3399: {      int carry = 0;
        !          3400:        ULONG cmask = 0x8000;
        !          3401:        for(;cnt;--cnt){
        !          3402:        carry=val&1; val = (ULONG)val >> 1;
        !          3403:        if(carry) val |= cmask;
        !          3404:        }
        !          3405:        regs.v = regs.c = 0;
        !          3406:        regs.z = ((WORD)(val)) == 0;
        !          3407:        regs.n = ((WORD)(val)) < 0;
        !          3408:        regs.c = carry!=0;
        !          3409:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3410: }}}}}}
        !          3411: void op_e880(UWORD opcode)
        !          3412: {
        !          3413:        ULONG srcreg = 4;
        !          3414:        ULONG dstreg = (opcode & 7) >> 0;
        !          3415: {{     ULONG cnt = srcreg;
        !          3416: {      LONG data = regs.d[dstreg];
        !          3417: {      ULONG val = data;
        !          3418:        cnt &= 63;
        !          3419:        regs.v = 0;
        !          3420: {      ULONG cmask = 0x80000000;
        !          3421:        ULONG sign = cmask & val;
        !          3422:        for(;cnt;--cnt){
        !          3423:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          3424:        }
        !          3425:        regs.n = sign != 0;
        !          3426:        regs.z = val == 0;
        !          3427:        regs.d[dstreg] = (val);
        !          3428: }}}}}}
        !          3429: void op_e888(UWORD opcode)
        !          3430: {
        !          3431:        ULONG srcreg = 4;
        !          3432:        ULONG dstreg = (opcode & 7) >> 0;
        !          3433: {{     ULONG cnt = srcreg;
        !          3434: {      LONG data = regs.d[dstreg];
        !          3435: {      ULONG val = data;
        !          3436:        cnt &= 63;
        !          3437: {      int carry = 0;
        !          3438:        for(;cnt;--cnt){
        !          3439:        carry=val&1; val >>= 1;
        !          3440:        }
        !          3441:        regs.v = regs.c = 0;
        !          3442:        regs.z = ((LONG)(val)) == 0;
        !          3443:        regs.n = ((LONG)(val)) < 0;
        !          3444: regs.c = regs.x = carry!=0;
        !          3445:        regs.d[dstreg] = (val);
        !          3446: }}}}}}
        !          3447: void op_e890(UWORD opcode)
        !          3448: {
        !          3449:        ULONG srcreg = 4;
        !          3450:        ULONG dstreg = (opcode & 7) >> 0;
        !          3451: {{     ULONG cnt = srcreg;
        !          3452: {      LONG data = regs.d[dstreg];
        !          3453: {      ULONG val = data;
        !          3454:        cnt &= 63;
        !          3455: {      int carry = 0;
        !          3456:        ULONG cmask = 0x80000000;
        !          3457:        for(;cnt;--cnt){
        !          3458:        carry=val&1; val >>= 1;
        !          3459:        if(regs.x) val |= cmask;
        !          3460:        regs.x = carry != 0;
        !          3461:        }
        !          3462:        regs.v = regs.c = 0;
        !          3463:        regs.z = ((LONG)(val)) == 0;
        !          3464:        regs.n = ((LONG)(val)) < 0;
        !          3465:        regs.x = regs.c = carry!=0;
        !          3466:        regs.d[dstreg] = (val);
        !          3467: }}}}}}
        !          3468: void op_e898(UWORD opcode)
        !          3469: {
        !          3470:        ULONG srcreg = 4;
        !          3471:        ULONG dstreg = (opcode & 7) >> 0;
        !          3472: {{     ULONG cnt = srcreg;
        !          3473: {      LONG data = regs.d[dstreg];
        !          3474: {      ULONG val = data;
        !          3475:        cnt &= 63;
        !          3476: {      int carry = 0;
        !          3477:        ULONG cmask = 0x80000000;
        !          3478:        for(;cnt;--cnt){
        !          3479:        carry=val&1; val = (ULONG)val >> 1;
        !          3480:        if(carry) val |= cmask;
        !          3481:        }
        !          3482:        regs.v = regs.c = 0;
        !          3483:        regs.z = ((LONG)(val)) == 0;
        !          3484:        regs.n = ((LONG)(val)) < 0;
        !          3485:        regs.c = carry!=0;
        !          3486:        regs.d[dstreg] = (val);
        !          3487: }}}}}}
        !          3488: void op_e900(UWORD opcode)
        !          3489: {
        !          3490:        ULONG srcreg = 4;
        !          3491:        ULONG dstreg = (opcode & 7) >> 0;
        !          3492: {{     ULONG cnt = srcreg;
        !          3493: {      BYTE data = regs.d[dstreg];
        !          3494: {      UBYTE val = data;
        !          3495:        cnt &= 63;
        !          3496:        regs.v = 0;
        !          3497: {      ULONG cmask = 0x80;
        !          3498:        ULONG sign = cmask & val;
        !          3499:        for(;cnt;--cnt){
        !          3500:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          3501:        if ((val&cmask)!=sign)regs.v=1;
        !          3502:        }
        !          3503:        regs.n = (val&cmask) != 0;
        !          3504:        regs.z = val == 0;
        !          3505:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3506: }}}}}}
        !          3507: void op_e908(UWORD opcode)
        !          3508: {
        !          3509:        ULONG srcreg = 4;
        !          3510:        ULONG dstreg = (opcode & 7) >> 0;
        !          3511: {{     ULONG cnt = srcreg;
        !          3512: {      BYTE data = regs.d[dstreg];
        !          3513: {      UBYTE val = data;
        !          3514:        cnt &= 63;
        !          3515: {      int carry = 0;
        !          3516:        ULONG cmask = 0x80;
        !          3517:        for(;cnt;--cnt){
        !          3518:        carry=val&cmask; val <<= 1;
        !          3519:        }
        !          3520:        regs.v = regs.c = 0;
        !          3521:        regs.z = ((BYTE)(val)) == 0;
        !          3522:        regs.n = ((BYTE)(val)) < 0;
        !          3523: regs.c = regs.x = carry!=0;
        !          3524:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3525: }}}}}}
        !          3526: void op_e910(UWORD opcode)
        !          3527: {
        !          3528:        ULONG srcreg = 4;
        !          3529:        ULONG dstreg = (opcode & 7) >> 0;
        !          3530: {{     ULONG cnt = srcreg;
        !          3531: {      BYTE data = regs.d[dstreg];
        !          3532: {      UBYTE val = data;
        !          3533:        cnt &= 63;
        !          3534: {      int carry = 0;
        !          3535:        ULONG cmask = 0x80;
        !          3536:        for(;cnt;--cnt){
        !          3537:        carry=val&cmask; val <<= 1;
        !          3538:        if(regs.x) val |= 1;
        !          3539:        regs.x = carry != 0;
        !          3540:        }
        !          3541:        regs.v = regs.c = 0;
        !          3542:        regs.z = ((BYTE)(val)) == 0;
        !          3543:        regs.n = ((BYTE)(val)) < 0;
        !          3544:        regs.x = regs.c = carry!=0;
        !          3545:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3546: }}}}}}
        !          3547: void op_e918(UWORD opcode)
        !          3548: {
        !          3549:        ULONG srcreg = 4;
        !          3550:        ULONG dstreg = (opcode & 7) >> 0;
        !          3551: {{     ULONG cnt = srcreg;
        !          3552: {      BYTE data = regs.d[dstreg];
        !          3553: {      UBYTE val = data;
        !          3554:        cnt &= 63;
        !          3555: {      int carry = 0;
        !          3556:        ULONG cmask = 0x80;
        !          3557:        for(;cnt;--cnt){
        !          3558:        carry=val&cmask; val <<= 1;
        !          3559:        if(carry)  val |= 1;
        !          3560:        }
        !          3561:        regs.v = regs.c = 0;
        !          3562:        regs.z = ((BYTE)(val)) == 0;
        !          3563:        regs.n = ((BYTE)(val)) < 0;
        !          3564: regs.c = carry!=0;
        !          3565:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3566: }}}}}}
        !          3567: void op_e940(UWORD opcode)
        !          3568: {
        !          3569:        ULONG srcreg = 4;
        !          3570:        ULONG dstreg = (opcode & 7) >> 0;
        !          3571: {{     ULONG cnt = srcreg;
        !          3572: {      WORD data = regs.d[dstreg];
        !          3573: {      UWORD val = data;
        !          3574:        cnt &= 63;
        !          3575:        regs.v = 0;
        !          3576: {      ULONG cmask = 0x8000;
        !          3577:        ULONG sign = cmask & val;
        !          3578:        for(;cnt;--cnt){
        !          3579:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          3580:        if ((val&cmask)!=sign)regs.v=1;
        !          3581:        }
        !          3582:        regs.n = (val&cmask) != 0;
        !          3583:        regs.z = val == 0;
        !          3584:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3585: }}}}}}
        !          3586: void op_e948(UWORD opcode)
        !          3587: {
        !          3588:        ULONG srcreg = 4;
        !          3589:        ULONG dstreg = (opcode & 7) >> 0;
        !          3590: {{     ULONG cnt = srcreg;
        !          3591: {      WORD data = regs.d[dstreg];
        !          3592: {      UWORD val = data;
        !          3593:        cnt &= 63;
        !          3594: {      int carry = 0;
        !          3595:        ULONG cmask = 0x8000;
        !          3596:        for(;cnt;--cnt){
        !          3597:        carry=val&cmask; val <<= 1;
        !          3598:        }
        !          3599:        regs.v = regs.c = 0;
        !          3600:        regs.z = ((WORD)(val)) == 0;
        !          3601:        regs.n = ((WORD)(val)) < 0;
        !          3602: regs.c = regs.x = carry!=0;
        !          3603:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3604: }}}}}}
        !          3605: void op_e950(UWORD opcode)
        !          3606: {
        !          3607:        ULONG srcreg = 4;
        !          3608:        ULONG dstreg = (opcode & 7) >> 0;
        !          3609: {{     ULONG cnt = srcreg;
        !          3610: {      WORD data = regs.d[dstreg];
        !          3611: {      UWORD val = data;
        !          3612:        cnt &= 63;
        !          3613: {      int carry = 0;
        !          3614:        ULONG cmask = 0x8000;
        !          3615:        for(;cnt;--cnt){
        !          3616:        carry=val&cmask; val <<= 1;
        !          3617:        if(regs.x) val |= 1;
        !          3618:        regs.x = carry != 0;
        !          3619:        }
        !          3620:        regs.v = regs.c = 0;
        !          3621:        regs.z = ((WORD)(val)) == 0;
        !          3622:        regs.n = ((WORD)(val)) < 0;
        !          3623:        regs.x = regs.c = carry!=0;
        !          3624:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3625: }}}}}}
        !          3626: void op_e958(UWORD opcode)
        !          3627: {
        !          3628:        ULONG srcreg = 4;
        !          3629:        ULONG dstreg = (opcode & 7) >> 0;
        !          3630: {{     ULONG cnt = srcreg;
        !          3631: {      WORD data = regs.d[dstreg];
        !          3632: {      UWORD val = data;
        !          3633:        cnt &= 63;
        !          3634: {      int carry = 0;
        !          3635:        ULONG cmask = 0x8000;
        !          3636:        for(;cnt;--cnt){
        !          3637:        carry=val&cmask; val <<= 1;
        !          3638:        if(carry)  val |= 1;
        !          3639:        }
        !          3640:        regs.v = regs.c = 0;
        !          3641:        regs.z = ((WORD)(val)) == 0;
        !          3642:        regs.n = ((WORD)(val)) < 0;
        !          3643: regs.c = carry!=0;
        !          3644:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3645: }}}}}}
        !          3646: void op_e980(UWORD opcode)
        !          3647: {
        !          3648:        ULONG srcreg = 4;
        !          3649:        ULONG dstreg = (opcode & 7) >> 0;
        !          3650: {{     ULONG cnt = srcreg;
        !          3651: {      LONG data = regs.d[dstreg];
        !          3652: {      ULONG val = data;
        !          3653:        cnt &= 63;
        !          3654:        regs.v = 0;
        !          3655: {      ULONG cmask = 0x80000000;
        !          3656:        ULONG sign = cmask & val;
        !          3657:        for(;cnt;--cnt){
        !          3658:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          3659:        if ((val&cmask)!=sign)regs.v=1;
        !          3660:        }
        !          3661:        regs.n = (val&cmask) != 0;
        !          3662:        regs.z = val == 0;
        !          3663:        regs.d[dstreg] = (val);
        !          3664: }}}}}}
        !          3665: void op_e988(UWORD opcode)
        !          3666: {
        !          3667:        ULONG srcreg = 4;
        !          3668:        ULONG dstreg = (opcode & 7) >> 0;
        !          3669: {{     ULONG cnt = srcreg;
        !          3670: {      LONG data = regs.d[dstreg];
        !          3671: {      ULONG val = data;
        !          3672:        cnt &= 63;
        !          3673: {      int carry = 0;
        !          3674:        ULONG cmask = 0x80000000;
        !          3675:        for(;cnt;--cnt){
        !          3676:        carry=val&cmask; val <<= 1;
        !          3677:        }
        !          3678:        regs.v = regs.c = 0;
        !          3679:        regs.z = ((LONG)(val)) == 0;
        !          3680:        regs.n = ((LONG)(val)) < 0;
        !          3681: regs.c = regs.x = carry!=0;
        !          3682:        regs.d[dstreg] = (val);
        !          3683: }}}}}}
        !          3684: void op_e990(UWORD opcode)
        !          3685: {
        !          3686:        ULONG srcreg = 4;
        !          3687:        ULONG dstreg = (opcode & 7) >> 0;
        !          3688: {{     ULONG cnt = srcreg;
        !          3689: {      LONG data = regs.d[dstreg];
        !          3690: {      ULONG val = data;
        !          3691:        cnt &= 63;
        !          3692: {      int carry = 0;
        !          3693:        ULONG cmask = 0x80000000;
        !          3694:        for(;cnt;--cnt){
        !          3695:        carry=val&cmask; val <<= 1;
        !          3696:        if(regs.x) val |= 1;
        !          3697:        regs.x = carry != 0;
        !          3698:        }
        !          3699:        regs.v = regs.c = 0;
        !          3700:        regs.z = ((LONG)(val)) == 0;
        !          3701:        regs.n = ((LONG)(val)) < 0;
        !          3702:        regs.x = regs.c = carry!=0;
        !          3703:        regs.d[dstreg] = (val);
        !          3704: }}}}}}
        !          3705: void op_e998(UWORD opcode)
        !          3706: {
        !          3707:        ULONG srcreg = 4;
        !          3708:        ULONG dstreg = (opcode & 7) >> 0;
        !          3709: {{     ULONG cnt = srcreg;
        !          3710: {      LONG data = regs.d[dstreg];
        !          3711: {      ULONG val = data;
        !          3712:        cnt &= 63;
        !          3713: {      int carry = 0;
        !          3714:        ULONG cmask = 0x80000000;
        !          3715:        for(;cnt;--cnt){
        !          3716:        carry=val&cmask; val <<= 1;
        !          3717:        if(carry)  val |= 1;
        !          3718:        }
        !          3719:        regs.v = regs.c = 0;
        !          3720:        regs.z = ((LONG)(val)) == 0;
        !          3721:        regs.n = ((LONG)(val)) < 0;
        !          3722: regs.c = carry!=0;
        !          3723:        regs.d[dstreg] = (val);
        !          3724: }}}}}}
        !          3725: void op_ea00(UWORD opcode)
        !          3726: {
        !          3727:        ULONG srcreg = 5;
        !          3728:        ULONG dstreg = (opcode & 7) >> 0;
        !          3729: {{     ULONG cnt = srcreg;
        !          3730: {      BYTE data = regs.d[dstreg];
        !          3731: {      UBYTE val = data;
        !          3732:        cnt &= 63;
        !          3733:        regs.v = 0;
        !          3734: {      ULONG cmask = 0x80;
        !          3735:        ULONG sign = cmask & val;
        !          3736:        for(;cnt;--cnt){
        !          3737:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          3738:        }
        !          3739:        regs.n = sign != 0;
        !          3740:        regs.z = val == 0;
        !          3741:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3742: }}}}}}
        !          3743: void op_ea08(UWORD opcode)
        !          3744: {
        !          3745:        ULONG srcreg = 5;
        !          3746:        ULONG dstreg = (opcode & 7) >> 0;
        !          3747: {{     ULONG cnt = srcreg;
        !          3748: {      BYTE data = regs.d[dstreg];
        !          3749: {      UBYTE val = data;
        !          3750:        cnt &= 63;
        !          3751: {      int carry = 0;
        !          3752:        for(;cnt;--cnt){
        !          3753:        carry=val&1; val >>= 1;
        !          3754:        }
        !          3755:        regs.v = regs.c = 0;
        !          3756:        regs.z = ((BYTE)(val)) == 0;
        !          3757:        regs.n = ((BYTE)(val)) < 0;
        !          3758: regs.c = regs.x = carry!=0;
        !          3759:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3760: }}}}}}
        !          3761: void op_ea10(UWORD opcode)
        !          3762: {
        !          3763:        ULONG srcreg = 5;
        !          3764:        ULONG dstreg = (opcode & 7) >> 0;
        !          3765: {{     ULONG cnt = srcreg;
        !          3766: {      BYTE data = regs.d[dstreg];
        !          3767: {      UBYTE val = data;
        !          3768:        cnt &= 63;
        !          3769: {      int carry = 0;
        !          3770:        ULONG cmask = 0x80;
        !          3771:        for(;cnt;--cnt){
        !          3772:        carry=val&1; val >>= 1;
        !          3773:        if(regs.x) val |= cmask;
        !          3774:        regs.x = carry != 0;
        !          3775:        }
        !          3776:        regs.v = regs.c = 0;
        !          3777:        regs.z = ((BYTE)(val)) == 0;
        !          3778:        regs.n = ((BYTE)(val)) < 0;
        !          3779:        regs.x = regs.c = carry!=0;
        !          3780:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3781: }}}}}}
        !          3782: void op_ea18(UWORD opcode)
        !          3783: {
        !          3784:        ULONG srcreg = 5;
        !          3785:        ULONG dstreg = (opcode & 7) >> 0;
        !          3786: {{     ULONG cnt = srcreg;
        !          3787: {      BYTE data = regs.d[dstreg];
        !          3788: {      UBYTE val = data;
        !          3789:        cnt &= 63;
        !          3790: {      int carry = 0;
        !          3791:        ULONG cmask = 0x80;
        !          3792:        for(;cnt;--cnt){
        !          3793:        carry=val&1; val = (ULONG)val >> 1;
        !          3794:        if(carry) val |= cmask;
        !          3795:        }
        !          3796:        regs.v = regs.c = 0;
        !          3797:        regs.z = ((BYTE)(val)) == 0;
        !          3798:        regs.n = ((BYTE)(val)) < 0;
        !          3799:        regs.c = carry!=0;
        !          3800:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3801: }}}}}}
        !          3802: void op_ea40(UWORD opcode)
        !          3803: {
        !          3804:        ULONG srcreg = 5;
        !          3805:        ULONG dstreg = (opcode & 7) >> 0;
        !          3806: {{     ULONG cnt = srcreg;
        !          3807: {      WORD data = regs.d[dstreg];
        !          3808: {      UWORD val = data;
        !          3809:        cnt &= 63;
        !          3810:        regs.v = 0;
        !          3811: {      ULONG cmask = 0x8000;
        !          3812:        ULONG sign = cmask & val;
        !          3813:        for(;cnt;--cnt){
        !          3814:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          3815:        }
        !          3816:        regs.n = sign != 0;
        !          3817:        regs.z = val == 0;
        !          3818:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3819: }}}}}}
        !          3820: void op_ea48(UWORD opcode)
        !          3821: {
        !          3822:        ULONG srcreg = 5;
        !          3823:        ULONG dstreg = (opcode & 7) >> 0;
        !          3824: {{     ULONG cnt = srcreg;
        !          3825: {      WORD data = regs.d[dstreg];
        !          3826: {      UWORD val = data;
        !          3827:        cnt &= 63;
        !          3828: {      int carry = 0;
        !          3829:        for(;cnt;--cnt){
        !          3830:        carry=val&1; val >>= 1;
        !          3831:        }
        !          3832:        regs.v = regs.c = 0;
        !          3833:        regs.z = ((WORD)(val)) == 0;
        !          3834:        regs.n = ((WORD)(val)) < 0;
        !          3835: regs.c = regs.x = carry!=0;
        !          3836:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3837: }}}}}}
        !          3838: void op_ea50(UWORD opcode)
        !          3839: {
        !          3840:        ULONG srcreg = 5;
        !          3841:        ULONG dstreg = (opcode & 7) >> 0;
        !          3842: {{     ULONG cnt = srcreg;
        !          3843: {      WORD data = regs.d[dstreg];
        !          3844: {      UWORD val = data;
        !          3845:        cnt &= 63;
        !          3846: {      int carry = 0;
        !          3847:        ULONG cmask = 0x8000;
        !          3848:        for(;cnt;--cnt){
        !          3849:        carry=val&1; val >>= 1;
        !          3850:        if(regs.x) val |= cmask;
        !          3851:        regs.x = carry != 0;
        !          3852:        }
        !          3853:        regs.v = regs.c = 0;
        !          3854:        regs.z = ((WORD)(val)) == 0;
        !          3855:        regs.n = ((WORD)(val)) < 0;
        !          3856:        regs.x = regs.c = carry!=0;
        !          3857:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3858: }}}}}}
        !          3859: void op_ea58(UWORD opcode)
        !          3860: {
        !          3861:        ULONG srcreg = 5;
        !          3862:        ULONG dstreg = (opcode & 7) >> 0;
        !          3863: {{     ULONG cnt = srcreg;
        !          3864: {      WORD data = regs.d[dstreg];
        !          3865: {      UWORD val = data;
        !          3866:        cnt &= 63;
        !          3867: {      int carry = 0;
        !          3868:        ULONG cmask = 0x8000;
        !          3869:        for(;cnt;--cnt){
        !          3870:        carry=val&1; val = (ULONG)val >> 1;
        !          3871:        if(carry) val |= cmask;
        !          3872:        }
        !          3873:        regs.v = regs.c = 0;
        !          3874:        regs.z = ((WORD)(val)) == 0;
        !          3875:        regs.n = ((WORD)(val)) < 0;
        !          3876:        regs.c = carry!=0;
        !          3877:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          3878: }}}}}}
        !          3879: void op_ea80(UWORD opcode)
        !          3880: {
        !          3881:        ULONG srcreg = 5;
        !          3882:        ULONG dstreg = (opcode & 7) >> 0;
        !          3883: {{     ULONG cnt = srcreg;
        !          3884: {      LONG data = regs.d[dstreg];
        !          3885: {      ULONG val = data;
        !          3886:        cnt &= 63;
        !          3887:        regs.v = 0;
        !          3888: {      ULONG cmask = 0x80000000;
        !          3889:        ULONG sign = cmask & val;
        !          3890:        for(;cnt;--cnt){
        !          3891:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          3892:        }
        !          3893:        regs.n = sign != 0;
        !          3894:        regs.z = val == 0;
        !          3895:        regs.d[dstreg] = (val);
        !          3896: }}}}}}
        !          3897: void op_ea88(UWORD opcode)
        !          3898: {
        !          3899:        ULONG srcreg = 5;
        !          3900:        ULONG dstreg = (opcode & 7) >> 0;
        !          3901: {{     ULONG cnt = srcreg;
        !          3902: {      LONG data = regs.d[dstreg];
        !          3903: {      ULONG val = data;
        !          3904:        cnt &= 63;
        !          3905: {      int carry = 0;
        !          3906:        for(;cnt;--cnt){
        !          3907:        carry=val&1; val >>= 1;
        !          3908:        }
        !          3909:        regs.v = regs.c = 0;
        !          3910:        regs.z = ((LONG)(val)) == 0;
        !          3911:        regs.n = ((LONG)(val)) < 0;
        !          3912: regs.c = regs.x = carry!=0;
        !          3913:        regs.d[dstreg] = (val);
        !          3914: }}}}}}
        !          3915: void op_ea90(UWORD opcode)
        !          3916: {
        !          3917:        ULONG srcreg = 5;
        !          3918:        ULONG dstreg = (opcode & 7) >> 0;
        !          3919: {{     ULONG cnt = srcreg;
        !          3920: {      LONG data = regs.d[dstreg];
        !          3921: {      ULONG val = data;
        !          3922:        cnt &= 63;
        !          3923: {      int carry = 0;
        !          3924:        ULONG cmask = 0x80000000;
        !          3925:        for(;cnt;--cnt){
        !          3926:        carry=val&1; val >>= 1;
        !          3927:        if(regs.x) val |= cmask;
        !          3928:        regs.x = carry != 0;
        !          3929:        }
        !          3930:        regs.v = regs.c = 0;
        !          3931:        regs.z = ((LONG)(val)) == 0;
        !          3932:        regs.n = ((LONG)(val)) < 0;
        !          3933:        regs.x = regs.c = carry!=0;
        !          3934:        regs.d[dstreg] = (val);
        !          3935: }}}}}}
        !          3936: void op_ea98(UWORD opcode)
        !          3937: {
        !          3938:        ULONG srcreg = 5;
        !          3939:        ULONG dstreg = (opcode & 7) >> 0;
        !          3940: {{     ULONG cnt = srcreg;
        !          3941: {      LONG data = regs.d[dstreg];
        !          3942: {      ULONG val = data;
        !          3943:        cnt &= 63;
        !          3944: {      int carry = 0;
        !          3945:        ULONG cmask = 0x80000000;
        !          3946:        for(;cnt;--cnt){
        !          3947:        carry=val&1; val = (ULONG)val >> 1;
        !          3948:        if(carry) val |= cmask;
        !          3949:        }
        !          3950:        regs.v = regs.c = 0;
        !          3951:        regs.z = ((LONG)(val)) == 0;
        !          3952:        regs.n = ((LONG)(val)) < 0;
        !          3953:        regs.c = carry!=0;
        !          3954:        regs.d[dstreg] = (val);
        !          3955: }}}}}}
        !          3956: void op_eb00(UWORD opcode)
        !          3957: {
        !          3958:        ULONG srcreg = 5;
        !          3959:        ULONG dstreg = (opcode & 7) >> 0;
        !          3960: {{     ULONG cnt = srcreg;
        !          3961: {      BYTE data = regs.d[dstreg];
        !          3962: {      UBYTE val = data;
        !          3963:        cnt &= 63;
        !          3964:        regs.v = 0;
        !          3965: {      ULONG cmask = 0x80;
        !          3966:        ULONG sign = cmask & val;
        !          3967:        for(;cnt;--cnt){
        !          3968:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          3969:        if ((val&cmask)!=sign)regs.v=1;
        !          3970:        }
        !          3971:        regs.n = (val&cmask) != 0;
        !          3972:        regs.z = val == 0;
        !          3973:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3974: }}}}}}
        !          3975: void op_eb08(UWORD opcode)
        !          3976: {
        !          3977:        ULONG srcreg = 5;
        !          3978:        ULONG dstreg = (opcode & 7) >> 0;
        !          3979: {{     ULONG cnt = srcreg;
        !          3980: {      BYTE data = regs.d[dstreg];
        !          3981: {      UBYTE val = data;
        !          3982:        cnt &= 63;
        !          3983: {      int carry = 0;
        !          3984:        ULONG cmask = 0x80;
        !          3985:        for(;cnt;--cnt){
        !          3986:        carry=val&cmask; val <<= 1;
        !          3987:        }
        !          3988:        regs.v = regs.c = 0;
        !          3989:        regs.z = ((BYTE)(val)) == 0;
        !          3990:        regs.n = ((BYTE)(val)) < 0;
        !          3991: regs.c = regs.x = carry!=0;
        !          3992:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          3993: }}}}}}
        !          3994: void op_eb10(UWORD opcode)
        !          3995: {
        !          3996:        ULONG srcreg = 5;
        !          3997:        ULONG dstreg = (opcode & 7) >> 0;
        !          3998: {{     ULONG cnt = srcreg;
        !          3999: {      BYTE data = regs.d[dstreg];
        !          4000: {      UBYTE val = data;
        !          4001:        cnt &= 63;
        !          4002: {      int carry = 0;
        !          4003:        ULONG cmask = 0x80;
        !          4004:        for(;cnt;--cnt){
        !          4005:        carry=val&cmask; val <<= 1;
        !          4006:        if(regs.x) val |= 1;
        !          4007:        regs.x = carry != 0;
        !          4008:        }
        !          4009:        regs.v = regs.c = 0;
        !          4010:        regs.z = ((BYTE)(val)) == 0;
        !          4011:        regs.n = ((BYTE)(val)) < 0;
        !          4012:        regs.x = regs.c = carry!=0;
        !          4013:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4014: }}}}}}
        !          4015: void op_eb18(UWORD opcode)
        !          4016: {
        !          4017:        ULONG srcreg = 5;
        !          4018:        ULONG dstreg = (opcode & 7) >> 0;
        !          4019: {{     ULONG cnt = srcreg;
        !          4020: {      BYTE data = regs.d[dstreg];
        !          4021: {      UBYTE val = data;
        !          4022:        cnt &= 63;
        !          4023: {      int carry = 0;
        !          4024:        ULONG cmask = 0x80;
        !          4025:        for(;cnt;--cnt){
        !          4026:        carry=val&cmask; val <<= 1;
        !          4027:        if(carry)  val |= 1;
        !          4028:        }
        !          4029:        regs.v = regs.c = 0;
        !          4030:        regs.z = ((BYTE)(val)) == 0;
        !          4031:        regs.n = ((BYTE)(val)) < 0;
        !          4032: regs.c = carry!=0;
        !          4033:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4034: }}}}}}
        !          4035: void op_eb40(UWORD opcode)
        !          4036: {
        !          4037:        ULONG srcreg = 5;
        !          4038:        ULONG dstreg = (opcode & 7) >> 0;
        !          4039: {{     ULONG cnt = srcreg;
        !          4040: {      WORD data = regs.d[dstreg];
        !          4041: {      UWORD val = data;
        !          4042:        cnt &= 63;
        !          4043:        regs.v = 0;
        !          4044: {      ULONG cmask = 0x8000;
        !          4045:        ULONG sign = cmask & val;
        !          4046:        for(;cnt;--cnt){
        !          4047:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          4048:        if ((val&cmask)!=sign)regs.v=1;
        !          4049:        }
        !          4050:        regs.n = (val&cmask) != 0;
        !          4051:        regs.z = val == 0;
        !          4052:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4053: }}}}}}
        !          4054: void op_eb48(UWORD opcode)
        !          4055: {
        !          4056:        ULONG srcreg = 5;
        !          4057:        ULONG dstreg = (opcode & 7) >> 0;
        !          4058: {{     ULONG cnt = srcreg;
        !          4059: {      WORD data = regs.d[dstreg];
        !          4060: {      UWORD val = data;
        !          4061:        cnt &= 63;
        !          4062: {      int carry = 0;
        !          4063:        ULONG cmask = 0x8000;
        !          4064:        for(;cnt;--cnt){
        !          4065:        carry=val&cmask; val <<= 1;
        !          4066:        }
        !          4067:        regs.v = regs.c = 0;
        !          4068:        regs.z = ((WORD)(val)) == 0;
        !          4069:        regs.n = ((WORD)(val)) < 0;
        !          4070: regs.c = regs.x = carry!=0;
        !          4071:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4072: }}}}}}
        !          4073: void op_eb50(UWORD opcode)
        !          4074: {
        !          4075:        ULONG srcreg = 5;
        !          4076:        ULONG dstreg = (opcode & 7) >> 0;
        !          4077: {{     ULONG cnt = srcreg;
        !          4078: {      WORD data = regs.d[dstreg];
        !          4079: {      UWORD val = data;
        !          4080:        cnt &= 63;
        !          4081: {      int carry = 0;
        !          4082:        ULONG cmask = 0x8000;
        !          4083:        for(;cnt;--cnt){
        !          4084:        carry=val&cmask; val <<= 1;
        !          4085:        if(regs.x) val |= 1;
        !          4086:        regs.x = carry != 0;
        !          4087:        }
        !          4088:        regs.v = regs.c = 0;
        !          4089:        regs.z = ((WORD)(val)) == 0;
        !          4090:        regs.n = ((WORD)(val)) < 0;
        !          4091:        regs.x = regs.c = carry!=0;
        !          4092:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4093: }}}}}}
        !          4094: void op_eb58(UWORD opcode)
        !          4095: {
        !          4096:        ULONG srcreg = 5;
        !          4097:        ULONG dstreg = (opcode & 7) >> 0;
        !          4098: {{     ULONG cnt = srcreg;
        !          4099: {      WORD data = regs.d[dstreg];
        !          4100: {      UWORD val = data;
        !          4101:        cnt &= 63;
        !          4102: {      int carry = 0;
        !          4103:        ULONG cmask = 0x8000;
        !          4104:        for(;cnt;--cnt){
        !          4105:        carry=val&cmask; val <<= 1;
        !          4106:        if(carry)  val |= 1;
        !          4107:        }
        !          4108:        regs.v = regs.c = 0;
        !          4109:        regs.z = ((WORD)(val)) == 0;
        !          4110:        regs.n = ((WORD)(val)) < 0;
        !          4111: regs.c = carry!=0;
        !          4112:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4113: }}}}}}
        !          4114: void op_eb80(UWORD opcode)
        !          4115: {
        !          4116:        ULONG srcreg = 5;
        !          4117:        ULONG dstreg = (opcode & 7) >> 0;
        !          4118: {{     ULONG cnt = srcreg;
        !          4119: {      LONG data = regs.d[dstreg];
        !          4120: {      ULONG val = data;
        !          4121:        cnt &= 63;
        !          4122:        regs.v = 0;
        !          4123: {      ULONG cmask = 0x80000000;
        !          4124:        ULONG sign = cmask & val;
        !          4125:        for(;cnt;--cnt){
        !          4126:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          4127:        if ((val&cmask)!=sign)regs.v=1;
        !          4128:        }
        !          4129:        regs.n = (val&cmask) != 0;
        !          4130:        regs.z = val == 0;
        !          4131:        regs.d[dstreg] = (val);
        !          4132: }}}}}}
        !          4133: void op_eb88(UWORD opcode)
        !          4134: {
        !          4135:        ULONG srcreg = 5;
        !          4136:        ULONG dstreg = (opcode & 7) >> 0;
        !          4137: {{     ULONG cnt = srcreg;
        !          4138: {      LONG data = regs.d[dstreg];
        !          4139: {      ULONG val = data;
        !          4140:        cnt &= 63;
        !          4141: {      int carry = 0;
        !          4142:        ULONG cmask = 0x80000000;
        !          4143:        for(;cnt;--cnt){
        !          4144:        carry=val&cmask; val <<= 1;
        !          4145:        }
        !          4146:        regs.v = regs.c = 0;
        !          4147:        regs.z = ((LONG)(val)) == 0;
        !          4148:        regs.n = ((LONG)(val)) < 0;
        !          4149: regs.c = regs.x = carry!=0;
        !          4150:        regs.d[dstreg] = (val);
        !          4151: }}}}}}
        !          4152: void op_eb90(UWORD opcode)
        !          4153: {
        !          4154:        ULONG srcreg = 5;
        !          4155:        ULONG dstreg = (opcode & 7) >> 0;
        !          4156: {{     ULONG cnt = srcreg;
        !          4157: {      LONG data = regs.d[dstreg];
        !          4158: {      ULONG val = data;
        !          4159:        cnt &= 63;
        !          4160: {      int carry = 0;
        !          4161:        ULONG cmask = 0x80000000;
        !          4162:        for(;cnt;--cnt){
        !          4163:        carry=val&cmask; val <<= 1;
        !          4164:        if(regs.x) val |= 1;
        !          4165:        regs.x = carry != 0;
        !          4166:        }
        !          4167:        regs.v = regs.c = 0;
        !          4168:        regs.z = ((LONG)(val)) == 0;
        !          4169:        regs.n = ((LONG)(val)) < 0;
        !          4170:        regs.x = regs.c = carry!=0;
        !          4171:        regs.d[dstreg] = (val);
        !          4172: }}}}}}
        !          4173: void op_eb98(UWORD opcode)
        !          4174: {
        !          4175:        ULONG srcreg = 5;
        !          4176:        ULONG dstreg = (opcode & 7) >> 0;
        !          4177: {{     ULONG cnt = srcreg;
        !          4178: {      LONG data = regs.d[dstreg];
        !          4179: {      ULONG val = data;
        !          4180:        cnt &= 63;
        !          4181: {      int carry = 0;
        !          4182:        ULONG cmask = 0x80000000;
        !          4183:        for(;cnt;--cnt){
        !          4184:        carry=val&cmask; val <<= 1;
        !          4185:        if(carry)  val |= 1;
        !          4186:        }
        !          4187:        regs.v = regs.c = 0;
        !          4188:        regs.z = ((LONG)(val)) == 0;
        !          4189:        regs.n = ((LONG)(val)) < 0;
        !          4190: regs.c = carry!=0;
        !          4191:        regs.d[dstreg] = (val);
        !          4192: }}}}}}
        !          4193: void op_ec00(UWORD opcode)
        !          4194: {
        !          4195:        ULONG srcreg = 6;
        !          4196:        ULONG dstreg = (opcode & 7) >> 0;
        !          4197: {{     ULONG cnt = srcreg;
        !          4198: {      BYTE data = regs.d[dstreg];
        !          4199: {      UBYTE val = data;
        !          4200:        cnt &= 63;
        !          4201:        regs.v = 0;
        !          4202: {      ULONG cmask = 0x80;
        !          4203:        ULONG sign = cmask & val;
        !          4204:        for(;cnt;--cnt){
        !          4205:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          4206:        }
        !          4207:        regs.n = sign != 0;
        !          4208:        regs.z = val == 0;
        !          4209:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4210: }}}}}}
        !          4211: void op_ec08(UWORD opcode)
        !          4212: {
        !          4213:        ULONG srcreg = 6;
        !          4214:        ULONG dstreg = (opcode & 7) >> 0;
        !          4215: {{     ULONG cnt = srcreg;
        !          4216: {      BYTE data = regs.d[dstreg];
        !          4217: {      UBYTE val = data;
        !          4218:        cnt &= 63;
        !          4219: {      int carry = 0;
        !          4220:        for(;cnt;--cnt){
        !          4221:        carry=val&1; val >>= 1;
        !          4222:        }
        !          4223:        regs.v = regs.c = 0;
        !          4224:        regs.z = ((BYTE)(val)) == 0;
        !          4225:        regs.n = ((BYTE)(val)) < 0;
        !          4226: regs.c = regs.x = carry!=0;
        !          4227:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4228: }}}}}}
        !          4229: void op_ec10(UWORD opcode)
        !          4230: {
        !          4231:        ULONG srcreg = 6;
        !          4232:        ULONG dstreg = (opcode & 7) >> 0;
        !          4233: {{     ULONG cnt = srcreg;
        !          4234: {      BYTE data = regs.d[dstreg];
        !          4235: {      UBYTE val = data;
        !          4236:        cnt &= 63;
        !          4237: {      int carry = 0;
        !          4238:        ULONG cmask = 0x80;
        !          4239:        for(;cnt;--cnt){
        !          4240:        carry=val&1; val >>= 1;
        !          4241:        if(regs.x) val |= cmask;
        !          4242:        regs.x = carry != 0;
        !          4243:        }
        !          4244:        regs.v = regs.c = 0;
        !          4245:        regs.z = ((BYTE)(val)) == 0;
        !          4246:        regs.n = ((BYTE)(val)) < 0;
        !          4247:        regs.x = regs.c = carry!=0;
        !          4248:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4249: }}}}}}
        !          4250: void op_ec18(UWORD opcode)
        !          4251: {
        !          4252:        ULONG srcreg = 6;
        !          4253:        ULONG dstreg = (opcode & 7) >> 0;
        !          4254: {{     ULONG cnt = srcreg;
        !          4255: {      BYTE data = regs.d[dstreg];
        !          4256: {      UBYTE val = data;
        !          4257:        cnt &= 63;
        !          4258: {      int carry = 0;
        !          4259:        ULONG cmask = 0x80;
        !          4260:        for(;cnt;--cnt){
        !          4261:        carry=val&1; val = (ULONG)val >> 1;
        !          4262:        if(carry) val |= cmask;
        !          4263:        }
        !          4264:        regs.v = regs.c = 0;
        !          4265:        regs.z = ((BYTE)(val)) == 0;
        !          4266:        regs.n = ((BYTE)(val)) < 0;
        !          4267:        regs.c = carry!=0;
        !          4268:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4269: }}}}}}
        !          4270: void op_ec40(UWORD opcode)
        !          4271: {
        !          4272:        ULONG srcreg = 6;
        !          4273:        ULONG dstreg = (opcode & 7) >> 0;
        !          4274: {{     ULONG cnt = srcreg;
        !          4275: {      WORD data = regs.d[dstreg];
        !          4276: {      UWORD val = data;
        !          4277:        cnt &= 63;
        !          4278:        regs.v = 0;
        !          4279: {      ULONG cmask = 0x8000;
        !          4280:        ULONG sign = cmask & val;
        !          4281:        for(;cnt;--cnt){
        !          4282:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          4283:        }
        !          4284:        regs.n = sign != 0;
        !          4285:        regs.z = val == 0;
        !          4286:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4287: }}}}}}
        !          4288: void op_ec48(UWORD opcode)
        !          4289: {
        !          4290:        ULONG srcreg = 6;
        !          4291:        ULONG dstreg = (opcode & 7) >> 0;
        !          4292: {{     ULONG cnt = srcreg;
        !          4293: {      WORD data = regs.d[dstreg];
        !          4294: {      UWORD val = data;
        !          4295:        cnt &= 63;
        !          4296: {      int carry = 0;
        !          4297:        for(;cnt;--cnt){
        !          4298:        carry=val&1; val >>= 1;
        !          4299:        }
        !          4300:        regs.v = regs.c = 0;
        !          4301:        regs.z = ((WORD)(val)) == 0;
        !          4302:        regs.n = ((WORD)(val)) < 0;
        !          4303: regs.c = regs.x = carry!=0;
        !          4304:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4305: }}}}}}
        !          4306: void op_ec50(UWORD opcode)
        !          4307: {
        !          4308:        ULONG srcreg = 6;
        !          4309:        ULONG dstreg = (opcode & 7) >> 0;
        !          4310: {{     ULONG cnt = srcreg;
        !          4311: {      WORD data = regs.d[dstreg];
        !          4312: {      UWORD val = data;
        !          4313:        cnt &= 63;
        !          4314: {      int carry = 0;
        !          4315:        ULONG cmask = 0x8000;
        !          4316:        for(;cnt;--cnt){
        !          4317:        carry=val&1; val >>= 1;
        !          4318:        if(regs.x) val |= cmask;
        !          4319:        regs.x = carry != 0;
        !          4320:        }
        !          4321:        regs.v = regs.c = 0;
        !          4322:        regs.z = ((WORD)(val)) == 0;
        !          4323:        regs.n = ((WORD)(val)) < 0;
        !          4324:        regs.x = regs.c = carry!=0;
        !          4325:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4326: }}}}}}
        !          4327: void op_ec58(UWORD opcode)
        !          4328: {
        !          4329:        ULONG srcreg = 6;
        !          4330:        ULONG dstreg = (opcode & 7) >> 0;
        !          4331: {{     ULONG cnt = srcreg;
        !          4332: {      WORD data = regs.d[dstreg];
        !          4333: {      UWORD val = data;
        !          4334:        cnt &= 63;
        !          4335: {      int carry = 0;
        !          4336:        ULONG cmask = 0x8000;
        !          4337:        for(;cnt;--cnt){
        !          4338:        carry=val&1; val = (ULONG)val >> 1;
        !          4339:        if(carry) val |= cmask;
        !          4340:        }
        !          4341:        regs.v = regs.c = 0;
        !          4342:        regs.z = ((WORD)(val)) == 0;
        !          4343:        regs.n = ((WORD)(val)) < 0;
        !          4344:        regs.c = carry!=0;
        !          4345:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4346: }}}}}}
        !          4347: void op_ec80(UWORD opcode)
        !          4348: {
        !          4349:        ULONG srcreg = 6;
        !          4350:        ULONG dstreg = (opcode & 7) >> 0;
        !          4351: {{     ULONG cnt = srcreg;
        !          4352: {      LONG data = regs.d[dstreg];
        !          4353: {      ULONG val = data;
        !          4354:        cnt &= 63;
        !          4355:        regs.v = 0;
        !          4356: {      ULONG cmask = 0x80000000;
        !          4357:        ULONG sign = cmask & val;
        !          4358:        for(;cnt;--cnt){
        !          4359:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          4360:        }
        !          4361:        regs.n = sign != 0;
        !          4362:        regs.z = val == 0;
        !          4363:        regs.d[dstreg] = (val);
        !          4364: }}}}}}
        !          4365: void op_ec88(UWORD opcode)
        !          4366: {
        !          4367:        ULONG srcreg = 6;
        !          4368:        ULONG dstreg = (opcode & 7) >> 0;
        !          4369: {{     ULONG cnt = srcreg;
        !          4370: {      LONG data = regs.d[dstreg];
        !          4371: {      ULONG val = data;
        !          4372:        cnt &= 63;
        !          4373: {      int carry = 0;
        !          4374:        for(;cnt;--cnt){
        !          4375:        carry=val&1; val >>= 1;
        !          4376:        }
        !          4377:        regs.v = regs.c = 0;
        !          4378:        regs.z = ((LONG)(val)) == 0;
        !          4379:        regs.n = ((LONG)(val)) < 0;
        !          4380: regs.c = regs.x = carry!=0;
        !          4381:        regs.d[dstreg] = (val);
        !          4382: }}}}}}
        !          4383: void op_ec90(UWORD opcode)
        !          4384: {
        !          4385:        ULONG srcreg = 6;
        !          4386:        ULONG dstreg = (opcode & 7) >> 0;
        !          4387: {{     ULONG cnt = srcreg;
        !          4388: {      LONG data = regs.d[dstreg];
        !          4389: {      ULONG val = data;
        !          4390:        cnt &= 63;
        !          4391: {      int carry = 0;
        !          4392:        ULONG cmask = 0x80000000;
        !          4393:        for(;cnt;--cnt){
        !          4394:        carry=val&1; val >>= 1;
        !          4395:        if(regs.x) val |= cmask;
        !          4396:        regs.x = carry != 0;
        !          4397:        }
        !          4398:        regs.v = regs.c = 0;
        !          4399:        regs.z = ((LONG)(val)) == 0;
        !          4400:        regs.n = ((LONG)(val)) < 0;
        !          4401:        regs.x = regs.c = carry!=0;
        !          4402:        regs.d[dstreg] = (val);
        !          4403: }}}}}}
        !          4404: void op_ec98(UWORD opcode)
        !          4405: {
        !          4406:        ULONG srcreg = 6;
        !          4407:        ULONG dstreg = (opcode & 7) >> 0;
        !          4408: {{     ULONG cnt = srcreg;
        !          4409: {      LONG data = regs.d[dstreg];
        !          4410: {      ULONG val = data;
        !          4411:        cnt &= 63;
        !          4412: {      int carry = 0;
        !          4413:        ULONG cmask = 0x80000000;
        !          4414:        for(;cnt;--cnt){
        !          4415:        carry=val&1; val = (ULONG)val >> 1;
        !          4416:        if(carry) val |= cmask;
        !          4417:        }
        !          4418:        regs.v = regs.c = 0;
        !          4419:        regs.z = ((LONG)(val)) == 0;
        !          4420:        regs.n = ((LONG)(val)) < 0;
        !          4421:        regs.c = carry!=0;
        !          4422:        regs.d[dstreg] = (val);
        !          4423: }}}}}}
        !          4424: void op_ed00(UWORD opcode)
        !          4425: {
        !          4426:        ULONG srcreg = 6;
        !          4427:        ULONG dstreg = (opcode & 7) >> 0;
        !          4428: {{     ULONG cnt = srcreg;
        !          4429: {      BYTE data = regs.d[dstreg];
        !          4430: {      UBYTE val = data;
        !          4431:        cnt &= 63;
        !          4432:        regs.v = 0;
        !          4433: {      ULONG cmask = 0x80;
        !          4434:        ULONG sign = cmask & val;
        !          4435:        for(;cnt;--cnt){
        !          4436:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          4437:        if ((val&cmask)!=sign)regs.v=1;
        !          4438:        }
        !          4439:        regs.n = (val&cmask) != 0;
        !          4440:        regs.z = val == 0;
        !          4441:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4442: }}}}}}
        !          4443: void op_ed08(UWORD opcode)
        !          4444: {
        !          4445:        ULONG srcreg = 6;
        !          4446:        ULONG dstreg = (opcode & 7) >> 0;
        !          4447: {{     ULONG cnt = srcreg;
        !          4448: {      BYTE data = regs.d[dstreg];
        !          4449: {      UBYTE val = data;
        !          4450:        cnt &= 63;
        !          4451: {      int carry = 0;
        !          4452:        ULONG cmask = 0x80;
        !          4453:        for(;cnt;--cnt){
        !          4454:        carry=val&cmask; val <<= 1;
        !          4455:        }
        !          4456:        regs.v = regs.c = 0;
        !          4457:        regs.z = ((BYTE)(val)) == 0;
        !          4458:        regs.n = ((BYTE)(val)) < 0;
        !          4459: regs.c = regs.x = carry!=0;
        !          4460:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4461: }}}}}}
        !          4462: void op_ed10(UWORD opcode)
        !          4463: {
        !          4464:        ULONG srcreg = 6;
        !          4465:        ULONG dstreg = (opcode & 7) >> 0;
        !          4466: {{     ULONG cnt = srcreg;
        !          4467: {      BYTE data = regs.d[dstreg];
        !          4468: {      UBYTE val = data;
        !          4469:        cnt &= 63;
        !          4470: {      int carry = 0;
        !          4471:        ULONG cmask = 0x80;
        !          4472:        for(;cnt;--cnt){
        !          4473:        carry=val&cmask; val <<= 1;
        !          4474:        if(regs.x) val |= 1;
        !          4475:        regs.x = carry != 0;
        !          4476:        }
        !          4477:        regs.v = regs.c = 0;
        !          4478:        regs.z = ((BYTE)(val)) == 0;
        !          4479:        regs.n = ((BYTE)(val)) < 0;
        !          4480:        regs.x = regs.c = carry!=0;
        !          4481:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4482: }}}}}}
        !          4483: void op_ed18(UWORD opcode)
        !          4484: {
        !          4485:        ULONG srcreg = 6;
        !          4486:        ULONG dstreg = (opcode & 7) >> 0;
        !          4487: {{     ULONG cnt = srcreg;
        !          4488: {      BYTE data = regs.d[dstreg];
        !          4489: {      UBYTE val = data;
        !          4490:        cnt &= 63;
        !          4491: {      int carry = 0;
        !          4492:        ULONG cmask = 0x80;
        !          4493:        for(;cnt;--cnt){
        !          4494:        carry=val&cmask; val <<= 1;
        !          4495:        if(carry)  val |= 1;
        !          4496:        }
        !          4497:        regs.v = regs.c = 0;
        !          4498:        regs.z = ((BYTE)(val)) == 0;
        !          4499:        regs.n = ((BYTE)(val)) < 0;
        !          4500: regs.c = carry!=0;
        !          4501:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4502: }}}}}}
        !          4503: void op_ed40(UWORD opcode)
        !          4504: {
        !          4505:        ULONG srcreg = 6;
        !          4506:        ULONG dstreg = (opcode & 7) >> 0;
        !          4507: {{     ULONG cnt = srcreg;
        !          4508: {      WORD data = regs.d[dstreg];
        !          4509: {      UWORD val = data;
        !          4510:        cnt &= 63;
        !          4511:        regs.v = 0;
        !          4512: {      ULONG cmask = 0x8000;
        !          4513:        ULONG sign = cmask & val;
        !          4514:        for(;cnt;--cnt){
        !          4515:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          4516:        if ((val&cmask)!=sign)regs.v=1;
        !          4517:        }
        !          4518:        regs.n = (val&cmask) != 0;
        !          4519:        regs.z = val == 0;
        !          4520:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4521: }}}}}}
        !          4522: void op_ed48(UWORD opcode)
        !          4523: {
        !          4524:        ULONG srcreg = 6;
        !          4525:        ULONG dstreg = (opcode & 7) >> 0;
        !          4526: {{     ULONG cnt = srcreg;
        !          4527: {      WORD data = regs.d[dstreg];
        !          4528: {      UWORD val = data;
        !          4529:        cnt &= 63;
        !          4530: {      int carry = 0;
        !          4531:        ULONG cmask = 0x8000;
        !          4532:        for(;cnt;--cnt){
        !          4533:        carry=val&cmask; val <<= 1;
        !          4534:        }
        !          4535:        regs.v = regs.c = 0;
        !          4536:        regs.z = ((WORD)(val)) == 0;
        !          4537:        regs.n = ((WORD)(val)) < 0;
        !          4538: regs.c = regs.x = carry!=0;
        !          4539:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4540: }}}}}}
        !          4541: void op_ed50(UWORD opcode)
        !          4542: {
        !          4543:        ULONG srcreg = 6;
        !          4544:        ULONG dstreg = (opcode & 7) >> 0;
        !          4545: {{     ULONG cnt = srcreg;
        !          4546: {      WORD data = regs.d[dstreg];
        !          4547: {      UWORD val = data;
        !          4548:        cnt &= 63;
        !          4549: {      int carry = 0;
        !          4550:        ULONG cmask = 0x8000;
        !          4551:        for(;cnt;--cnt){
        !          4552:        carry=val&cmask; val <<= 1;
        !          4553:        if(regs.x) val |= 1;
        !          4554:        regs.x = carry != 0;
        !          4555:        }
        !          4556:        regs.v = regs.c = 0;
        !          4557:        regs.z = ((WORD)(val)) == 0;
        !          4558:        regs.n = ((WORD)(val)) < 0;
        !          4559:        regs.x = regs.c = carry!=0;
        !          4560:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4561: }}}}}}
        !          4562: void op_ed58(UWORD opcode)
        !          4563: {
        !          4564:        ULONG srcreg = 6;
        !          4565:        ULONG dstreg = (opcode & 7) >> 0;
        !          4566: {{     ULONG cnt = srcreg;
        !          4567: {      WORD data = regs.d[dstreg];
        !          4568: {      UWORD val = data;
        !          4569:        cnt &= 63;
        !          4570: {      int carry = 0;
        !          4571:        ULONG cmask = 0x8000;
        !          4572:        for(;cnt;--cnt){
        !          4573:        carry=val&cmask; val <<= 1;
        !          4574:        if(carry)  val |= 1;
        !          4575:        }
        !          4576:        regs.v = regs.c = 0;
        !          4577:        regs.z = ((WORD)(val)) == 0;
        !          4578:        regs.n = ((WORD)(val)) < 0;
        !          4579: regs.c = carry!=0;
        !          4580:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4581: }}}}}}
        !          4582: void op_ed80(UWORD opcode)
        !          4583: {
        !          4584:        ULONG srcreg = 6;
        !          4585:        ULONG dstreg = (opcode & 7) >> 0;
        !          4586: {{     ULONG cnt = srcreg;
        !          4587: {      LONG data = regs.d[dstreg];
        !          4588: {      ULONG val = data;
        !          4589:        cnt &= 63;
        !          4590:        regs.v = 0;
        !          4591: {      ULONG cmask = 0x80000000;
        !          4592:        ULONG sign = cmask & val;
        !          4593:        for(;cnt;--cnt){
        !          4594:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          4595:        if ((val&cmask)!=sign)regs.v=1;
        !          4596:        }
        !          4597:        regs.n = (val&cmask) != 0;
        !          4598:        regs.z = val == 0;
        !          4599:        regs.d[dstreg] = (val);
        !          4600: }}}}}}
        !          4601: void op_ed88(UWORD opcode)
        !          4602: {
        !          4603:        ULONG srcreg = 6;
        !          4604:        ULONG dstreg = (opcode & 7) >> 0;
        !          4605: {{     ULONG cnt = srcreg;
        !          4606: {      LONG data = regs.d[dstreg];
        !          4607: {      ULONG val = data;
        !          4608:        cnt &= 63;
        !          4609: {      int carry = 0;
        !          4610:        ULONG cmask = 0x80000000;
        !          4611:        for(;cnt;--cnt){
        !          4612:        carry=val&cmask; val <<= 1;
        !          4613:        }
        !          4614:        regs.v = regs.c = 0;
        !          4615:        regs.z = ((LONG)(val)) == 0;
        !          4616:        regs.n = ((LONG)(val)) < 0;
        !          4617: regs.c = regs.x = carry!=0;
        !          4618:        regs.d[dstreg] = (val);
        !          4619: }}}}}}
        !          4620: void op_ed90(UWORD opcode)
        !          4621: {
        !          4622:        ULONG srcreg = 6;
        !          4623:        ULONG dstreg = (opcode & 7) >> 0;
        !          4624: {{     ULONG cnt = srcreg;
        !          4625: {      LONG data = regs.d[dstreg];
        !          4626: {      ULONG val = data;
        !          4627:        cnt &= 63;
        !          4628: {      int carry = 0;
        !          4629:        ULONG cmask = 0x80000000;
        !          4630:        for(;cnt;--cnt){
        !          4631:        carry=val&cmask; val <<= 1;
        !          4632:        if(regs.x) val |= 1;
        !          4633:        regs.x = carry != 0;
        !          4634:        }
        !          4635:        regs.v = regs.c = 0;
        !          4636:        regs.z = ((LONG)(val)) == 0;
        !          4637:        regs.n = ((LONG)(val)) < 0;
        !          4638:        regs.x = regs.c = carry!=0;
        !          4639:        regs.d[dstreg] = (val);
        !          4640: }}}}}}
        !          4641: void op_ed98(UWORD opcode)
        !          4642: {
        !          4643:        ULONG srcreg = 6;
        !          4644:        ULONG dstreg = (opcode & 7) >> 0;
        !          4645: {{     ULONG cnt = srcreg;
        !          4646: {      LONG data = regs.d[dstreg];
        !          4647: {      ULONG val = data;
        !          4648:        cnt &= 63;
        !          4649: {      int carry = 0;
        !          4650:        ULONG cmask = 0x80000000;
        !          4651:        for(;cnt;--cnt){
        !          4652:        carry=val&cmask; val <<= 1;
        !          4653:        if(carry)  val |= 1;
        !          4654:        }
        !          4655:        regs.v = regs.c = 0;
        !          4656:        regs.z = ((LONG)(val)) == 0;
        !          4657:        regs.n = ((LONG)(val)) < 0;
        !          4658: regs.c = carry!=0;
        !          4659:        regs.d[dstreg] = (val);
        !          4660: }}}}}}
        !          4661: void op_ee00(UWORD opcode)
        !          4662: {
        !          4663:        ULONG srcreg = 7;
        !          4664:        ULONG dstreg = (opcode & 7) >> 0;
        !          4665: {{     ULONG cnt = srcreg;
        !          4666: {      BYTE data = regs.d[dstreg];
        !          4667: {      UBYTE val = data;
        !          4668:        cnt &= 63;
        !          4669:        regs.v = 0;
        !          4670: {      ULONG cmask = 0x80;
        !          4671:        ULONG sign = cmask & val;
        !          4672:        for(;cnt;--cnt){
        !          4673:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          4674:        }
        !          4675:        regs.n = sign != 0;
        !          4676:        regs.z = val == 0;
        !          4677:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4678: }}}}}}
        !          4679: void op_ee08(UWORD opcode)
        !          4680: {
        !          4681:        ULONG srcreg = 7;
        !          4682:        ULONG dstreg = (opcode & 7) >> 0;
        !          4683: {{     ULONG cnt = srcreg;
        !          4684: {      BYTE data = regs.d[dstreg];
        !          4685: {      UBYTE val = data;
        !          4686:        cnt &= 63;
        !          4687: {      int carry = 0;
        !          4688:        for(;cnt;--cnt){
        !          4689:        carry=val&1; val >>= 1;
        !          4690:        }
        !          4691:        regs.v = regs.c = 0;
        !          4692:        regs.z = ((BYTE)(val)) == 0;
        !          4693:        regs.n = ((BYTE)(val)) < 0;
        !          4694: regs.c = regs.x = carry!=0;
        !          4695:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4696: }}}}}}
        !          4697: void op_ee10(UWORD opcode)
        !          4698: {
        !          4699:        ULONG srcreg = 7;
        !          4700:        ULONG dstreg = (opcode & 7) >> 0;
        !          4701: {{     ULONG cnt = srcreg;
        !          4702: {      BYTE data = regs.d[dstreg];
        !          4703: {      UBYTE val = data;
        !          4704:        cnt &= 63;
        !          4705: {      int carry = 0;
        !          4706:        ULONG cmask = 0x80;
        !          4707:        for(;cnt;--cnt){
        !          4708:        carry=val&1; val >>= 1;
        !          4709:        if(regs.x) val |= cmask;
        !          4710:        regs.x = carry != 0;
        !          4711:        }
        !          4712:        regs.v = regs.c = 0;
        !          4713:        regs.z = ((BYTE)(val)) == 0;
        !          4714:        regs.n = ((BYTE)(val)) < 0;
        !          4715:        regs.x = regs.c = carry!=0;
        !          4716:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4717: }}}}}}
        !          4718: void op_ee18(UWORD opcode)
        !          4719: {
        !          4720:        ULONG srcreg = 7;
        !          4721:        ULONG dstreg = (opcode & 7) >> 0;
        !          4722: {{     ULONG cnt = srcreg;
        !          4723: {      BYTE data = regs.d[dstreg];
        !          4724: {      UBYTE val = data;
        !          4725:        cnt &= 63;
        !          4726: {      int carry = 0;
        !          4727:        ULONG cmask = 0x80;
        !          4728:        for(;cnt;--cnt){
        !          4729:        carry=val&1; val = (ULONG)val >> 1;
        !          4730:        if(carry) val |= cmask;
        !          4731:        }
        !          4732:        regs.v = regs.c = 0;
        !          4733:        regs.z = ((BYTE)(val)) == 0;
        !          4734:        regs.n = ((BYTE)(val)) < 0;
        !          4735:        regs.c = carry!=0;
        !          4736:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4737: }}}}}}
        !          4738: void op_ee40(UWORD opcode)
        !          4739: {
        !          4740:        ULONG srcreg = 7;
        !          4741:        ULONG dstreg = (opcode & 7) >> 0;
        !          4742: {{     ULONG cnt = srcreg;
        !          4743: {      WORD data = regs.d[dstreg];
        !          4744: {      UWORD val = data;
        !          4745:        cnt &= 63;
        !          4746:        regs.v = 0;
        !          4747: {      ULONG cmask = 0x8000;
        !          4748:        ULONG sign = cmask & val;
        !          4749:        for(;cnt;--cnt){
        !          4750:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          4751:        }
        !          4752:        regs.n = sign != 0;
        !          4753:        regs.z = val == 0;
        !          4754:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4755: }}}}}}
        !          4756: void op_ee48(UWORD opcode)
        !          4757: {
        !          4758:        ULONG srcreg = 7;
        !          4759:        ULONG dstreg = (opcode & 7) >> 0;
        !          4760: {{     ULONG cnt = srcreg;
        !          4761: {      WORD data = regs.d[dstreg];
        !          4762: {      UWORD val = data;
        !          4763:        cnt &= 63;
        !          4764: {      int carry = 0;
        !          4765:        for(;cnt;--cnt){
        !          4766:        carry=val&1; val >>= 1;
        !          4767:        }
        !          4768:        regs.v = regs.c = 0;
        !          4769:        regs.z = ((WORD)(val)) == 0;
        !          4770:        regs.n = ((WORD)(val)) < 0;
        !          4771: regs.c = regs.x = carry!=0;
        !          4772:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4773: }}}}}}
        !          4774: void op_ee50(UWORD opcode)
        !          4775: {
        !          4776:        ULONG srcreg = 7;
        !          4777:        ULONG dstreg = (opcode & 7) >> 0;
        !          4778: {{     ULONG cnt = srcreg;
        !          4779: {      WORD data = regs.d[dstreg];
        !          4780: {      UWORD val = data;
        !          4781:        cnt &= 63;
        !          4782: {      int carry = 0;
        !          4783:        ULONG cmask = 0x8000;
        !          4784:        for(;cnt;--cnt){
        !          4785:        carry=val&1; val >>= 1;
        !          4786:        if(regs.x) val |= cmask;
        !          4787:        regs.x = carry != 0;
        !          4788:        }
        !          4789:        regs.v = regs.c = 0;
        !          4790:        regs.z = ((WORD)(val)) == 0;
        !          4791:        regs.n = ((WORD)(val)) < 0;
        !          4792:        regs.x = regs.c = carry!=0;
        !          4793:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4794: }}}}}}
        !          4795: void op_ee58(UWORD opcode)
        !          4796: {
        !          4797:        ULONG srcreg = 7;
        !          4798:        ULONG dstreg = (opcode & 7) >> 0;
        !          4799: {{     ULONG cnt = srcreg;
        !          4800: {      WORD data = regs.d[dstreg];
        !          4801: {      UWORD val = data;
        !          4802:        cnt &= 63;
        !          4803: {      int carry = 0;
        !          4804:        ULONG cmask = 0x8000;
        !          4805:        for(;cnt;--cnt){
        !          4806:        carry=val&1; val = (ULONG)val >> 1;
        !          4807:        if(carry) val |= cmask;
        !          4808:        }
        !          4809:        regs.v = regs.c = 0;
        !          4810:        regs.z = ((WORD)(val)) == 0;
        !          4811:        regs.n = ((WORD)(val)) < 0;
        !          4812:        regs.c = carry!=0;
        !          4813:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4814: }}}}}}
        !          4815: void op_ee80(UWORD opcode)
        !          4816: {
        !          4817:        ULONG srcreg = 7;
        !          4818:        ULONG dstreg = (opcode & 7) >> 0;
        !          4819: {{     ULONG cnt = srcreg;
        !          4820: {      LONG data = regs.d[dstreg];
        !          4821: {      ULONG val = data;
        !          4822:        cnt &= 63;
        !          4823:        regs.v = 0;
        !          4824: {      ULONG cmask = 0x80000000;
        !          4825:        ULONG sign = cmask & val;
        !          4826:        for(;cnt;--cnt){
        !          4827:        regs.c=regs.x=val&1; val = ((ULONG)val >> 1) | sign;
        !          4828:        }
        !          4829:        regs.n = sign != 0;
        !          4830:        regs.z = val == 0;
        !          4831:        regs.d[dstreg] = (val);
        !          4832: }}}}}}
        !          4833: void op_ee88(UWORD opcode)
        !          4834: {
        !          4835:        ULONG srcreg = 7;
        !          4836:        ULONG dstreg = (opcode & 7) >> 0;
        !          4837: {{     ULONG cnt = srcreg;
        !          4838: {      LONG data = regs.d[dstreg];
        !          4839: {      ULONG val = data;
        !          4840:        cnt &= 63;
        !          4841: {      int carry = 0;
        !          4842:        for(;cnt;--cnt){
        !          4843:        carry=val&1; val >>= 1;
        !          4844:        }
        !          4845:        regs.v = regs.c = 0;
        !          4846:        regs.z = ((LONG)(val)) == 0;
        !          4847:        regs.n = ((LONG)(val)) < 0;
        !          4848: regs.c = regs.x = carry!=0;
        !          4849:        regs.d[dstreg] = (val);
        !          4850: }}}}}}
        !          4851: void op_ee90(UWORD opcode)
        !          4852: {
        !          4853:        ULONG srcreg = 7;
        !          4854:        ULONG dstreg = (opcode & 7) >> 0;
        !          4855: {{     ULONG cnt = srcreg;
        !          4856: {      LONG data = regs.d[dstreg];
        !          4857: {      ULONG val = data;
        !          4858:        cnt &= 63;
        !          4859: {      int carry = 0;
        !          4860:        ULONG cmask = 0x80000000;
        !          4861:        for(;cnt;--cnt){
        !          4862:        carry=val&1; val >>= 1;
        !          4863:        if(regs.x) val |= cmask;
        !          4864:        regs.x = carry != 0;
        !          4865:        }
        !          4866:        regs.v = regs.c = 0;
        !          4867:        regs.z = ((LONG)(val)) == 0;
        !          4868:        regs.n = ((LONG)(val)) < 0;
        !          4869:        regs.x = regs.c = carry!=0;
        !          4870:        regs.d[dstreg] = (val);
        !          4871: }}}}}}
        !          4872: void op_ee98(UWORD opcode)
        !          4873: {
        !          4874:        ULONG srcreg = 7;
        !          4875:        ULONG dstreg = (opcode & 7) >> 0;
        !          4876: {{     ULONG cnt = srcreg;
        !          4877: {      LONG data = regs.d[dstreg];
        !          4878: {      ULONG val = data;
        !          4879:        cnt &= 63;
        !          4880: {      int carry = 0;
        !          4881:        ULONG cmask = 0x80000000;
        !          4882:        for(;cnt;--cnt){
        !          4883:        carry=val&1; val = (ULONG)val >> 1;
        !          4884:        if(carry) val |= cmask;
        !          4885:        }
        !          4886:        regs.v = regs.c = 0;
        !          4887:        regs.z = ((LONG)(val)) == 0;
        !          4888:        regs.n = ((LONG)(val)) < 0;
        !          4889:        regs.c = carry!=0;
        !          4890:        regs.d[dstreg] = (val);
        !          4891: }}}}}}
        !          4892: void op_ef00(UWORD opcode)
        !          4893: {
        !          4894:        ULONG srcreg = 7;
        !          4895:        ULONG dstreg = (opcode & 7) >> 0;
        !          4896: {{     ULONG cnt = srcreg;
        !          4897: {      BYTE data = regs.d[dstreg];
        !          4898: {      UBYTE val = data;
        !          4899:        cnt &= 63;
        !          4900:        regs.v = 0;
        !          4901: {      ULONG cmask = 0x80;
        !          4902:        ULONG sign = cmask & val;
        !          4903:        for(;cnt;--cnt){
        !          4904:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          4905:        if ((val&cmask)!=sign)regs.v=1;
        !          4906:        }
        !          4907:        regs.n = (val&cmask) != 0;
        !          4908:        regs.z = val == 0;
        !          4909:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4910: }}}}}}
        !          4911: void op_ef08(UWORD opcode)
        !          4912: {
        !          4913:        ULONG srcreg = 7;
        !          4914:        ULONG dstreg = (opcode & 7) >> 0;
        !          4915: {{     ULONG cnt = srcreg;
        !          4916: {      BYTE data = regs.d[dstreg];
        !          4917: {      UBYTE val = data;
        !          4918:        cnt &= 63;
        !          4919: {      int carry = 0;
        !          4920:        ULONG cmask = 0x80;
        !          4921:        for(;cnt;--cnt){
        !          4922:        carry=val&cmask; val <<= 1;
        !          4923:        }
        !          4924:        regs.v = regs.c = 0;
        !          4925:        regs.z = ((BYTE)(val)) == 0;
        !          4926:        regs.n = ((BYTE)(val)) < 0;
        !          4927: regs.c = regs.x = carry!=0;
        !          4928:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4929: }}}}}}
        !          4930: void op_ef10(UWORD opcode)
        !          4931: {
        !          4932:        ULONG srcreg = 7;
        !          4933:        ULONG dstreg = (opcode & 7) >> 0;
        !          4934: {{     ULONG cnt = srcreg;
        !          4935: {      BYTE data = regs.d[dstreg];
        !          4936: {      UBYTE val = data;
        !          4937:        cnt &= 63;
        !          4938: {      int carry = 0;
        !          4939:        ULONG cmask = 0x80;
        !          4940:        for(;cnt;--cnt){
        !          4941:        carry=val&cmask; val <<= 1;
        !          4942:        if(regs.x) val |= 1;
        !          4943:        regs.x = carry != 0;
        !          4944:        }
        !          4945:        regs.v = regs.c = 0;
        !          4946:        regs.z = ((BYTE)(val)) == 0;
        !          4947:        regs.n = ((BYTE)(val)) < 0;
        !          4948:        regs.x = regs.c = carry!=0;
        !          4949:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4950: }}}}}}
        !          4951: void op_ef18(UWORD opcode)
        !          4952: {
        !          4953:        ULONG srcreg = 7;
        !          4954:        ULONG dstreg = (opcode & 7) >> 0;
        !          4955: {{     ULONG cnt = srcreg;
        !          4956: {      BYTE data = regs.d[dstreg];
        !          4957: {      UBYTE val = data;
        !          4958:        cnt &= 63;
        !          4959: {      int carry = 0;
        !          4960:        ULONG cmask = 0x80;
        !          4961:        for(;cnt;--cnt){
        !          4962:        carry=val&cmask; val <<= 1;
        !          4963:        if(carry)  val |= 1;
        !          4964:        }
        !          4965:        regs.v = regs.c = 0;
        !          4966:        regs.z = ((BYTE)(val)) == 0;
        !          4967:        regs.n = ((BYTE)(val)) < 0;
        !          4968: regs.c = carry!=0;
        !          4969:        regs.d[dstreg] &= ~0xff; regs.d[dstreg] |= (val) & 0xff;
        !          4970: }}}}}}
        !          4971: void op_ef40(UWORD opcode)
        !          4972: {
        !          4973:        ULONG srcreg = 7;
        !          4974:        ULONG dstreg = (opcode & 7) >> 0;
        !          4975: {{     ULONG cnt = srcreg;
        !          4976: {      WORD data = regs.d[dstreg];
        !          4977: {      UWORD val = data;
        !          4978:        cnt &= 63;
        !          4979:        regs.v = 0;
        !          4980: {      ULONG cmask = 0x8000;
        !          4981:        ULONG sign = cmask & val;
        !          4982:        for(;cnt;--cnt){
        !          4983:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          4984:        if ((val&cmask)!=sign)regs.v=1;
        !          4985:        }
        !          4986:        regs.n = (val&cmask) != 0;
        !          4987:        regs.z = val == 0;
        !          4988:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          4989: }}}}}}
        !          4990: void op_ef48(UWORD opcode)
        !          4991: {
        !          4992:        ULONG srcreg = 7;
        !          4993:        ULONG dstreg = (opcode & 7) >> 0;
        !          4994: {{     ULONG cnt = srcreg;
        !          4995: {      WORD data = regs.d[dstreg];
        !          4996: {      UWORD val = data;
        !          4997:        cnt &= 63;
        !          4998: {      int carry = 0;
        !          4999:        ULONG cmask = 0x8000;
        !          5000:        for(;cnt;--cnt){
        !          5001:        carry=val&cmask; val <<= 1;
        !          5002:        }
        !          5003:        regs.v = regs.c = 0;
        !          5004:        regs.z = ((WORD)(val)) == 0;
        !          5005:        regs.n = ((WORD)(val)) < 0;
        !          5006: regs.c = regs.x = carry!=0;
        !          5007:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          5008: }}}}}}
        !          5009: void op_ef50(UWORD opcode)
        !          5010: {
        !          5011:        ULONG srcreg = 7;
        !          5012:        ULONG dstreg = (opcode & 7) >> 0;
        !          5013: {{     ULONG cnt = srcreg;
        !          5014: {      WORD data = regs.d[dstreg];
        !          5015: {      UWORD val = data;
        !          5016:        cnt &= 63;
        !          5017: {      int carry = 0;
        !          5018:        ULONG cmask = 0x8000;
        !          5019:        for(;cnt;--cnt){
        !          5020:        carry=val&cmask; val <<= 1;
        !          5021:        if(regs.x) val |= 1;
        !          5022:        regs.x = carry != 0;
        !          5023:        }
        !          5024:        regs.v = regs.c = 0;
        !          5025:        regs.z = ((WORD)(val)) == 0;
        !          5026:        regs.n = ((WORD)(val)) < 0;
        !          5027:        regs.x = regs.c = carry!=0;
        !          5028:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          5029: }}}}}}
        !          5030: void op_ef58(UWORD opcode)
        !          5031: {
        !          5032:        ULONG srcreg = 7;
        !          5033:        ULONG dstreg = (opcode & 7) >> 0;
        !          5034: {{     ULONG cnt = srcreg;
        !          5035: {      WORD data = regs.d[dstreg];
        !          5036: {      UWORD val = data;
        !          5037:        cnt &= 63;
        !          5038: {      int carry = 0;
        !          5039:        ULONG cmask = 0x8000;
        !          5040:        for(;cnt;--cnt){
        !          5041:        carry=val&cmask; val <<= 1;
        !          5042:        if(carry)  val |= 1;
        !          5043:        }
        !          5044:        regs.v = regs.c = 0;
        !          5045:        regs.z = ((WORD)(val)) == 0;
        !          5046:        regs.n = ((WORD)(val)) < 0;
        !          5047: regs.c = carry!=0;
        !          5048:        regs.d[dstreg] &= ~0xffff; regs.d[dstreg] |= (val) & 0xffff;
        !          5049: }}}}}}
        !          5050: void op_ef80(UWORD opcode)
        !          5051: {
        !          5052:        ULONG srcreg = 7;
        !          5053:        ULONG dstreg = (opcode & 7) >> 0;
        !          5054: {{     ULONG cnt = srcreg;
        !          5055: {      LONG data = regs.d[dstreg];
        !          5056: {      ULONG val = data;
        !          5057:        cnt &= 63;
        !          5058:        regs.v = 0;
        !          5059: {      ULONG cmask = 0x80000000;
        !          5060:        ULONG sign = cmask & val;
        !          5061:        for(;cnt;--cnt){
        !          5062:        regs.c=regs.x=(val&cmask)!=0; val <<= 1;
        !          5063:        if ((val&cmask)!=sign)regs.v=1;
        !          5064:        }
        !          5065:        regs.n = (val&cmask) != 0;
        !          5066:        regs.z = val == 0;
        !          5067:        regs.d[dstreg] = (val);
        !          5068: }}}}}}
        !          5069: void op_ef88(UWORD opcode)
        !          5070: {
        !          5071:        ULONG srcreg = 7;
        !          5072:        ULONG dstreg = (opcode & 7) >> 0;
        !          5073: {{     ULONG cnt = srcreg;
        !          5074: {      LONG data = regs.d[dstreg];
        !          5075: {      ULONG val = data;
        !          5076:        cnt &= 63;
        !          5077: {      int carry = 0;
        !          5078:        ULONG cmask = 0x80000000;
        !          5079:        for(;cnt;--cnt){
        !          5080:        carry=val&cmask; val <<= 1;
        !          5081:        }
        !          5082:        regs.v = regs.c = 0;
        !          5083:        regs.z = ((LONG)(val)) == 0;
        !          5084:        regs.n = ((LONG)(val)) < 0;
        !          5085: regs.c = regs.x = carry!=0;
        !          5086:        regs.d[dstreg] = (val);
        !          5087: }}}}}}
        !          5088: void op_ef90(UWORD opcode)
        !          5089: {
        !          5090:        ULONG srcreg = 7;
        !          5091:        ULONG dstreg = (opcode & 7) >> 0;
        !          5092: {{     ULONG cnt = srcreg;
        !          5093: {      LONG data = regs.d[dstreg];
        !          5094: {      ULONG val = data;
        !          5095:        cnt &= 63;
        !          5096: {      int carry = 0;
        !          5097:        ULONG cmask = 0x80000000;
        !          5098:        for(;cnt;--cnt){
        !          5099:        carry=val&cmask; val <<= 1;
        !          5100:        if(regs.x) val |= 1;
        !          5101:        regs.x = carry != 0;
        !          5102:        }
        !          5103:        regs.v = regs.c = 0;
        !          5104:        regs.z = ((LONG)(val)) == 0;
        !          5105:        regs.n = ((LONG)(val)) < 0;
        !          5106:        regs.x = regs.c = carry!=0;
        !          5107:        regs.d[dstreg] = (val);
        !          5108: }}}}}}
        !          5109: void op_ef98(UWORD opcode)
        !          5110: {
        !          5111:        ULONG srcreg = 7;
        !          5112:        ULONG dstreg = (opcode & 7) >> 0;
        !          5113: {{     ULONG cnt = srcreg;
        !          5114: {      LONG data = regs.d[dstreg];
        !          5115: {      ULONG val = data;
        !          5116:        cnt &= 63;
        !          5117: {      int carry = 0;
        !          5118:        ULONG cmask = 0x80000000;
        !          5119:        for(;cnt;--cnt){
        !          5120:        carry=val&cmask; val <<= 1;
        !          5121:        if(carry)  val |= 1;
        !          5122:        }
        !          5123:        regs.v = regs.c = 0;
        !          5124:        regs.z = ((LONG)(val)) == 0;
        !          5125:        regs.n = ((LONG)(val)) < 0;
        !          5126: regs.c = carry!=0;
        !          5127:        regs.d[dstreg] = (val);
        !          5128: }}}}}}

unix.superglobalmegacorp.com

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