Annotation of generator/src/out/cpu68k-e.c, revision 1.1

1.1     ! root        1: /*****************************************************************************/
        !             2: /*     Generator - Sega Genesis emulation - (c) James Ponder 1997-1998       */
        !             3: /*****************************************************************************/
        !             4: /*                                                                           */
        !             5: /* cpu68k-e.c                                                                */
        !             6: /*                                                                           */
        !             7: /*****************************************************************************/
        !             8: 
        !             9: #include "generator.h"
        !            10: #include "cpu68k.h"
        !            11: #include "mem68k.h"
        !            12: #include "reg68k.h"
        !            13: 
        !            14: #include "cpu68k-inline.h"
        !            15: 
        !            16: #include <stdio.h>
        !            17: 
        !            18: void cpu_op_1484a(t_ipc *ipc) /* ASR */ {
        !            19:   /* mask f1f8, bits e000, mnemonic 66, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !            20:   unsigned int srcdata = ipc->src;
        !            21:   int dstreg = (ipc->opcode >> 0) & 7;
        !            22:   uint8 dstdata = DATAREG(dstreg);
        !            23:   uint8 bits = 8;
        !            24:   uint8 count = srcdata & 63;
        !            25:   uint8 outdata = ((sint8)dstdata) >> (count > 7 ? 7 : count);
        !            26: 
        !            27:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !            28:   PC+= 2;
        !            29: }
        !            30: 
        !            31: void cpu_op_1484b(t_ipc *ipc) /* ASR */ {
        !            32:   /* mask f1f8, bits e000, mnemonic 66, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !            33:   unsigned int srcdata = ipc->src;
        !            34:   int dstreg = (ipc->opcode >> 0) & 7;
        !            35:   uint8 dstdata = DATAREG(dstreg);
        !            36:   uint8 bits = 8;
        !            37:   uint8 count = srcdata & 63;
        !            38:   uint8 outdata = ((sint8)dstdata) >> (count > 7 ? 7 : count);
        !            39: 
        !            40:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !            41: 
        !            42:   if (!srcdata)
        !            43:     CFLAG = 0;
        !            44:   else if (srcdata >= bits) {
        !            45:     CFLAG = dstdata>>(bits-1);
        !            46:     XFLAG = dstdata>>(bits-1);
        !            47:   } else {
        !            48:     CFLAG = dstdata>>(count-1) & 1;
        !            49:     XFLAG = dstdata>>(count-1) & 1;
        !            50:   }
        !            51:   VFLAG = 0;
        !            52:   NFLAG = ((sint8)outdata) < 0;
        !            53:   ZFLAG = !outdata;
        !            54:   PC+= 2;
        !            55: }
        !            56: 
        !            57: void cpu_op_1485a(t_ipc *ipc) /* ASR */ {
        !            58:   /* mask f1f8, bits e040, mnemonic 66, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !            59:   unsigned int srcdata = ipc->src;
        !            60:   int dstreg = (ipc->opcode >> 0) & 7;
        !            61:   uint16 dstdata = DATAREG(dstreg);
        !            62:   uint8 bits = 16;
        !            63:   uint8 count = srcdata & 63;
        !            64:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !            65: 
        !            66:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !            67:   PC+= 2;
        !            68: }
        !            69: 
        !            70: void cpu_op_1485b(t_ipc *ipc) /* ASR */ {
        !            71:   /* mask f1f8, bits e040, mnemonic 66, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !            72:   unsigned int srcdata = ipc->src;
        !            73:   int dstreg = (ipc->opcode >> 0) & 7;
        !            74:   uint16 dstdata = DATAREG(dstreg);
        !            75:   uint8 bits = 16;
        !            76:   uint8 count = srcdata & 63;
        !            77:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !            78: 
        !            79:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !            80: 
        !            81:   if (!srcdata)
        !            82:     CFLAG = 0;
        !            83:   else if (srcdata >= bits) {
        !            84:     CFLAG = dstdata>>(bits-1);
        !            85:     XFLAG = dstdata>>(bits-1);
        !            86:   } else {
        !            87:     CFLAG = dstdata>>(count-1) & 1;
        !            88:     XFLAG = dstdata>>(count-1) & 1;
        !            89:   }
        !            90:   VFLAG = 0;
        !            91:   NFLAG = ((sint16)outdata) < 0;
        !            92:   ZFLAG = !outdata;
        !            93:   PC+= 2;
        !            94: }
        !            95: 
        !            96: void cpu_op_1486a(t_ipc *ipc) /* ASR */ {
        !            97:   /* mask f1f8, bits e080, mnemonic 66, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !            98:   unsigned int srcdata = ipc->src;
        !            99:   int dstreg = (ipc->opcode >> 0) & 7;
        !           100:   uint32 dstdata = DATAREG(dstreg);
        !           101:   uint8 bits = 32;
        !           102:   uint8 count = srcdata & 63;
        !           103:   uint32 outdata = ((sint32)dstdata) >> (count > 31 ? 31 : count);
        !           104: 
        !           105:   DATAREG(dstreg) = outdata;
        !           106:   PC+= 2;
        !           107: }
        !           108: 
        !           109: void cpu_op_1486b(t_ipc *ipc) /* ASR */ {
        !           110:   /* mask f1f8, bits e080, mnemonic 66, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           111:   unsigned int srcdata = ipc->src;
        !           112:   int dstreg = (ipc->opcode >> 0) & 7;
        !           113:   uint32 dstdata = DATAREG(dstreg);
        !           114:   uint8 bits = 32;
        !           115:   uint8 count = srcdata & 63;
        !           116:   uint32 outdata = ((sint32)dstdata) >> (count > 31 ? 31 : count);
        !           117: 
        !           118:   DATAREG(dstreg) = outdata;
        !           119: 
        !           120:   if (!srcdata)
        !           121:     CFLAG = 0;
        !           122:   else if (srcdata >= bits) {
        !           123:     CFLAG = dstdata>>(bits-1);
        !           124:     XFLAG = dstdata>>(bits-1);
        !           125:   } else {
        !           126:     CFLAG = dstdata>>(count-1) & 1;
        !           127:     XFLAG = dstdata>>(count-1) & 1;
        !           128:   }
        !           129:   VFLAG = 0;
        !           130:   NFLAG = ((sint32)outdata) < 0;
        !           131:   ZFLAG = !outdata;
        !           132:   PC+= 2;
        !           133: }
        !           134: 
        !           135: void cpu_op_1487a(t_ipc *ipc) /* LSR */ {
        !           136:   /* mask f1f8, bits e008, mnemonic 67, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           137:   unsigned int srcdata = ipc->src;
        !           138:   int dstreg = (ipc->opcode >> 0) & 7;
        !           139:   uint8 dstdata = DATAREG(dstreg);
        !           140:   uint8 bits = 8;
        !           141:   uint8 count = srcdata & 63;
        !           142:   uint8 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !           143: 
        !           144:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           145:   PC+= 2;
        !           146: }
        !           147: 
        !           148: void cpu_op_1487b(t_ipc *ipc) /* LSR */ {
        !           149:   /* mask f1f8, bits e008, mnemonic 67, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           150:   unsigned int srcdata = ipc->src;
        !           151:   int dstreg = (ipc->opcode >> 0) & 7;
        !           152:   uint8 dstdata = DATAREG(dstreg);
        !           153:   uint8 bits = 8;
        !           154:   uint8 count = srcdata & 63;
        !           155:   uint8 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !           156: 
        !           157:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           158: 
        !           159:   if (!count)
        !           160:     CFLAG = 0;
        !           161:   else if (count >= bits) {
        !           162:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !           163:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !           164:   } else {
        !           165:     CFLAG = dstdata>>(count-1) & 1;
        !           166:     XFLAG = dstdata>>(count-1) & 1;
        !           167:   }
        !           168:   VFLAG = 0;
        !           169:   NFLAG = ((sint8)outdata) < 0;
        !           170:   ZFLAG = !outdata;
        !           171:   PC+= 2;
        !           172: }
        !           173: 
        !           174: void cpu_op_1488a(t_ipc *ipc) /* LSR */ {
        !           175:   /* mask f1f8, bits e048, mnemonic 67, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           176:   unsigned int srcdata = ipc->src;
        !           177:   int dstreg = (ipc->opcode >> 0) & 7;
        !           178:   uint16 dstdata = DATAREG(dstreg);
        !           179:   uint8 bits = 16;
        !           180:   uint8 count = srcdata & 63;
        !           181:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !           182: 
        !           183:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !           184:   PC+= 2;
        !           185: }
        !           186: 
        !           187: void cpu_op_1488b(t_ipc *ipc) /* LSR */ {
        !           188:   /* mask f1f8, bits e048, mnemonic 67, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           189:   unsigned int srcdata = ipc->src;
        !           190:   int dstreg = (ipc->opcode >> 0) & 7;
        !           191:   uint16 dstdata = DATAREG(dstreg);
        !           192:   uint8 bits = 16;
        !           193:   uint8 count = srcdata & 63;
        !           194:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !           195: 
        !           196:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !           197: 
        !           198:   if (!count)
        !           199:     CFLAG = 0;
        !           200:   else if (count >= bits) {
        !           201:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !           202:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !           203:   } else {
        !           204:     CFLAG = dstdata>>(count-1) & 1;
        !           205:     XFLAG = dstdata>>(count-1) & 1;
        !           206:   }
        !           207:   VFLAG = 0;
        !           208:   NFLAG = ((sint16)outdata) < 0;
        !           209:   ZFLAG = !outdata;
        !           210:   PC+= 2;
        !           211: }
        !           212: 
        !           213: void cpu_op_1489a(t_ipc *ipc) /* LSR */ {
        !           214:   /* mask f1f8, bits e088, mnemonic 67, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           215:   unsigned int srcdata = ipc->src;
        !           216:   int dstreg = (ipc->opcode >> 0) & 7;
        !           217:   uint32 dstdata = DATAREG(dstreg);
        !           218:   uint8 bits = 32;
        !           219:   uint8 count = srcdata & 63;
        !           220:   uint32 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !           221: 
        !           222:   DATAREG(dstreg) = outdata;
        !           223:   PC+= 2;
        !           224: }
        !           225: 
        !           226: void cpu_op_1489b(t_ipc *ipc) /* LSR */ {
        !           227:   /* mask f1f8, bits e088, mnemonic 67, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           228:   unsigned int srcdata = ipc->src;
        !           229:   int dstreg = (ipc->opcode >> 0) & 7;
        !           230:   uint32 dstdata = DATAREG(dstreg);
        !           231:   uint8 bits = 32;
        !           232:   uint8 count = srcdata & 63;
        !           233:   uint32 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !           234: 
        !           235:   DATAREG(dstreg) = outdata;
        !           236: 
        !           237:   if (!count)
        !           238:     CFLAG = 0;
        !           239:   else if (count >= bits) {
        !           240:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !           241:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !           242:   } else {
        !           243:     CFLAG = dstdata>>(count-1) & 1;
        !           244:     XFLAG = dstdata>>(count-1) & 1;
        !           245:   }
        !           246:   VFLAG = 0;
        !           247:   NFLAG = ((sint32)outdata) < 0;
        !           248:   ZFLAG = !outdata;
        !           249:   PC+= 2;
        !           250: }
        !           251: 
        !           252: void cpu_op_1490a(t_ipc *ipc) /* ROXR */ {
        !           253:   /* mask f1f8, bits e010, mnemonic 68, priv 0, endblk 0, imm_notzero -1, used 1     set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           254:   unsigned int srcdata = ipc->src;
        !           255:   int dstreg = (ipc->opcode >> 0) & 7;
        !           256:   uint8 dstdata = DATAREG(dstreg);
        !           257:   uint8 bits = 8;
        !           258:   uint8 loop = srcdata & 63;
        !           259:   uint8 cflag = CFLAG;
        !           260:   uint8 xflag = XFLAG;
        !           261:   uint8 outdata = dstdata;
        !           262: 
        !           263:   while(loop) {
        !           264:     cflag = outdata & 1;
        !           265:     outdata>>= 1;
        !           266:     if (xflag)
        !           267:       outdata |= 1<<(bits-1);
        !           268:     xflag = cflag;
        !           269:     loop--;
        !           270:   }
        !           271:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           272:   PC+= 2;
        !           273: }
        !           274: 
        !           275: void cpu_op_1490b(t_ipc *ipc) /* ROXR */ {
        !           276:   /* mask f1f8, bits e010, mnemonic 68, priv 0, endblk 0, imm_notzero -1, used 1     set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           277:   unsigned int srcdata = ipc->src;
        !           278:   int dstreg = (ipc->opcode >> 0) & 7;
        !           279:   uint8 dstdata = DATAREG(dstreg);
        !           280:   uint8 bits = 8;
        !           281:   uint8 loop = srcdata & 63;
        !           282:   uint8 cflag = CFLAG;
        !           283:   uint8 xflag = XFLAG;
        !           284:   uint8 outdata = dstdata;
        !           285: 
        !           286:   while(loop) {
        !           287:     cflag = outdata & 1;
        !           288:     outdata>>= 1;
        !           289:     if (xflag)
        !           290:       outdata |= 1<<(bits-1);
        !           291:     xflag = cflag;
        !           292:     loop--;
        !           293:   }
        !           294:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           295: 
        !           296:   XFLAG = xflag;
        !           297:   CFLAG = xflag;
        !           298:   NFLAG = ((sint8)outdata) < 0;
        !           299:   ZFLAG = !outdata;
        !           300:   VFLAG = 0;
        !           301:   PC+= 2;
        !           302: }
        !           303: 
        !           304: void cpu_op_1491a(t_ipc *ipc) /* ROXR */ {
        !           305:   /* mask f1f8, bits e050, mnemonic 68, priv 0, endblk 0, imm_notzero -1, used 1     set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           306:   unsigned int srcdata = ipc->src;
        !           307:   int dstreg = (ipc->opcode >> 0) & 7;
        !           308:   uint16 dstdata = DATAREG(dstreg);
        !           309:   uint8 bits = 16;
        !           310:   uint8 loop = srcdata & 63;
        !           311:   uint8 cflag = CFLAG;
        !           312:   uint8 xflag = XFLAG;
        !           313:   uint16 outdata = dstdata;
        !           314: 
        !           315:   while(loop) {
        !           316:     cflag = outdata & 1;
        !           317:     outdata>>= 1;
        !           318:     if (xflag)
        !           319:       outdata |= 1<<(bits-1);
        !           320:     xflag = cflag;
        !           321:     loop--;
        !           322:   }
        !           323:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !           324:   PC+= 2;
        !           325: }
        !           326: 
        !           327: void cpu_op_1491b(t_ipc *ipc) /* ROXR */ {
        !           328:   /* mask f1f8, bits e050, mnemonic 68, priv 0, endblk 0, imm_notzero -1, used 1     set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           329:   unsigned int srcdata = ipc->src;
        !           330:   int dstreg = (ipc->opcode >> 0) & 7;
        !           331:   uint16 dstdata = DATAREG(dstreg);
        !           332:   uint8 bits = 16;
        !           333:   uint8 loop = srcdata & 63;
        !           334:   uint8 cflag = CFLAG;
        !           335:   uint8 xflag = XFLAG;
        !           336:   uint16 outdata = dstdata;
        !           337: 
        !           338:   while(loop) {
        !           339:     cflag = outdata & 1;
        !           340:     outdata>>= 1;
        !           341:     if (xflag)
        !           342:       outdata |= 1<<(bits-1);
        !           343:     xflag = cflag;
        !           344:     loop--;
        !           345:   }
        !           346:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !           347: 
        !           348:   XFLAG = xflag;
        !           349:   CFLAG = xflag;
        !           350:   NFLAG = ((sint16)outdata) < 0;
        !           351:   ZFLAG = !outdata;
        !           352:   VFLAG = 0;
        !           353:   PC+= 2;
        !           354: }
        !           355: 
        !           356: void cpu_op_1492a(t_ipc *ipc) /* ROXR */ {
        !           357:   /* mask f1f8, bits e090, mnemonic 68, priv 0, endblk 0, imm_notzero -1, used 1     set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           358:   unsigned int srcdata = ipc->src;
        !           359:   int dstreg = (ipc->opcode >> 0) & 7;
        !           360:   uint32 dstdata = DATAREG(dstreg);
        !           361:   uint8 bits = 32;
        !           362:   uint8 loop = srcdata & 63;
        !           363:   uint8 cflag = CFLAG;
        !           364:   uint8 xflag = XFLAG;
        !           365:   uint32 outdata = dstdata;
        !           366: 
        !           367:   while(loop) {
        !           368:     cflag = outdata & 1;
        !           369:     outdata>>= 1;
        !           370:     if (xflag)
        !           371:       outdata |= 1<<(bits-1);
        !           372:     xflag = cflag;
        !           373:     loop--;
        !           374:   }
        !           375:   DATAREG(dstreg) = outdata;
        !           376:   PC+= 2;
        !           377: }
        !           378: 
        !           379: void cpu_op_1492b(t_ipc *ipc) /* ROXR */ {
        !           380:   /* mask f1f8, bits e090, mnemonic 68, priv 0, endblk 0, imm_notzero -1, used 1     set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           381:   unsigned int srcdata = ipc->src;
        !           382:   int dstreg = (ipc->opcode >> 0) & 7;
        !           383:   uint32 dstdata = DATAREG(dstreg);
        !           384:   uint8 bits = 32;
        !           385:   uint8 loop = srcdata & 63;
        !           386:   uint8 cflag = CFLAG;
        !           387:   uint8 xflag = XFLAG;
        !           388:   uint32 outdata = dstdata;
        !           389: 
        !           390:   while(loop) {
        !           391:     cflag = outdata & 1;
        !           392:     outdata>>= 1;
        !           393:     if (xflag)
        !           394:       outdata |= 1<<(bits-1);
        !           395:     xflag = cflag;
        !           396:     loop--;
        !           397:   }
        !           398:   DATAREG(dstreg) = outdata;
        !           399: 
        !           400:   XFLAG = xflag;
        !           401:   CFLAG = xflag;
        !           402:   NFLAG = ((sint32)outdata) < 0;
        !           403:   ZFLAG = !outdata;
        !           404:   VFLAG = 0;
        !           405:   PC+= 2;
        !           406: }
        !           407: 
        !           408: void cpu_op_1493a(t_ipc *ipc) /* ROR */ {
        !           409:   /* mask f1f8, bits e018, mnemonic 69, priv 0, endblk 0, imm_notzero -1, used 0     set -2, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           410:   unsigned int srcdata = ipc->src;
        !           411:   int dstreg = (ipc->opcode >> 0) & 7;
        !           412:   uint8 dstdata = DATAREG(dstreg);
        !           413:   uint8 bits = 8;
        !           414:   uint8 loop = srcdata & 63;
        !           415:   uint8 cflag = 0;
        !           416:   uint8 outdata = dstdata;
        !           417: 
        !           418:   while(loop) {
        !           419:     cflag = outdata & 1;
        !           420:     outdata>>= 1;
        !           421:     if (cflag)
        !           422:       outdata |= 1<<(bits-1);
        !           423:     loop--;
        !           424:   }
        !           425:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           426:   PC+= 2;
        !           427: }
        !           428: 
        !           429: void cpu_op_1493b(t_ipc *ipc) /* ROR */ {
        !           430:   /* mask f1f8, bits e018, mnemonic 69, priv 0, endblk 0, imm_notzero -1, used 0     set -2, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           431:   unsigned int srcdata = ipc->src;
        !           432:   int dstreg = (ipc->opcode >> 0) & 7;
        !           433:   uint8 dstdata = DATAREG(dstreg);
        !           434:   uint8 bits = 8;
        !           435:   uint8 loop = srcdata & 63;
        !           436:   uint8 cflag = 0;
        !           437:   uint8 outdata = dstdata;
        !           438: 
        !           439:   while(loop) {
        !           440:     cflag = outdata & 1;
        !           441:     outdata>>= 1;
        !           442:     if (cflag)
        !           443:       outdata |= 1<<(bits-1);
        !           444:     loop--;
        !           445:   }
        !           446:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           447: 
        !           448:   CFLAG = cflag;
        !           449:   NFLAG = ((sint8)outdata) < 0;
        !           450:   ZFLAG = !outdata;
        !           451:   VFLAG = 0;
        !           452:   PC+= 2;
        !           453: }
        !           454: 
        !           455: void cpu_op_1494a(t_ipc *ipc) /* ROR */ {
        !           456:   /* mask f1f8, bits e058, mnemonic 69, priv 0, endblk 0, imm_notzero -1, used 0     set -2, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           457:   unsigned int srcdata = ipc->src;
        !           458:   int dstreg = (ipc->opcode >> 0) & 7;
        !           459:   uint16 dstdata = DATAREG(dstreg);
        !           460:   uint8 bits = 16;
        !           461:   uint8 loop = srcdata & 63;
        !           462:   uint8 cflag = 0;
        !           463:   uint16 outdata = dstdata;
        !           464: 
        !           465:   while(loop) {
        !           466:     cflag = outdata & 1;
        !           467:     outdata>>= 1;
        !           468:     if (cflag)
        !           469:       outdata |= 1<<(bits-1);
        !           470:     loop--;
        !           471:   }
        !           472:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !           473:   PC+= 2;
        !           474: }
        !           475: 
        !           476: void cpu_op_1494b(t_ipc *ipc) /* ROR */ {
        !           477:   /* mask f1f8, bits e058, mnemonic 69, priv 0, endblk 0, imm_notzero -1, used 0     set -2, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           478:   unsigned int srcdata = ipc->src;
        !           479:   int dstreg = (ipc->opcode >> 0) & 7;
        !           480:   uint16 dstdata = DATAREG(dstreg);
        !           481:   uint8 bits = 16;
        !           482:   uint8 loop = srcdata & 63;
        !           483:   uint8 cflag = 0;
        !           484:   uint16 outdata = dstdata;
        !           485: 
        !           486:   while(loop) {
        !           487:     cflag = outdata & 1;
        !           488:     outdata>>= 1;
        !           489:     if (cflag)
        !           490:       outdata |= 1<<(bits-1);
        !           491:     loop--;
        !           492:   }
        !           493:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !           494: 
        !           495:   CFLAG = cflag;
        !           496:   NFLAG = ((sint16)outdata) < 0;
        !           497:   ZFLAG = !outdata;
        !           498:   VFLAG = 0;
        !           499:   PC+= 2;
        !           500: }
        !           501: 
        !           502: void cpu_op_1495a(t_ipc *ipc) /* ROR */ {
        !           503:   /* mask f1f8, bits e098, mnemonic 69, priv 0, endblk 0, imm_notzero -1, used 0     set -2, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           504:   unsigned int srcdata = ipc->src;
        !           505:   int dstreg = (ipc->opcode >> 0) & 7;
        !           506:   uint32 dstdata = DATAREG(dstreg);
        !           507:   uint8 bits = 32;
        !           508:   uint8 loop = srcdata & 63;
        !           509:   uint8 cflag = 0;
        !           510:   uint32 outdata = dstdata;
        !           511: 
        !           512:   while(loop) {
        !           513:     cflag = outdata & 1;
        !           514:     outdata>>= 1;
        !           515:     if (cflag)
        !           516:       outdata |= 1<<(bits-1);
        !           517:     loop--;
        !           518:   }
        !           519:   DATAREG(dstreg) = outdata;
        !           520:   PC+= 2;
        !           521: }
        !           522: 
        !           523: void cpu_op_1495b(t_ipc *ipc) /* ROR */ {
        !           524:   /* mask f1f8, bits e098, mnemonic 69, priv 0, endblk 0, imm_notzero -1, used 0     set -2, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !           525:   unsigned int srcdata = ipc->src;
        !           526:   int dstreg = (ipc->opcode >> 0) & 7;
        !           527:   uint32 dstdata = DATAREG(dstreg);
        !           528:   uint8 bits = 32;
        !           529:   uint8 loop = srcdata & 63;
        !           530:   uint8 cflag = 0;
        !           531:   uint32 outdata = dstdata;
        !           532: 
        !           533:   while(loop) {
        !           534:     cflag = outdata & 1;
        !           535:     outdata>>= 1;
        !           536:     if (cflag)
        !           537:       outdata |= 1<<(bits-1);
        !           538:     loop--;
        !           539:   }
        !           540:   DATAREG(dstreg) = outdata;
        !           541: 
        !           542:   CFLAG = cflag;
        !           543:   NFLAG = ((sint32)outdata) < 0;
        !           544:   ZFLAG = !outdata;
        !           545:   VFLAG = 0;
        !           546:   PC+= 2;
        !           547: }
        !           548: 
        !           549: void cpu_op_1496a(t_ipc *ipc) /* ASR */ {
        !           550:   /* mask fff8, bits e000, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           551:   unsigned int srcdata = 8;
        !           552:   int dstreg = (ipc->opcode >> 0) & 7;
        !           553:   uint8 dstdata = DATAREG(dstreg);
        !           554:   uint8 bits = 8;
        !           555:   uint8 count = srcdata & 63;
        !           556:   uint8 outdata = ((sint8)dstdata) >> (count > 7 ? 7 : count);
        !           557: 
        !           558:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           559:   PC+= 2;
        !           560: }
        !           561: 
        !           562: void cpu_op_1496b(t_ipc *ipc) /* ASR */ {
        !           563:   /* mask fff8, bits e000, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           564:   unsigned int srcdata = 8;
        !           565:   int dstreg = (ipc->opcode >> 0) & 7;
        !           566:   uint8 dstdata = DATAREG(dstreg);
        !           567:   uint8 bits = 8;
        !           568:   uint8 count = srcdata & 63;
        !           569:   uint8 outdata = ((sint8)dstdata) >> (count > 7 ? 7 : count);
        !           570: 
        !           571:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           572: 
        !           573:   if (!srcdata)
        !           574:     CFLAG = 0;
        !           575:   else if (srcdata >= bits) {
        !           576:     CFLAG = dstdata>>(bits-1);
        !           577:     XFLAG = dstdata>>(bits-1);
        !           578:   } else {
        !           579:     CFLAG = dstdata>>(count-1) & 1;
        !           580:     XFLAG = dstdata>>(count-1) & 1;
        !           581:   }
        !           582:   VFLAG = 0;
        !           583:   NFLAG = ((sint8)outdata) < 0;
        !           584:   ZFLAG = !outdata;
        !           585:   PC+= 2;
        !           586: }
        !           587: 
        !           588: void cpu_op_1497a(t_ipc *ipc) /* ASR */ {
        !           589:   /* mask fff8, bits e040, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           590:   unsigned int srcdata = 8;
        !           591:   int dstreg = (ipc->opcode >> 0) & 7;
        !           592:   uint16 dstdata = DATAREG(dstreg);
        !           593:   uint8 bits = 16;
        !           594:   uint8 count = srcdata & 63;
        !           595:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !           596: 
        !           597:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !           598:   PC+= 2;
        !           599: }
        !           600: 
        !           601: void cpu_op_1497b(t_ipc *ipc) /* ASR */ {
        !           602:   /* mask fff8, bits e040, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           603:   unsigned int srcdata = 8;
        !           604:   int dstreg = (ipc->opcode >> 0) & 7;
        !           605:   uint16 dstdata = DATAREG(dstreg);
        !           606:   uint8 bits = 16;
        !           607:   uint8 count = srcdata & 63;
        !           608:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !           609: 
        !           610:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !           611: 
        !           612:   if (!srcdata)
        !           613:     CFLAG = 0;
        !           614:   else if (srcdata >= bits) {
        !           615:     CFLAG = dstdata>>(bits-1);
        !           616:     XFLAG = dstdata>>(bits-1);
        !           617:   } else {
        !           618:     CFLAG = dstdata>>(count-1) & 1;
        !           619:     XFLAG = dstdata>>(count-1) & 1;
        !           620:   }
        !           621:   VFLAG = 0;
        !           622:   NFLAG = ((sint16)outdata) < 0;
        !           623:   ZFLAG = !outdata;
        !           624:   PC+= 2;
        !           625: }
        !           626: 
        !           627: void cpu_op_1498a(t_ipc *ipc) /* ASR */ {
        !           628:   /* mask fff8, bits e080, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           629:   unsigned int srcdata = 8;
        !           630:   int dstreg = (ipc->opcode >> 0) & 7;
        !           631:   uint32 dstdata = DATAREG(dstreg);
        !           632:   uint8 bits = 32;
        !           633:   uint8 count = srcdata & 63;
        !           634:   uint32 outdata = ((sint32)dstdata) >> (count > 31 ? 31 : count);
        !           635: 
        !           636:   DATAREG(dstreg) = outdata;
        !           637:   PC+= 2;
        !           638: }
        !           639: 
        !           640: void cpu_op_1498b(t_ipc *ipc) /* ASR */ {
        !           641:   /* mask fff8, bits e080, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           642:   unsigned int srcdata = 8;
        !           643:   int dstreg = (ipc->opcode >> 0) & 7;
        !           644:   uint32 dstdata = DATAREG(dstreg);
        !           645:   uint8 bits = 32;
        !           646:   uint8 count = srcdata & 63;
        !           647:   uint32 outdata = ((sint32)dstdata) >> (count > 31 ? 31 : count);
        !           648: 
        !           649:   DATAREG(dstreg) = outdata;
        !           650: 
        !           651:   if (!srcdata)
        !           652:     CFLAG = 0;
        !           653:   else if (srcdata >= bits) {
        !           654:     CFLAG = dstdata>>(bits-1);
        !           655:     XFLAG = dstdata>>(bits-1);
        !           656:   } else {
        !           657:     CFLAG = dstdata>>(count-1) & 1;
        !           658:     XFLAG = dstdata>>(count-1) & 1;
        !           659:   }
        !           660:   VFLAG = 0;
        !           661:   NFLAG = ((sint32)outdata) < 0;
        !           662:   ZFLAG = !outdata;
        !           663:   PC+= 2;
        !           664: }
        !           665: 
        !           666: void cpu_op_1499a(t_ipc *ipc) /* LSR */ {
        !           667:   /* mask fff8, bits e008, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           668:   unsigned int srcdata = 8;
        !           669:   int dstreg = (ipc->opcode >> 0) & 7;
        !           670:   uint8 dstdata = DATAREG(dstreg);
        !           671:   uint8 bits = 8;
        !           672:   uint8 count = srcdata & 63;
        !           673:   uint8 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !           674: 
        !           675:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           676:   PC+= 2;
        !           677: }
        !           678: 
        !           679: void cpu_op_1499b(t_ipc *ipc) /* LSR */ {
        !           680:   /* mask fff8, bits e008, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           681:   unsigned int srcdata = 8;
        !           682:   int dstreg = (ipc->opcode >> 0) & 7;
        !           683:   uint8 dstdata = DATAREG(dstreg);
        !           684:   uint8 bits = 8;
        !           685:   uint8 count = srcdata & 63;
        !           686:   uint8 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !           687: 
        !           688:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           689: 
        !           690:   if (!count)
        !           691:     CFLAG = 0;
        !           692:   else if (count >= bits) {
        !           693:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !           694:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !           695:   } else {
        !           696:     CFLAG = dstdata>>(count-1) & 1;
        !           697:     XFLAG = dstdata>>(count-1) & 1;
        !           698:   }
        !           699:   VFLAG = 0;
        !           700:   NFLAG = ((sint8)outdata) < 0;
        !           701:   ZFLAG = !outdata;
        !           702:   PC+= 2;
        !           703: }
        !           704: 
        !           705: void cpu_op_1500a(t_ipc *ipc) /* LSR */ {
        !           706:   /* mask fff8, bits e048, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           707:   unsigned int srcdata = 8;
        !           708:   int dstreg = (ipc->opcode >> 0) & 7;
        !           709:   uint16 dstdata = DATAREG(dstreg);
        !           710:   uint8 bits = 16;
        !           711:   uint8 count = srcdata & 63;
        !           712:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !           713: 
        !           714:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !           715:   PC+= 2;
        !           716: }
        !           717: 
        !           718: void cpu_op_1500b(t_ipc *ipc) /* LSR */ {
        !           719:   /* mask fff8, bits e048, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           720:   unsigned int srcdata = 8;
        !           721:   int dstreg = (ipc->opcode >> 0) & 7;
        !           722:   uint16 dstdata = DATAREG(dstreg);
        !           723:   uint8 bits = 16;
        !           724:   uint8 count = srcdata & 63;
        !           725:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !           726: 
        !           727:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !           728: 
        !           729:   if (!count)
        !           730:     CFLAG = 0;
        !           731:   else if (count >= bits) {
        !           732:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !           733:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !           734:   } else {
        !           735:     CFLAG = dstdata>>(count-1) & 1;
        !           736:     XFLAG = dstdata>>(count-1) & 1;
        !           737:   }
        !           738:   VFLAG = 0;
        !           739:   NFLAG = ((sint16)outdata) < 0;
        !           740:   ZFLAG = !outdata;
        !           741:   PC+= 2;
        !           742: }
        !           743: 
        !           744: void cpu_op_1501a(t_ipc *ipc) /* LSR */ {
        !           745:   /* mask fff8, bits e088, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           746:   unsigned int srcdata = 8;
        !           747:   int dstreg = (ipc->opcode >> 0) & 7;
        !           748:   uint32 dstdata = DATAREG(dstreg);
        !           749:   uint8 bits = 32;
        !           750:   uint8 count = srcdata & 63;
        !           751:   uint32 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !           752: 
        !           753:   DATAREG(dstreg) = outdata;
        !           754:   PC+= 2;
        !           755: }
        !           756: 
        !           757: void cpu_op_1501b(t_ipc *ipc) /* LSR */ {
        !           758:   /* mask fff8, bits e088, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           759:   unsigned int srcdata = 8;
        !           760:   int dstreg = (ipc->opcode >> 0) & 7;
        !           761:   uint32 dstdata = DATAREG(dstreg);
        !           762:   uint8 bits = 32;
        !           763:   uint8 count = srcdata & 63;
        !           764:   uint32 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !           765: 
        !           766:   DATAREG(dstreg) = outdata;
        !           767: 
        !           768:   if (!count)
        !           769:     CFLAG = 0;
        !           770:   else if (count >= bits) {
        !           771:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !           772:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !           773:   } else {
        !           774:     CFLAG = dstdata>>(count-1) & 1;
        !           775:     XFLAG = dstdata>>(count-1) & 1;
        !           776:   }
        !           777:   VFLAG = 0;
        !           778:   NFLAG = ((sint32)outdata) < 0;
        !           779:   ZFLAG = !outdata;
        !           780:   PC+= 2;
        !           781: }
        !           782: 
        !           783: void cpu_op_1502a(t_ipc *ipc) /* ROXR */ {
        !           784:   /* mask fff8, bits e010, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           785:   unsigned int srcdata = 8;
        !           786:   int dstreg = (ipc->opcode >> 0) & 7;
        !           787:   uint8 dstdata = DATAREG(dstreg);
        !           788:   uint8 bits = 8;
        !           789:   uint8 loop = srcdata & 63;
        !           790:   uint8 cflag = CFLAG;
        !           791:   uint8 xflag = XFLAG;
        !           792:   uint8 outdata = dstdata;
        !           793: 
        !           794:   while(loop) {
        !           795:     cflag = outdata & 1;
        !           796:     outdata>>= 1;
        !           797:     if (xflag)
        !           798:       outdata |= 1<<(bits-1);
        !           799:     xflag = cflag;
        !           800:     loop--;
        !           801:   }
        !           802:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           803:   PC+= 2;
        !           804: }
        !           805: 
        !           806: void cpu_op_1502b(t_ipc *ipc) /* ROXR */ {
        !           807:   /* mask fff8, bits e010, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           808:   unsigned int srcdata = 8;
        !           809:   int dstreg = (ipc->opcode >> 0) & 7;
        !           810:   uint8 dstdata = DATAREG(dstreg);
        !           811:   uint8 bits = 8;
        !           812:   uint8 loop = srcdata & 63;
        !           813:   uint8 cflag = CFLAG;
        !           814:   uint8 xflag = XFLAG;
        !           815:   uint8 outdata = dstdata;
        !           816: 
        !           817:   while(loop) {
        !           818:     cflag = outdata & 1;
        !           819:     outdata>>= 1;
        !           820:     if (xflag)
        !           821:       outdata |= 1<<(bits-1);
        !           822:     xflag = cflag;
        !           823:     loop--;
        !           824:   }
        !           825:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           826: 
        !           827:   XFLAG = xflag;
        !           828:   CFLAG = xflag;
        !           829:   NFLAG = ((sint8)outdata) < 0;
        !           830:   ZFLAG = !outdata;
        !           831:   VFLAG = 0;
        !           832:   PC+= 2;
        !           833: }
        !           834: 
        !           835: void cpu_op_1503a(t_ipc *ipc) /* ROXR */ {
        !           836:   /* mask fff8, bits e050, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           837:   unsigned int srcdata = 8;
        !           838:   int dstreg = (ipc->opcode >> 0) & 7;
        !           839:   uint16 dstdata = DATAREG(dstreg);
        !           840:   uint8 bits = 16;
        !           841:   uint8 loop = srcdata & 63;
        !           842:   uint8 cflag = CFLAG;
        !           843:   uint8 xflag = XFLAG;
        !           844:   uint16 outdata = dstdata;
        !           845: 
        !           846:   while(loop) {
        !           847:     cflag = outdata & 1;
        !           848:     outdata>>= 1;
        !           849:     if (xflag)
        !           850:       outdata |= 1<<(bits-1);
        !           851:     xflag = cflag;
        !           852:     loop--;
        !           853:   }
        !           854:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !           855:   PC+= 2;
        !           856: }
        !           857: 
        !           858: void cpu_op_1503b(t_ipc *ipc) /* ROXR */ {
        !           859:   /* mask fff8, bits e050, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           860:   unsigned int srcdata = 8;
        !           861:   int dstreg = (ipc->opcode >> 0) & 7;
        !           862:   uint16 dstdata = DATAREG(dstreg);
        !           863:   uint8 bits = 16;
        !           864:   uint8 loop = srcdata & 63;
        !           865:   uint8 cflag = CFLAG;
        !           866:   uint8 xflag = XFLAG;
        !           867:   uint16 outdata = dstdata;
        !           868: 
        !           869:   while(loop) {
        !           870:     cflag = outdata & 1;
        !           871:     outdata>>= 1;
        !           872:     if (xflag)
        !           873:       outdata |= 1<<(bits-1);
        !           874:     xflag = cflag;
        !           875:     loop--;
        !           876:   }
        !           877:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !           878: 
        !           879:   XFLAG = xflag;
        !           880:   CFLAG = xflag;
        !           881:   NFLAG = ((sint16)outdata) < 0;
        !           882:   ZFLAG = !outdata;
        !           883:   VFLAG = 0;
        !           884:   PC+= 2;
        !           885: }
        !           886: 
        !           887: void cpu_op_1504a(t_ipc *ipc) /* ROXR */ {
        !           888:   /* mask fff8, bits e090, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           889:   unsigned int srcdata = 8;
        !           890:   int dstreg = (ipc->opcode >> 0) & 7;
        !           891:   uint32 dstdata = DATAREG(dstreg);
        !           892:   uint8 bits = 32;
        !           893:   uint8 loop = srcdata & 63;
        !           894:   uint8 cflag = CFLAG;
        !           895:   uint8 xflag = XFLAG;
        !           896:   uint32 outdata = dstdata;
        !           897: 
        !           898:   while(loop) {
        !           899:     cflag = outdata & 1;
        !           900:     outdata>>= 1;
        !           901:     if (xflag)
        !           902:       outdata |= 1<<(bits-1);
        !           903:     xflag = cflag;
        !           904:     loop--;
        !           905:   }
        !           906:   DATAREG(dstreg) = outdata;
        !           907:   PC+= 2;
        !           908: }
        !           909: 
        !           910: void cpu_op_1504b(t_ipc *ipc) /* ROXR */ {
        !           911:   /* mask fff8, bits e090, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           912:   unsigned int srcdata = 8;
        !           913:   int dstreg = (ipc->opcode >> 0) & 7;
        !           914:   uint32 dstdata = DATAREG(dstreg);
        !           915:   uint8 bits = 32;
        !           916:   uint8 loop = srcdata & 63;
        !           917:   uint8 cflag = CFLAG;
        !           918:   uint8 xflag = XFLAG;
        !           919:   uint32 outdata = dstdata;
        !           920: 
        !           921:   while(loop) {
        !           922:     cflag = outdata & 1;
        !           923:     outdata>>= 1;
        !           924:     if (xflag)
        !           925:       outdata |= 1<<(bits-1);
        !           926:     xflag = cflag;
        !           927:     loop--;
        !           928:   }
        !           929:   DATAREG(dstreg) = outdata;
        !           930: 
        !           931:   XFLAG = xflag;
        !           932:   CFLAG = xflag;
        !           933:   NFLAG = ((sint32)outdata) < 0;
        !           934:   ZFLAG = !outdata;
        !           935:   VFLAG = 0;
        !           936:   PC+= 2;
        !           937: }
        !           938: 
        !           939: void cpu_op_1505a(t_ipc *ipc) /* ROR */ {
        !           940:   /* mask fff8, bits e018, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           941:   unsigned int srcdata = 8;
        !           942:   int dstreg = (ipc->opcode >> 0) & 7;
        !           943:   uint8 dstdata = DATAREG(dstreg);
        !           944:   uint8 bits = 8;
        !           945:   uint8 loop = srcdata & 63;
        !           946:   uint8 cflag = 0;
        !           947:   uint8 outdata = dstdata;
        !           948: 
        !           949:   while(loop) {
        !           950:     cflag = outdata & 1;
        !           951:     outdata>>= 1;
        !           952:     if (cflag)
        !           953:       outdata |= 1<<(bits-1);
        !           954:     loop--;
        !           955:   }
        !           956:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           957:   PC+= 2;
        !           958: }
        !           959: 
        !           960: void cpu_op_1505b(t_ipc *ipc) /* ROR */ {
        !           961:   /* mask fff8, bits e018, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           962:   unsigned int srcdata = 8;
        !           963:   int dstreg = (ipc->opcode >> 0) & 7;
        !           964:   uint8 dstdata = DATAREG(dstreg);
        !           965:   uint8 bits = 8;
        !           966:   uint8 loop = srcdata & 63;
        !           967:   uint8 cflag = 0;
        !           968:   uint8 outdata = dstdata;
        !           969: 
        !           970:   while(loop) {
        !           971:     cflag = outdata & 1;
        !           972:     outdata>>= 1;
        !           973:     if (cflag)
        !           974:       outdata |= 1<<(bits-1);
        !           975:     loop--;
        !           976:   }
        !           977:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !           978: 
        !           979:   CFLAG = cflag;
        !           980:   NFLAG = ((sint8)outdata) < 0;
        !           981:   ZFLAG = !outdata;
        !           982:   VFLAG = 0;
        !           983:   PC+= 2;
        !           984: }
        !           985: 
        !           986: void cpu_op_1506a(t_ipc *ipc) /* ROR */ {
        !           987:   /* mask fff8, bits e058, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !           988:   unsigned int srcdata = 8;
        !           989:   int dstreg = (ipc->opcode >> 0) & 7;
        !           990:   uint16 dstdata = DATAREG(dstreg);
        !           991:   uint8 bits = 16;
        !           992:   uint8 loop = srcdata & 63;
        !           993:   uint8 cflag = 0;
        !           994:   uint16 outdata = dstdata;
        !           995: 
        !           996:   while(loop) {
        !           997:     cflag = outdata & 1;
        !           998:     outdata>>= 1;
        !           999:     if (cflag)
        !          1000:       outdata |= 1<<(bits-1);
        !          1001:     loop--;
        !          1002:   }
        !          1003:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1004:   PC+= 2;
        !          1005: }
        !          1006: 
        !          1007: void cpu_op_1506b(t_ipc *ipc) /* ROR */ {
        !          1008:   /* mask fff8, bits e058, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          1009:   unsigned int srcdata = 8;
        !          1010:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1011:   uint16 dstdata = DATAREG(dstreg);
        !          1012:   uint8 bits = 16;
        !          1013:   uint8 loop = srcdata & 63;
        !          1014:   uint8 cflag = 0;
        !          1015:   uint16 outdata = dstdata;
        !          1016: 
        !          1017:   while(loop) {
        !          1018:     cflag = outdata & 1;
        !          1019:     outdata>>= 1;
        !          1020:     if (cflag)
        !          1021:       outdata |= 1<<(bits-1);
        !          1022:     loop--;
        !          1023:   }
        !          1024:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1025: 
        !          1026:   CFLAG = cflag;
        !          1027:   NFLAG = ((sint16)outdata) < 0;
        !          1028:   ZFLAG = !outdata;
        !          1029:   VFLAG = 0;
        !          1030:   PC+= 2;
        !          1031: }
        !          1032: 
        !          1033: void cpu_op_1507a(t_ipc *ipc) /* ROR */ {
        !          1034:   /* mask fff8, bits e098, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          1035:   unsigned int srcdata = 8;
        !          1036:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1037:   uint32 dstdata = DATAREG(dstreg);
        !          1038:   uint8 bits = 32;
        !          1039:   uint8 loop = srcdata & 63;
        !          1040:   uint8 cflag = 0;
        !          1041:   uint32 outdata = dstdata;
        !          1042: 
        !          1043:   while(loop) {
        !          1044:     cflag = outdata & 1;
        !          1045:     outdata>>= 1;
        !          1046:     if (cflag)
        !          1047:       outdata |= 1<<(bits-1);
        !          1048:     loop--;
        !          1049:   }
        !          1050:   DATAREG(dstreg) = outdata;
        !          1051:   PC+= 2;
        !          1052: }
        !          1053: 
        !          1054: void cpu_op_1507b(t_ipc *ipc) /* ROR */ {
        !          1055:   /* mask fff8, bits e098, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          1056:   unsigned int srcdata = 8;
        !          1057:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1058:   uint32 dstdata = DATAREG(dstreg);
        !          1059:   uint8 bits = 32;
        !          1060:   uint8 loop = srcdata & 63;
        !          1061:   uint8 cflag = 0;
        !          1062:   uint32 outdata = dstdata;
        !          1063: 
        !          1064:   while(loop) {
        !          1065:     cflag = outdata & 1;
        !          1066:     outdata>>= 1;
        !          1067:     if (cflag)
        !          1068:       outdata |= 1<<(bits-1);
        !          1069:     loop--;
        !          1070:   }
        !          1071:   DATAREG(dstreg) = outdata;
        !          1072: 
        !          1073:   CFLAG = cflag;
        !          1074:   NFLAG = ((sint32)outdata) < 0;
        !          1075:   ZFLAG = !outdata;
        !          1076:   VFLAG = 0;
        !          1077:   PC+= 2;
        !          1078: }
        !          1079: 
        !          1080: void cpu_op_1508a(t_ipc *ipc) /* ASR */ {
        !          1081:   /* mask f1f8, bits e020, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1082:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1083:   uint8 srcdata = DATAREG(srcreg);
        !          1084:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1085:   uint8 dstdata = DATAREG(dstreg);
        !          1086:   uint8 bits = 8;
        !          1087:   uint8 count = srcdata & 63;
        !          1088:   uint8 outdata = ((sint8)dstdata) >> (count > 7 ? 7 : count);
        !          1089: 
        !          1090:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1091:   PC+= 2;
        !          1092: }
        !          1093: 
        !          1094: void cpu_op_1508b(t_ipc *ipc) /* ASR */ {
        !          1095:   /* mask f1f8, bits e020, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1096:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1097:   uint8 srcdata = DATAREG(srcreg);
        !          1098:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1099:   uint8 dstdata = DATAREG(dstreg);
        !          1100:   uint8 bits = 8;
        !          1101:   uint8 count = srcdata & 63;
        !          1102:   uint8 outdata = ((sint8)dstdata) >> (count > 7 ? 7 : count);
        !          1103: 
        !          1104:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1105: 
        !          1106:   if (!srcdata)
        !          1107:     CFLAG = 0;
        !          1108:   else if (srcdata >= bits) {
        !          1109:     CFLAG = dstdata>>(bits-1);
        !          1110:     XFLAG = dstdata>>(bits-1);
        !          1111:   } else {
        !          1112:     CFLAG = dstdata>>(count-1) & 1;
        !          1113:     XFLAG = dstdata>>(count-1) & 1;
        !          1114:   }
        !          1115:   VFLAG = 0;
        !          1116:   NFLAG = ((sint8)outdata) < 0;
        !          1117:   ZFLAG = !outdata;
        !          1118:   PC+= 2;
        !          1119: }
        !          1120: 
        !          1121: void cpu_op_1509a(t_ipc *ipc) /* ASR */ {
        !          1122:   /* mask f1f8, bits e060, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1123:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1124:   uint16 srcdata = DATAREG(srcreg);
        !          1125:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1126:   uint16 dstdata = DATAREG(dstreg);
        !          1127:   uint8 bits = 16;
        !          1128:   uint8 count = srcdata & 63;
        !          1129:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          1130: 
        !          1131:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1132:   PC+= 2;
        !          1133: }
        !          1134: 
        !          1135: void cpu_op_1509b(t_ipc *ipc) /* ASR */ {
        !          1136:   /* mask f1f8, bits e060, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1137:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1138:   uint16 srcdata = DATAREG(srcreg);
        !          1139:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1140:   uint16 dstdata = DATAREG(dstreg);
        !          1141:   uint8 bits = 16;
        !          1142:   uint8 count = srcdata & 63;
        !          1143:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          1144: 
        !          1145:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1146: 
        !          1147:   if (!srcdata)
        !          1148:     CFLAG = 0;
        !          1149:   else if (srcdata >= bits) {
        !          1150:     CFLAG = dstdata>>(bits-1);
        !          1151:     XFLAG = dstdata>>(bits-1);
        !          1152:   } else {
        !          1153:     CFLAG = dstdata>>(count-1) & 1;
        !          1154:     XFLAG = dstdata>>(count-1) & 1;
        !          1155:   }
        !          1156:   VFLAG = 0;
        !          1157:   NFLAG = ((sint16)outdata) < 0;
        !          1158:   ZFLAG = !outdata;
        !          1159:   PC+= 2;
        !          1160: }
        !          1161: 
        !          1162: void cpu_op_1510a(t_ipc *ipc) /* ASR */ {
        !          1163:   /* mask f1f8, bits e0a0, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1164:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1165:   uint32 srcdata = DATAREG(srcreg);
        !          1166:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1167:   uint32 dstdata = DATAREG(dstreg);
        !          1168:   uint8 bits = 32;
        !          1169:   uint8 count = srcdata & 63;
        !          1170:   uint32 outdata = ((sint32)dstdata) >> (count > 31 ? 31 : count);
        !          1171: 
        !          1172:   DATAREG(dstreg) = outdata;
        !          1173:   PC+= 2;
        !          1174: }
        !          1175: 
        !          1176: void cpu_op_1510b(t_ipc *ipc) /* ASR */ {
        !          1177:   /* mask f1f8, bits e0a0, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1178:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1179:   uint32 srcdata = DATAREG(srcreg);
        !          1180:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1181:   uint32 dstdata = DATAREG(dstreg);
        !          1182:   uint8 bits = 32;
        !          1183:   uint8 count = srcdata & 63;
        !          1184:   uint32 outdata = ((sint32)dstdata) >> (count > 31 ? 31 : count);
        !          1185: 
        !          1186:   DATAREG(dstreg) = outdata;
        !          1187: 
        !          1188:   if (!srcdata)
        !          1189:     CFLAG = 0;
        !          1190:   else if (srcdata >= bits) {
        !          1191:     CFLAG = dstdata>>(bits-1);
        !          1192:     XFLAG = dstdata>>(bits-1);
        !          1193:   } else {
        !          1194:     CFLAG = dstdata>>(count-1) & 1;
        !          1195:     XFLAG = dstdata>>(count-1) & 1;
        !          1196:   }
        !          1197:   VFLAG = 0;
        !          1198:   NFLAG = ((sint32)outdata) < 0;
        !          1199:   ZFLAG = !outdata;
        !          1200:   PC+= 2;
        !          1201: }
        !          1202: 
        !          1203: void cpu_op_1511a(t_ipc *ipc) /* LSR */ {
        !          1204:   /* mask f1f8, bits e028, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1205:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1206:   uint8 srcdata = DATAREG(srcreg);
        !          1207:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1208:   uint8 dstdata = DATAREG(dstreg);
        !          1209:   uint8 bits = 8;
        !          1210:   uint8 count = srcdata & 63;
        !          1211:   uint8 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          1212: 
        !          1213:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1214:   PC+= 2;
        !          1215: }
        !          1216: 
        !          1217: void cpu_op_1511b(t_ipc *ipc) /* LSR */ {
        !          1218:   /* mask f1f8, bits e028, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1219:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1220:   uint8 srcdata = DATAREG(srcreg);
        !          1221:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1222:   uint8 dstdata = DATAREG(dstreg);
        !          1223:   uint8 bits = 8;
        !          1224:   uint8 count = srcdata & 63;
        !          1225:   uint8 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          1226: 
        !          1227:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1228: 
        !          1229:   if (!count)
        !          1230:     CFLAG = 0;
        !          1231:   else if (count >= bits) {
        !          1232:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          1233:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          1234:   } else {
        !          1235:     CFLAG = dstdata>>(count-1) & 1;
        !          1236:     XFLAG = dstdata>>(count-1) & 1;
        !          1237:   }
        !          1238:   VFLAG = 0;
        !          1239:   NFLAG = ((sint8)outdata) < 0;
        !          1240:   ZFLAG = !outdata;
        !          1241:   PC+= 2;
        !          1242: }
        !          1243: 
        !          1244: void cpu_op_1512a(t_ipc *ipc) /* LSR */ {
        !          1245:   /* mask f1f8, bits e068, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1246:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1247:   uint16 srcdata = DATAREG(srcreg);
        !          1248:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1249:   uint16 dstdata = DATAREG(dstreg);
        !          1250:   uint8 bits = 16;
        !          1251:   uint8 count = srcdata & 63;
        !          1252:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          1253: 
        !          1254:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1255:   PC+= 2;
        !          1256: }
        !          1257: 
        !          1258: void cpu_op_1512b(t_ipc *ipc) /* LSR */ {
        !          1259:   /* mask f1f8, bits e068, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1260:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1261:   uint16 srcdata = DATAREG(srcreg);
        !          1262:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1263:   uint16 dstdata = DATAREG(dstreg);
        !          1264:   uint8 bits = 16;
        !          1265:   uint8 count = srcdata & 63;
        !          1266:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          1267: 
        !          1268:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1269: 
        !          1270:   if (!count)
        !          1271:     CFLAG = 0;
        !          1272:   else if (count >= bits) {
        !          1273:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          1274:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          1275:   } else {
        !          1276:     CFLAG = dstdata>>(count-1) & 1;
        !          1277:     XFLAG = dstdata>>(count-1) & 1;
        !          1278:   }
        !          1279:   VFLAG = 0;
        !          1280:   NFLAG = ((sint16)outdata) < 0;
        !          1281:   ZFLAG = !outdata;
        !          1282:   PC+= 2;
        !          1283: }
        !          1284: 
        !          1285: void cpu_op_1513a(t_ipc *ipc) /* LSR */ {
        !          1286:   /* mask f1f8, bits e0a8, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1287:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1288:   uint32 srcdata = DATAREG(srcreg);
        !          1289:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1290:   uint32 dstdata = DATAREG(dstreg);
        !          1291:   uint8 bits = 32;
        !          1292:   uint8 count = srcdata & 63;
        !          1293:   uint32 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          1294: 
        !          1295:   DATAREG(dstreg) = outdata;
        !          1296:   PC+= 2;
        !          1297: }
        !          1298: 
        !          1299: void cpu_op_1513b(t_ipc *ipc) /* LSR */ {
        !          1300:   /* mask f1f8, bits e0a8, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1301:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1302:   uint32 srcdata = DATAREG(srcreg);
        !          1303:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1304:   uint32 dstdata = DATAREG(dstreg);
        !          1305:   uint8 bits = 32;
        !          1306:   uint8 count = srcdata & 63;
        !          1307:   uint32 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          1308: 
        !          1309:   DATAREG(dstreg) = outdata;
        !          1310: 
        !          1311:   if (!count)
        !          1312:     CFLAG = 0;
        !          1313:   else if (count >= bits) {
        !          1314:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          1315:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          1316:   } else {
        !          1317:     CFLAG = dstdata>>(count-1) & 1;
        !          1318:     XFLAG = dstdata>>(count-1) & 1;
        !          1319:   }
        !          1320:   VFLAG = 0;
        !          1321:   NFLAG = ((sint32)outdata) < 0;
        !          1322:   ZFLAG = !outdata;
        !          1323:   PC+= 2;
        !          1324: }
        !          1325: 
        !          1326: void cpu_op_1514a(t_ipc *ipc) /* ROXR */ {
        !          1327:   /* mask f1f8, bits e030, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1328:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1329:   uint8 srcdata = DATAREG(srcreg);
        !          1330:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1331:   uint8 dstdata = DATAREG(dstreg);
        !          1332:   uint8 bits = 8;
        !          1333:   uint8 loop = srcdata & 63;
        !          1334:   uint8 cflag = CFLAG;
        !          1335:   uint8 xflag = XFLAG;
        !          1336:   uint8 outdata = dstdata;
        !          1337: 
        !          1338:   while(loop) {
        !          1339:     cflag = outdata & 1;
        !          1340:     outdata>>= 1;
        !          1341:     if (xflag)
        !          1342:       outdata |= 1<<(bits-1);
        !          1343:     xflag = cflag;
        !          1344:     loop--;
        !          1345:   }
        !          1346:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1347:   PC+= 2;
        !          1348: }
        !          1349: 
        !          1350: void cpu_op_1514b(t_ipc *ipc) /* ROXR */ {
        !          1351:   /* mask f1f8, bits e030, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1352:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1353:   uint8 srcdata = DATAREG(srcreg);
        !          1354:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1355:   uint8 dstdata = DATAREG(dstreg);
        !          1356:   uint8 bits = 8;
        !          1357:   uint8 loop = srcdata & 63;
        !          1358:   uint8 cflag = CFLAG;
        !          1359:   uint8 xflag = XFLAG;
        !          1360:   uint8 outdata = dstdata;
        !          1361: 
        !          1362:   while(loop) {
        !          1363:     cflag = outdata & 1;
        !          1364:     outdata>>= 1;
        !          1365:     if (xflag)
        !          1366:       outdata |= 1<<(bits-1);
        !          1367:     xflag = cflag;
        !          1368:     loop--;
        !          1369:   }
        !          1370:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1371: 
        !          1372:   XFLAG = xflag;
        !          1373:   CFLAG = xflag;
        !          1374:   NFLAG = ((sint8)outdata) < 0;
        !          1375:   ZFLAG = !outdata;
        !          1376:   VFLAG = 0;
        !          1377:   PC+= 2;
        !          1378: }
        !          1379: 
        !          1380: void cpu_op_1515a(t_ipc *ipc) /* ROXR */ {
        !          1381:   /* mask f1f8, bits e070, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1382:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1383:   uint16 srcdata = DATAREG(srcreg);
        !          1384:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1385:   uint16 dstdata = DATAREG(dstreg);
        !          1386:   uint8 bits = 16;
        !          1387:   uint8 loop = srcdata & 63;
        !          1388:   uint8 cflag = CFLAG;
        !          1389:   uint8 xflag = XFLAG;
        !          1390:   uint16 outdata = dstdata;
        !          1391: 
        !          1392:   while(loop) {
        !          1393:     cflag = outdata & 1;
        !          1394:     outdata>>= 1;
        !          1395:     if (xflag)
        !          1396:       outdata |= 1<<(bits-1);
        !          1397:     xflag = cflag;
        !          1398:     loop--;
        !          1399:   }
        !          1400:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1401:   PC+= 2;
        !          1402: }
        !          1403: 
        !          1404: void cpu_op_1515b(t_ipc *ipc) /* ROXR */ {
        !          1405:   /* mask f1f8, bits e070, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1406:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1407:   uint16 srcdata = DATAREG(srcreg);
        !          1408:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1409:   uint16 dstdata = DATAREG(dstreg);
        !          1410:   uint8 bits = 16;
        !          1411:   uint8 loop = srcdata & 63;
        !          1412:   uint8 cflag = CFLAG;
        !          1413:   uint8 xflag = XFLAG;
        !          1414:   uint16 outdata = dstdata;
        !          1415: 
        !          1416:   while(loop) {
        !          1417:     cflag = outdata & 1;
        !          1418:     outdata>>= 1;
        !          1419:     if (xflag)
        !          1420:       outdata |= 1<<(bits-1);
        !          1421:     xflag = cflag;
        !          1422:     loop--;
        !          1423:   }
        !          1424:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1425: 
        !          1426:   XFLAG = xflag;
        !          1427:   CFLAG = xflag;
        !          1428:   NFLAG = ((sint16)outdata) < 0;
        !          1429:   ZFLAG = !outdata;
        !          1430:   VFLAG = 0;
        !          1431:   PC+= 2;
        !          1432: }
        !          1433: 
        !          1434: void cpu_op_1516a(t_ipc *ipc) /* ROXR */ {
        !          1435:   /* mask f1f8, bits e0b0, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1436:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1437:   uint32 srcdata = DATAREG(srcreg);
        !          1438:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1439:   uint32 dstdata = DATAREG(dstreg);
        !          1440:   uint8 bits = 32;
        !          1441:   uint8 loop = srcdata & 63;
        !          1442:   uint8 cflag = CFLAG;
        !          1443:   uint8 xflag = XFLAG;
        !          1444:   uint32 outdata = dstdata;
        !          1445: 
        !          1446:   while(loop) {
        !          1447:     cflag = outdata & 1;
        !          1448:     outdata>>= 1;
        !          1449:     if (xflag)
        !          1450:       outdata |= 1<<(bits-1);
        !          1451:     xflag = cflag;
        !          1452:     loop--;
        !          1453:   }
        !          1454:   DATAREG(dstreg) = outdata;
        !          1455:   PC+= 2;
        !          1456: }
        !          1457: 
        !          1458: void cpu_op_1516b(t_ipc *ipc) /* ROXR */ {
        !          1459:   /* mask f1f8, bits e0b0, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1460:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1461:   uint32 srcdata = DATAREG(srcreg);
        !          1462:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1463:   uint32 dstdata = DATAREG(dstreg);
        !          1464:   uint8 bits = 32;
        !          1465:   uint8 loop = srcdata & 63;
        !          1466:   uint8 cflag = CFLAG;
        !          1467:   uint8 xflag = XFLAG;
        !          1468:   uint32 outdata = dstdata;
        !          1469: 
        !          1470:   while(loop) {
        !          1471:     cflag = outdata & 1;
        !          1472:     outdata>>= 1;
        !          1473:     if (xflag)
        !          1474:       outdata |= 1<<(bits-1);
        !          1475:     xflag = cflag;
        !          1476:     loop--;
        !          1477:   }
        !          1478:   DATAREG(dstreg) = outdata;
        !          1479: 
        !          1480:   XFLAG = xflag;
        !          1481:   CFLAG = xflag;
        !          1482:   NFLAG = ((sint32)outdata) < 0;
        !          1483:   ZFLAG = !outdata;
        !          1484:   VFLAG = 0;
        !          1485:   PC+= 2;
        !          1486: }
        !          1487: 
        !          1488: void cpu_op_1517a(t_ipc *ipc) /* ROR */ {
        !          1489:   /* mask f1f8, bits e038, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1490:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1491:   uint8 srcdata = DATAREG(srcreg);
        !          1492:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1493:   uint8 dstdata = DATAREG(dstreg);
        !          1494:   uint8 bits = 8;
        !          1495:   uint8 loop = srcdata & 63;
        !          1496:   uint8 cflag = 0;
        !          1497:   uint8 outdata = dstdata;
        !          1498: 
        !          1499:   while(loop) {
        !          1500:     cflag = outdata & 1;
        !          1501:     outdata>>= 1;
        !          1502:     if (cflag)
        !          1503:       outdata |= 1<<(bits-1);
        !          1504:     loop--;
        !          1505:   }
        !          1506:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1507:   PC+= 2;
        !          1508: }
        !          1509: 
        !          1510: void cpu_op_1517b(t_ipc *ipc) /* ROR */ {
        !          1511:   /* mask f1f8, bits e038, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1512:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1513:   uint8 srcdata = DATAREG(srcreg);
        !          1514:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1515:   uint8 dstdata = DATAREG(dstreg);
        !          1516:   uint8 bits = 8;
        !          1517:   uint8 loop = srcdata & 63;
        !          1518:   uint8 cflag = 0;
        !          1519:   uint8 outdata = dstdata;
        !          1520: 
        !          1521:   while(loop) {
        !          1522:     cflag = outdata & 1;
        !          1523:     outdata>>= 1;
        !          1524:     if (cflag)
        !          1525:       outdata |= 1<<(bits-1);
        !          1526:     loop--;
        !          1527:   }
        !          1528:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1529: 
        !          1530:   CFLAG = cflag;
        !          1531:   NFLAG = ((sint8)outdata) < 0;
        !          1532:   ZFLAG = !outdata;
        !          1533:   VFLAG = 0;
        !          1534:   PC+= 2;
        !          1535: }
        !          1536: 
        !          1537: void cpu_op_1518a(t_ipc *ipc) /* ROR */ {
        !          1538:   /* mask f1f8, bits e078, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1539:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1540:   uint16 srcdata = DATAREG(srcreg);
        !          1541:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1542:   uint16 dstdata = DATAREG(dstreg);
        !          1543:   uint8 bits = 16;
        !          1544:   uint8 loop = srcdata & 63;
        !          1545:   uint8 cflag = 0;
        !          1546:   uint16 outdata = dstdata;
        !          1547: 
        !          1548:   while(loop) {
        !          1549:     cflag = outdata & 1;
        !          1550:     outdata>>= 1;
        !          1551:     if (cflag)
        !          1552:       outdata |= 1<<(bits-1);
        !          1553:     loop--;
        !          1554:   }
        !          1555:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1556:   PC+= 2;
        !          1557: }
        !          1558: 
        !          1559: void cpu_op_1518b(t_ipc *ipc) /* ROR */ {
        !          1560:   /* mask f1f8, bits e078, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1561:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1562:   uint16 srcdata = DATAREG(srcreg);
        !          1563:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1564:   uint16 dstdata = DATAREG(dstreg);
        !          1565:   uint8 bits = 16;
        !          1566:   uint8 loop = srcdata & 63;
        !          1567:   uint8 cflag = 0;
        !          1568:   uint16 outdata = dstdata;
        !          1569: 
        !          1570:   while(loop) {
        !          1571:     cflag = outdata & 1;
        !          1572:     outdata>>= 1;
        !          1573:     if (cflag)
        !          1574:       outdata |= 1<<(bits-1);
        !          1575:     loop--;
        !          1576:   }
        !          1577:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1578: 
        !          1579:   CFLAG = cflag;
        !          1580:   NFLAG = ((sint16)outdata) < 0;
        !          1581:   ZFLAG = !outdata;
        !          1582:   VFLAG = 0;
        !          1583:   PC+= 2;
        !          1584: }
        !          1585: 
        !          1586: void cpu_op_1519a(t_ipc *ipc) /* ROR */ {
        !          1587:   /* mask f1f8, bits e0b8, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1588:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1589:   uint32 srcdata = DATAREG(srcreg);
        !          1590:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1591:   uint32 dstdata = DATAREG(dstreg);
        !          1592:   uint8 bits = 32;
        !          1593:   uint8 loop = srcdata & 63;
        !          1594:   uint8 cflag = 0;
        !          1595:   uint32 outdata = dstdata;
        !          1596: 
        !          1597:   while(loop) {
        !          1598:     cflag = outdata & 1;
        !          1599:     outdata>>= 1;
        !          1600:     if (cflag)
        !          1601:       outdata |= 1<<(bits-1);
        !          1602:     loop--;
        !          1603:   }
        !          1604:   DATAREG(dstreg) = outdata;
        !          1605:   PC+= 2;
        !          1606: }
        !          1607: 
        !          1608: void cpu_op_1519b(t_ipc *ipc) /* ROR */ {
        !          1609:   /* mask f1f8, bits e0b8, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1610:   int srcreg = (ipc->opcode >> 9) & 7;
        !          1611:   uint32 srcdata = DATAREG(srcreg);
        !          1612:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1613:   uint32 dstdata = DATAREG(dstreg);
        !          1614:   uint8 bits = 32;
        !          1615:   uint8 loop = srcdata & 63;
        !          1616:   uint8 cflag = 0;
        !          1617:   uint32 outdata = dstdata;
        !          1618: 
        !          1619:   while(loop) {
        !          1620:     cflag = outdata & 1;
        !          1621:     outdata>>= 1;
        !          1622:     if (cflag)
        !          1623:       outdata |= 1<<(bits-1);
        !          1624:     loop--;
        !          1625:   }
        !          1626:   DATAREG(dstreg) = outdata;
        !          1627: 
        !          1628:   CFLAG = cflag;
        !          1629:   NFLAG = ((sint32)outdata) < 0;
        !          1630:   ZFLAG = !outdata;
        !          1631:   VFLAG = 0;
        !          1632:   PC+= 2;
        !          1633: }
        !          1634: 
        !          1635: void cpu_op_1520a(t_ipc *ipc) /* ASL */ {
        !          1636:   /* mask f1f8, bits e100, mnemonic 70, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1637:   unsigned int srcdata = ipc->src;
        !          1638:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1639:   uint8 dstdata = DATAREG(dstreg);
        !          1640:   uint8 bits = 8;
        !          1641:   uint8 count = srcdata & 63;
        !          1642:   uint8 outdata = count >= bits ? 0 : (dstdata << count);
        !          1643: 
        !          1644:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1645:   PC+= 2;
        !          1646: }
        !          1647: 
        !          1648: void cpu_op_1520b(t_ipc *ipc) /* ASL */ {
        !          1649:   /* mask f1f8, bits e100, mnemonic 70, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1650:   unsigned int srcdata = ipc->src;
        !          1651:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1652:   uint8 dstdata = DATAREG(dstreg);
        !          1653:   uint8 bits = 8;
        !          1654:   uint8 count = srcdata & 63;
        !          1655:   uint8 outdata = count >= bits ? 0 : (dstdata << count);
        !          1656: 
        !          1657:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1658: 
        !          1659:   if (!count)
        !          1660:     CFLAG = 0;
        !          1661:   else if (count >= bits) {
        !          1662:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          1663:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          1664:     VFLAG = !dstdata;
        !          1665:   } else {
        !          1666:     CFLAG = dstdata>>(bits-count) & 1;
        !          1667:     XFLAG = dstdata>>(bits-count) & 1;
        !          1668:     {
        !          1669:       uint8 mask = 0xff << (7-count);
        !          1670:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          1671:     }
        !          1672:   }
        !          1673:   NFLAG = ((sint8)outdata) < 0;
        !          1674:   ZFLAG = !outdata;
        !          1675:   PC+= 2;
        !          1676: }
        !          1677: 
        !          1678: void cpu_op_1521a(t_ipc *ipc) /* ASL */ {
        !          1679:   /* mask f1f8, bits e140, mnemonic 70, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1680:   unsigned int srcdata = ipc->src;
        !          1681:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1682:   uint16 dstdata = DATAREG(dstreg);
        !          1683:   uint8 bits = 16;
        !          1684:   uint8 count = srcdata & 63;
        !          1685:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          1686: 
        !          1687:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1688:   PC+= 2;
        !          1689: }
        !          1690: 
        !          1691: void cpu_op_1521b(t_ipc *ipc) /* ASL */ {
        !          1692:   /* mask f1f8, bits e140, mnemonic 70, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1693:   unsigned int srcdata = ipc->src;
        !          1694:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1695:   uint16 dstdata = DATAREG(dstreg);
        !          1696:   uint8 bits = 16;
        !          1697:   uint8 count = srcdata & 63;
        !          1698:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          1699: 
        !          1700:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1701: 
        !          1702:   if (!count)
        !          1703:     CFLAG = 0;
        !          1704:   else if (count >= bits) {
        !          1705:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          1706:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          1707:     VFLAG = !dstdata;
        !          1708:   } else {
        !          1709:     CFLAG = dstdata>>(bits-count) & 1;
        !          1710:     XFLAG = dstdata>>(bits-count) & 1;
        !          1711:     {
        !          1712:       uint16 mask = 0xffff << (15-count);
        !          1713:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          1714:     }
        !          1715:   }
        !          1716:   NFLAG = ((sint16)outdata) < 0;
        !          1717:   ZFLAG = !outdata;
        !          1718:   PC+= 2;
        !          1719: }
        !          1720: 
        !          1721: void cpu_op_1522a(t_ipc *ipc) /* ASL */ {
        !          1722:   /* mask f1f8, bits e180, mnemonic 70, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1723:   unsigned int srcdata = ipc->src;
        !          1724:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1725:   uint32 dstdata = DATAREG(dstreg);
        !          1726:   uint8 bits = 32;
        !          1727:   uint8 count = srcdata & 63;
        !          1728:   uint32 outdata = count >= bits ? 0 : (dstdata << count);
        !          1729: 
        !          1730:   DATAREG(dstreg) = outdata;
        !          1731:   PC+= 2;
        !          1732: }
        !          1733: 
        !          1734: void cpu_op_1522b(t_ipc *ipc) /* ASL */ {
        !          1735:   /* mask f1f8, bits e180, mnemonic 70, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1736:   unsigned int srcdata = ipc->src;
        !          1737:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1738:   uint32 dstdata = DATAREG(dstreg);
        !          1739:   uint8 bits = 32;
        !          1740:   uint8 count = srcdata & 63;
        !          1741:   uint32 outdata = count >= bits ? 0 : (dstdata << count);
        !          1742: 
        !          1743:   DATAREG(dstreg) = outdata;
        !          1744: 
        !          1745:   if (!count)
        !          1746:     CFLAG = 0;
        !          1747:   else if (count >= bits) {
        !          1748:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          1749:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          1750:     VFLAG = !dstdata;
        !          1751:   } else {
        !          1752:     CFLAG = dstdata>>(bits-count) & 1;
        !          1753:     XFLAG = dstdata>>(bits-count) & 1;
        !          1754:     {
        !          1755:       uint32 mask = 0xffffffff <<(31-count);
        !          1756:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          1757:     }
        !          1758:   }
        !          1759:   NFLAG = ((sint32)outdata) < 0;
        !          1760:   ZFLAG = !outdata;
        !          1761:   PC+= 2;
        !          1762: }
        !          1763: 
        !          1764: void cpu_op_1523a(t_ipc *ipc) /* LSL */ {
        !          1765:   /* mask f1f8, bits e108, mnemonic 71, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1766:   unsigned int srcdata = ipc->src;
        !          1767:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1768:   uint8 dstdata = DATAREG(dstreg);
        !          1769:   uint8 bits = 8;
        !          1770:   uint8 count = srcdata & 63;
        !          1771:   uint8 outdata = count >= bits ? 0 : (dstdata << count);
        !          1772: 
        !          1773:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1774:   PC+= 2;
        !          1775: }
        !          1776: 
        !          1777: void cpu_op_1523b(t_ipc *ipc) /* LSL */ {
        !          1778:   /* mask f1f8, bits e108, mnemonic 71, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1779:   unsigned int srcdata = ipc->src;
        !          1780:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1781:   uint8 dstdata = DATAREG(dstreg);
        !          1782:   uint8 bits = 8;
        !          1783:   uint8 count = srcdata & 63;
        !          1784:   uint8 outdata = count >= bits ? 0 : (dstdata << count);
        !          1785: 
        !          1786:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1787: 
        !          1788:   if (!count)
        !          1789:     CFLAG = 0;
        !          1790:   else if (count >= bits) {
        !          1791:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          1792:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          1793:   } else {
        !          1794:     CFLAG = dstdata>>(bits-count) & 1;
        !          1795:     XFLAG = dstdata>>(bits-count) & 1;
        !          1796:   }
        !          1797:   VFLAG = 0;
        !          1798:   NFLAG = ((sint8)outdata) < 0;
        !          1799:   ZFLAG = !outdata;
        !          1800:   PC+= 2;
        !          1801: }
        !          1802: 
        !          1803: void cpu_op_1524a(t_ipc *ipc) /* LSL */ {
        !          1804:   /* mask f1f8, bits e148, mnemonic 71, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1805:   unsigned int srcdata = ipc->src;
        !          1806:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1807:   uint16 dstdata = DATAREG(dstreg);
        !          1808:   uint8 bits = 16;
        !          1809:   uint8 count = srcdata & 63;
        !          1810:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          1811: 
        !          1812:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1813:   PC+= 2;
        !          1814: }
        !          1815: 
        !          1816: void cpu_op_1524b(t_ipc *ipc) /* LSL */ {
        !          1817:   /* mask f1f8, bits e148, mnemonic 71, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1818:   unsigned int srcdata = ipc->src;
        !          1819:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1820:   uint16 dstdata = DATAREG(dstreg);
        !          1821:   uint8 bits = 16;
        !          1822:   uint8 count = srcdata & 63;
        !          1823:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          1824: 
        !          1825:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1826: 
        !          1827:   if (!count)
        !          1828:     CFLAG = 0;
        !          1829:   else if (count >= bits) {
        !          1830:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          1831:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          1832:   } else {
        !          1833:     CFLAG = dstdata>>(bits-count) & 1;
        !          1834:     XFLAG = dstdata>>(bits-count) & 1;
        !          1835:   }
        !          1836:   VFLAG = 0;
        !          1837:   NFLAG = ((sint16)outdata) < 0;
        !          1838:   ZFLAG = !outdata;
        !          1839:   PC+= 2;
        !          1840: }
        !          1841: 
        !          1842: void cpu_op_1525a(t_ipc *ipc) /* LSL */ {
        !          1843:   /* mask f1f8, bits e188, mnemonic 71, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1844:   unsigned int srcdata = ipc->src;
        !          1845:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1846:   uint32 dstdata = DATAREG(dstreg);
        !          1847:   uint8 bits = 32;
        !          1848:   uint8 count = srcdata & 63;
        !          1849:   uint32 outdata = count >= bits ? 0 : (dstdata << count);
        !          1850: 
        !          1851:   DATAREG(dstreg) = outdata;
        !          1852:   PC+= 2;
        !          1853: }
        !          1854: 
        !          1855: void cpu_op_1525b(t_ipc *ipc) /* LSL */ {
        !          1856:   /* mask f1f8, bits e188, mnemonic 71, priv 0, endblk 0, imm_notzero -1, used 0     set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1857:   unsigned int srcdata = ipc->src;
        !          1858:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1859:   uint32 dstdata = DATAREG(dstreg);
        !          1860:   uint8 bits = 32;
        !          1861:   uint8 count = srcdata & 63;
        !          1862:   uint32 outdata = count >= bits ? 0 : (dstdata << count);
        !          1863: 
        !          1864:   DATAREG(dstreg) = outdata;
        !          1865: 
        !          1866:   if (!count)
        !          1867:     CFLAG = 0;
        !          1868:   else if (count >= bits) {
        !          1869:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          1870:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          1871:   } else {
        !          1872:     CFLAG = dstdata>>(bits-count) & 1;
        !          1873:     XFLAG = dstdata>>(bits-count) & 1;
        !          1874:   }
        !          1875:   VFLAG = 0;
        !          1876:   NFLAG = ((sint32)outdata) < 0;
        !          1877:   ZFLAG = !outdata;
        !          1878:   PC+= 2;
        !          1879: }
        !          1880: 
        !          1881: void cpu_op_1526a(t_ipc *ipc) /* ROXL */ {
        !          1882:   /* mask f1f8, bits e110, mnemonic 72, priv 0, endblk 0, imm_notzero -1, used 1     set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1883:   unsigned int srcdata = ipc->src;
        !          1884:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1885:   uint8 dstdata = DATAREG(dstreg);
        !          1886:   uint8 bits = 8;
        !          1887:   uint8 loop = srcdata & 63;
        !          1888:   uint8 cflag = CFLAG;
        !          1889:   uint8 xflag = XFLAG;
        !          1890:   uint8 outdata = dstdata;
        !          1891: 
        !          1892:   while(loop) {
        !          1893:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          1894:     outdata<<= 1;
        !          1895:     outdata |= xflag;
        !          1896:     xflag = cflag;
        !          1897:     loop--;
        !          1898:   }
        !          1899:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1900:   PC+= 2;
        !          1901: }
        !          1902: 
        !          1903: void cpu_op_1526b(t_ipc *ipc) /* ROXL */ {
        !          1904:   /* mask f1f8, bits e110, mnemonic 72, priv 0, endblk 0, imm_notzero -1, used 1     set -1, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1905:   unsigned int srcdata = ipc->src;
        !          1906:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1907:   uint8 dstdata = DATAREG(dstreg);
        !          1908:   uint8 bits = 8;
        !          1909:   uint8 loop = srcdata & 63;
        !          1910:   uint8 cflag = CFLAG;
        !          1911:   uint8 xflag = XFLAG;
        !          1912:   uint8 outdata = dstdata;
        !          1913: 
        !          1914:   while(loop) {
        !          1915:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          1916:     outdata<<= 1;
        !          1917:     outdata |= xflag;
        !          1918:     xflag = cflag;
        !          1919:     loop--;
        !          1920:   }
        !          1921:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          1922: 
        !          1923:   XFLAG = xflag;
        !          1924:   CFLAG = xflag;
        !          1925:   NFLAG = ((sint8)outdata) < 0;
        !          1926:   ZFLAG = !outdata;
        !          1927:   VFLAG = 0;
        !          1928:   PC+= 2;
        !          1929: }
        !          1930: 
        !          1931: void cpu_op_1527a(t_ipc *ipc) /* ROXL */ {
        !          1932:   /* mask f1f8, bits e150, mnemonic 72, priv 0, endblk 0, imm_notzero -1, used 1     set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1933:   unsigned int srcdata = ipc->src;
        !          1934:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1935:   uint16 dstdata = DATAREG(dstreg);
        !          1936:   uint8 bits = 16;
        !          1937:   uint8 loop = srcdata & 63;
        !          1938:   uint8 cflag = CFLAG;
        !          1939:   uint8 xflag = XFLAG;
        !          1940:   uint16 outdata = dstdata;
        !          1941: 
        !          1942:   while(loop) {
        !          1943:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          1944:     outdata<<= 1;
        !          1945:     outdata |= xflag;
        !          1946:     xflag = cflag;
        !          1947:     loop--;
        !          1948:   }
        !          1949:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1950:   PC+= 2;
        !          1951: }
        !          1952: 
        !          1953: void cpu_op_1527b(t_ipc *ipc) /* ROXL */ {
        !          1954:   /* mask f1f8, bits e150, mnemonic 72, priv 0, endblk 0, imm_notzero -1, used 1     set -1, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1955:   unsigned int srcdata = ipc->src;
        !          1956:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1957:   uint16 dstdata = DATAREG(dstreg);
        !          1958:   uint8 bits = 16;
        !          1959:   uint8 loop = srcdata & 63;
        !          1960:   uint8 cflag = CFLAG;
        !          1961:   uint8 xflag = XFLAG;
        !          1962:   uint16 outdata = dstdata;
        !          1963: 
        !          1964:   while(loop) {
        !          1965:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          1966:     outdata<<= 1;
        !          1967:     outdata |= xflag;
        !          1968:     xflag = cflag;
        !          1969:     loop--;
        !          1970:   }
        !          1971:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          1972: 
        !          1973:   XFLAG = xflag;
        !          1974:   CFLAG = xflag;
        !          1975:   NFLAG = ((sint16)outdata) < 0;
        !          1976:   ZFLAG = !outdata;
        !          1977:   VFLAG = 0;
        !          1978:   PC+= 2;
        !          1979: }
        !          1980: 
        !          1981: void cpu_op_1528a(t_ipc *ipc) /* ROXL */ {
        !          1982:   /* mask f1f8, bits e190, mnemonic 72, priv 0, endblk 0, imm_notzero -1, used 1     set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          1983:   unsigned int srcdata = ipc->src;
        !          1984:   int dstreg = (ipc->opcode >> 0) & 7;
        !          1985:   uint32 dstdata = DATAREG(dstreg);
        !          1986:   uint8 bits = 32;
        !          1987:   uint8 loop = srcdata & 63;
        !          1988:   uint8 cflag = CFLAG;
        !          1989:   uint8 xflag = XFLAG;
        !          1990:   uint32 outdata = dstdata;
        !          1991: 
        !          1992:   while(loop) {
        !          1993:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          1994:     outdata<<= 1;
        !          1995:     outdata |= xflag;
        !          1996:     xflag = cflag;
        !          1997:     loop--;
        !          1998:   }
        !          1999:   DATAREG(dstreg) = outdata;
        !          2000:   PC+= 2;
        !          2001: }
        !          2002: 
        !          2003: void cpu_op_1528b(t_ipc *ipc) /* ROXL */ {
        !          2004:   /* mask f1f8, bits e190, mnemonic 72, priv 0, endblk 0, imm_notzero -1, used 1     set -1, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2005:   unsigned int srcdata = ipc->src;
        !          2006:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2007:   uint32 dstdata = DATAREG(dstreg);
        !          2008:   uint8 bits = 32;
        !          2009:   uint8 loop = srcdata & 63;
        !          2010:   uint8 cflag = CFLAG;
        !          2011:   uint8 xflag = XFLAG;
        !          2012:   uint32 outdata = dstdata;
        !          2013: 
        !          2014:   while(loop) {
        !          2015:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2016:     outdata<<= 1;
        !          2017:     outdata |= xflag;
        !          2018:     xflag = cflag;
        !          2019:     loop--;
        !          2020:   }
        !          2021:   DATAREG(dstreg) = outdata;
        !          2022: 
        !          2023:   XFLAG = xflag;
        !          2024:   CFLAG = xflag;
        !          2025:   NFLAG = ((sint32)outdata) < 0;
        !          2026:   ZFLAG = !outdata;
        !          2027:   VFLAG = 0;
        !          2028:   PC+= 2;
        !          2029: }
        !          2030: 
        !          2031: void cpu_op_1529a(t_ipc *ipc) /* ROL */ {
        !          2032:   /* mask f1f8, bits e118, mnemonic 73, priv 0, endblk 0, imm_notzero -1, used 0     set -2, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2033:   unsigned int srcdata = ipc->src;
        !          2034:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2035:   uint8 dstdata = DATAREG(dstreg);
        !          2036:   uint8 bits = 8;
        !          2037:   uint8 loop = srcdata & 63;
        !          2038:   uint8 cflag = 0;
        !          2039:   uint8 outdata = dstdata;
        !          2040: 
        !          2041:   while(loop) {
        !          2042:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2043:     outdata<<= 1;
        !          2044:     if (cflag)
        !          2045:       outdata |= 1;
        !          2046:     loop--;
        !          2047:   }
        !          2048:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2049:   PC+= 2;
        !          2050: }
        !          2051: 
        !          2052: void cpu_op_1529b(t_ipc *ipc) /* ROL */ {
        !          2053:   /* mask f1f8, bits e118, mnemonic 73, priv 0, endblk 0, imm_notzero -1, used 0     set -2, size 1, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2054:   unsigned int srcdata = ipc->src;
        !          2055:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2056:   uint8 dstdata = DATAREG(dstreg);
        !          2057:   uint8 bits = 8;
        !          2058:   uint8 loop = srcdata & 63;
        !          2059:   uint8 cflag = 0;
        !          2060:   uint8 outdata = dstdata;
        !          2061: 
        !          2062:   while(loop) {
        !          2063:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2064:     outdata<<= 1;
        !          2065:     if (cflag)
        !          2066:       outdata |= 1;
        !          2067:     loop--;
        !          2068:   }
        !          2069:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2070: 
        !          2071:   CFLAG = cflag;
        !          2072:   NFLAG = ((sint8)outdata) < 0;
        !          2073:   ZFLAG = !outdata;
        !          2074:   VFLAG = 0;
        !          2075:   PC+= 2;
        !          2076: }
        !          2077: 
        !          2078: void cpu_op_1530a(t_ipc *ipc) /* ROL */ {
        !          2079:   /* mask f1f8, bits e158, mnemonic 73, priv 0, endblk 0, imm_notzero -1, used 0     set -2, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2080:   unsigned int srcdata = ipc->src;
        !          2081:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2082:   uint16 dstdata = DATAREG(dstreg);
        !          2083:   uint8 bits = 16;
        !          2084:   uint8 loop = srcdata & 63;
        !          2085:   uint8 cflag = 0;
        !          2086:   uint16 outdata = dstdata;
        !          2087: 
        !          2088:   while(loop) {
        !          2089:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2090:     outdata<<= 1;
        !          2091:     if (cflag)
        !          2092:       outdata |= 1;
        !          2093:     loop--;
        !          2094:   }
        !          2095:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2096:   PC+= 2;
        !          2097: }
        !          2098: 
        !          2099: void cpu_op_1530b(t_ipc *ipc) /* ROL */ {
        !          2100:   /* mask f1f8, bits e158, mnemonic 73, priv 0, endblk 0, imm_notzero -1, used 0     set -2, size 2, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2101:   unsigned int srcdata = ipc->src;
        !          2102:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2103:   uint16 dstdata = DATAREG(dstreg);
        !          2104:   uint8 bits = 16;
        !          2105:   uint8 loop = srcdata & 63;
        !          2106:   uint8 cflag = 0;
        !          2107:   uint16 outdata = dstdata;
        !          2108: 
        !          2109:   while(loop) {
        !          2110:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2111:     outdata<<= 1;
        !          2112:     if (cflag)
        !          2113:       outdata |= 1;
        !          2114:     loop--;
        !          2115:   }
        !          2116:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2117: 
        !          2118:   CFLAG = cflag;
        !          2119:   NFLAG = ((sint16)outdata) < 0;
        !          2120:   ZFLAG = !outdata;
        !          2121:   VFLAG = 0;
        !          2122:   PC+= 2;
        !          2123: }
        !          2124: 
        !          2125: void cpu_op_1531a(t_ipc *ipc) /* ROL */ {
        !          2126:   /* mask f1f8, bits e198, mnemonic 73, priv 0, endblk 0, imm_notzero -1, used 0     set -2, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2127:   unsigned int srcdata = ipc->src;
        !          2128:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2129:   uint32 dstdata = DATAREG(dstreg);
        !          2130:   uint8 bits = 32;
        !          2131:   uint8 loop = srcdata & 63;
        !          2132:   uint8 cflag = 0;
        !          2133:   uint32 outdata = dstdata;
        !          2134: 
        !          2135:   while(loop) {
        !          2136:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2137:     outdata<<= 1;
        !          2138:     if (cflag)
        !          2139:       outdata |= 1;
        !          2140:     loop--;
        !          2141:   }
        !          2142:   DATAREG(dstreg) = outdata;
        !          2143:   PC+= 2;
        !          2144: }
        !          2145: 
        !          2146: void cpu_op_1531b(t_ipc *ipc) /* ROL */ {
        !          2147:   /* mask f1f8, bits e198, mnemonic 73, priv 0, endblk 0, imm_notzero -1, used 0     set -2, size 3, stype 15, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2148:   unsigned int srcdata = ipc->src;
        !          2149:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2150:   uint32 dstdata = DATAREG(dstreg);
        !          2151:   uint8 bits = 32;
        !          2152:   uint8 loop = srcdata & 63;
        !          2153:   uint8 cflag = 0;
        !          2154:   uint32 outdata = dstdata;
        !          2155: 
        !          2156:   while(loop) {
        !          2157:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2158:     outdata<<= 1;
        !          2159:     if (cflag)
        !          2160:       outdata |= 1;
        !          2161:     loop--;
        !          2162:   }
        !          2163:   DATAREG(dstreg) = outdata;
        !          2164: 
        !          2165:   CFLAG = cflag;
        !          2166:   NFLAG = ((sint32)outdata) < 0;
        !          2167:   ZFLAG = !outdata;
        !          2168:   VFLAG = 0;
        !          2169:   PC+= 2;
        !          2170: }
        !          2171: 
        !          2172: void cpu_op_1532a(t_ipc *ipc) /* ASL */ {
        !          2173:   /* mask fff8, bits e100, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2174:   unsigned int srcdata = 8;
        !          2175:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2176:   uint8 dstdata = DATAREG(dstreg);
        !          2177:   uint8 bits = 8;
        !          2178:   uint8 count = srcdata & 63;
        !          2179:   uint8 outdata = count >= bits ? 0 : (dstdata << count);
        !          2180: 
        !          2181:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2182:   PC+= 2;
        !          2183: }
        !          2184: 
        !          2185: void cpu_op_1532b(t_ipc *ipc) /* ASL */ {
        !          2186:   /* mask fff8, bits e100, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2187:   unsigned int srcdata = 8;
        !          2188:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2189:   uint8 dstdata = DATAREG(dstreg);
        !          2190:   uint8 bits = 8;
        !          2191:   uint8 count = srcdata & 63;
        !          2192:   uint8 outdata = count >= bits ? 0 : (dstdata << count);
        !          2193: 
        !          2194:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2195: 
        !          2196:   if (!count)
        !          2197:     CFLAG = 0;
        !          2198:   else if (count >= bits) {
        !          2199:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2200:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2201:     VFLAG = !dstdata;
        !          2202:   } else {
        !          2203:     CFLAG = dstdata>>(bits-count) & 1;
        !          2204:     XFLAG = dstdata>>(bits-count) & 1;
        !          2205:     {
        !          2206:       uint8 mask = 0xff << (7-count);
        !          2207:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          2208:     }
        !          2209:   }
        !          2210:   NFLAG = ((sint8)outdata) < 0;
        !          2211:   ZFLAG = !outdata;
        !          2212:   PC+= 2;
        !          2213: }
        !          2214: 
        !          2215: void cpu_op_1533a(t_ipc *ipc) /* ASL */ {
        !          2216:   /* mask fff8, bits e140, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2217:   unsigned int srcdata = 8;
        !          2218:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2219:   uint16 dstdata = DATAREG(dstreg);
        !          2220:   uint8 bits = 16;
        !          2221:   uint8 count = srcdata & 63;
        !          2222:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          2223: 
        !          2224:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2225:   PC+= 2;
        !          2226: }
        !          2227: 
        !          2228: void cpu_op_1533b(t_ipc *ipc) /* ASL */ {
        !          2229:   /* mask fff8, bits e140, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2230:   unsigned int srcdata = 8;
        !          2231:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2232:   uint16 dstdata = DATAREG(dstreg);
        !          2233:   uint8 bits = 16;
        !          2234:   uint8 count = srcdata & 63;
        !          2235:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          2236: 
        !          2237:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2238: 
        !          2239:   if (!count)
        !          2240:     CFLAG = 0;
        !          2241:   else if (count >= bits) {
        !          2242:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2243:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2244:     VFLAG = !dstdata;
        !          2245:   } else {
        !          2246:     CFLAG = dstdata>>(bits-count) & 1;
        !          2247:     XFLAG = dstdata>>(bits-count) & 1;
        !          2248:     {
        !          2249:       uint16 mask = 0xffff << (15-count);
        !          2250:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          2251:     }
        !          2252:   }
        !          2253:   NFLAG = ((sint16)outdata) < 0;
        !          2254:   ZFLAG = !outdata;
        !          2255:   PC+= 2;
        !          2256: }
        !          2257: 
        !          2258: void cpu_op_1534a(t_ipc *ipc) /* ASL */ {
        !          2259:   /* mask fff8, bits e180, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2260:   unsigned int srcdata = 8;
        !          2261:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2262:   uint32 dstdata = DATAREG(dstreg);
        !          2263:   uint8 bits = 32;
        !          2264:   uint8 count = srcdata & 63;
        !          2265:   uint32 outdata = count >= bits ? 0 : (dstdata << count);
        !          2266: 
        !          2267:   DATAREG(dstreg) = outdata;
        !          2268:   PC+= 2;
        !          2269: }
        !          2270: 
        !          2271: void cpu_op_1534b(t_ipc *ipc) /* ASL */ {
        !          2272:   /* mask fff8, bits e180, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2273:   unsigned int srcdata = 8;
        !          2274:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2275:   uint32 dstdata = DATAREG(dstreg);
        !          2276:   uint8 bits = 32;
        !          2277:   uint8 count = srcdata & 63;
        !          2278:   uint32 outdata = count >= bits ? 0 : (dstdata << count);
        !          2279: 
        !          2280:   DATAREG(dstreg) = outdata;
        !          2281: 
        !          2282:   if (!count)
        !          2283:     CFLAG = 0;
        !          2284:   else if (count >= bits) {
        !          2285:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2286:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2287:     VFLAG = !dstdata;
        !          2288:   } else {
        !          2289:     CFLAG = dstdata>>(bits-count) & 1;
        !          2290:     XFLAG = dstdata>>(bits-count) & 1;
        !          2291:     {
        !          2292:       uint32 mask = 0xffffffff <<(31-count);
        !          2293:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          2294:     }
        !          2295:   }
        !          2296:   NFLAG = ((sint32)outdata) < 0;
        !          2297:   ZFLAG = !outdata;
        !          2298:   PC+= 2;
        !          2299: }
        !          2300: 
        !          2301: void cpu_op_1535a(t_ipc *ipc) /* LSL */ {
        !          2302:   /* mask fff8, bits e108, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2303:   unsigned int srcdata = 8;
        !          2304:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2305:   uint8 dstdata = DATAREG(dstreg);
        !          2306:   uint8 bits = 8;
        !          2307:   uint8 count = srcdata & 63;
        !          2308:   uint8 outdata = count >= bits ? 0 : (dstdata << count);
        !          2309: 
        !          2310:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2311:   PC+= 2;
        !          2312: }
        !          2313: 
        !          2314: void cpu_op_1535b(t_ipc *ipc) /* LSL */ {
        !          2315:   /* mask fff8, bits e108, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2316:   unsigned int srcdata = 8;
        !          2317:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2318:   uint8 dstdata = DATAREG(dstreg);
        !          2319:   uint8 bits = 8;
        !          2320:   uint8 count = srcdata & 63;
        !          2321:   uint8 outdata = count >= bits ? 0 : (dstdata << count);
        !          2322: 
        !          2323:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2324: 
        !          2325:   if (!count)
        !          2326:     CFLAG = 0;
        !          2327:   else if (count >= bits) {
        !          2328:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2329:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2330:   } else {
        !          2331:     CFLAG = dstdata>>(bits-count) & 1;
        !          2332:     XFLAG = dstdata>>(bits-count) & 1;
        !          2333:   }
        !          2334:   VFLAG = 0;
        !          2335:   NFLAG = ((sint8)outdata) < 0;
        !          2336:   ZFLAG = !outdata;
        !          2337:   PC+= 2;
        !          2338: }
        !          2339: 
        !          2340: void cpu_op_1536a(t_ipc *ipc) /* LSL */ {
        !          2341:   /* mask fff8, bits e148, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2342:   unsigned int srcdata = 8;
        !          2343:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2344:   uint16 dstdata = DATAREG(dstreg);
        !          2345:   uint8 bits = 16;
        !          2346:   uint8 count = srcdata & 63;
        !          2347:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          2348: 
        !          2349:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2350:   PC+= 2;
        !          2351: }
        !          2352: 
        !          2353: void cpu_op_1536b(t_ipc *ipc) /* LSL */ {
        !          2354:   /* mask fff8, bits e148, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2355:   unsigned int srcdata = 8;
        !          2356:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2357:   uint16 dstdata = DATAREG(dstreg);
        !          2358:   uint8 bits = 16;
        !          2359:   uint8 count = srcdata & 63;
        !          2360:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          2361: 
        !          2362:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2363: 
        !          2364:   if (!count)
        !          2365:     CFLAG = 0;
        !          2366:   else if (count >= bits) {
        !          2367:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2368:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2369:   } else {
        !          2370:     CFLAG = dstdata>>(bits-count) & 1;
        !          2371:     XFLAG = dstdata>>(bits-count) & 1;
        !          2372:   }
        !          2373:   VFLAG = 0;
        !          2374:   NFLAG = ((sint16)outdata) < 0;
        !          2375:   ZFLAG = !outdata;
        !          2376:   PC+= 2;
        !          2377: }
        !          2378: 
        !          2379: void cpu_op_1537a(t_ipc *ipc) /* LSL */ {
        !          2380:   /* mask fff8, bits e188, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2381:   unsigned int srcdata = 8;
        !          2382:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2383:   uint32 dstdata = DATAREG(dstreg);
        !          2384:   uint8 bits = 32;
        !          2385:   uint8 count = srcdata & 63;
        !          2386:   uint32 outdata = count >= bits ? 0 : (dstdata << count);
        !          2387: 
        !          2388:   DATAREG(dstreg) = outdata;
        !          2389:   PC+= 2;
        !          2390: }
        !          2391: 
        !          2392: void cpu_op_1537b(t_ipc *ipc) /* LSL */ {
        !          2393:   /* mask fff8, bits e188, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2394:   unsigned int srcdata = 8;
        !          2395:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2396:   uint32 dstdata = DATAREG(dstreg);
        !          2397:   uint8 bits = 32;
        !          2398:   uint8 count = srcdata & 63;
        !          2399:   uint32 outdata = count >= bits ? 0 : (dstdata << count);
        !          2400: 
        !          2401:   DATAREG(dstreg) = outdata;
        !          2402: 
        !          2403:   if (!count)
        !          2404:     CFLAG = 0;
        !          2405:   else if (count >= bits) {
        !          2406:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2407:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2408:   } else {
        !          2409:     CFLAG = dstdata>>(bits-count) & 1;
        !          2410:     XFLAG = dstdata>>(bits-count) & 1;
        !          2411:   }
        !          2412:   VFLAG = 0;
        !          2413:   NFLAG = ((sint32)outdata) < 0;
        !          2414:   ZFLAG = !outdata;
        !          2415:   PC+= 2;
        !          2416: }
        !          2417: 
        !          2418: void cpu_op_1538a(t_ipc *ipc) /* ROXL */ {
        !          2419:   /* mask fff8, bits e110, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2420:   unsigned int srcdata = 8;
        !          2421:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2422:   uint8 dstdata = DATAREG(dstreg);
        !          2423:   uint8 bits = 8;
        !          2424:   uint8 loop = srcdata & 63;
        !          2425:   uint8 cflag = CFLAG;
        !          2426:   uint8 xflag = XFLAG;
        !          2427:   uint8 outdata = dstdata;
        !          2428: 
        !          2429:   while(loop) {
        !          2430:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2431:     outdata<<= 1;
        !          2432:     outdata |= xflag;
        !          2433:     xflag = cflag;
        !          2434:     loop--;
        !          2435:   }
        !          2436:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2437:   PC+= 2;
        !          2438: }
        !          2439: 
        !          2440: void cpu_op_1538b(t_ipc *ipc) /* ROXL */ {
        !          2441:   /* mask fff8, bits e110, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2442:   unsigned int srcdata = 8;
        !          2443:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2444:   uint8 dstdata = DATAREG(dstreg);
        !          2445:   uint8 bits = 8;
        !          2446:   uint8 loop = srcdata & 63;
        !          2447:   uint8 cflag = CFLAG;
        !          2448:   uint8 xflag = XFLAG;
        !          2449:   uint8 outdata = dstdata;
        !          2450: 
        !          2451:   while(loop) {
        !          2452:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2453:     outdata<<= 1;
        !          2454:     outdata |= xflag;
        !          2455:     xflag = cflag;
        !          2456:     loop--;
        !          2457:   }
        !          2458:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2459: 
        !          2460:   XFLAG = xflag;
        !          2461:   CFLAG = xflag;
        !          2462:   NFLAG = ((sint8)outdata) < 0;
        !          2463:   ZFLAG = !outdata;
        !          2464:   VFLAG = 0;
        !          2465:   PC+= 2;
        !          2466: }
        !          2467: 
        !          2468: void cpu_op_1539a(t_ipc *ipc) /* ROXL */ {
        !          2469:   /* mask fff8, bits e150, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2470:   unsigned int srcdata = 8;
        !          2471:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2472:   uint16 dstdata = DATAREG(dstreg);
        !          2473:   uint8 bits = 16;
        !          2474:   uint8 loop = srcdata & 63;
        !          2475:   uint8 cflag = CFLAG;
        !          2476:   uint8 xflag = XFLAG;
        !          2477:   uint16 outdata = dstdata;
        !          2478: 
        !          2479:   while(loop) {
        !          2480:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2481:     outdata<<= 1;
        !          2482:     outdata |= xflag;
        !          2483:     xflag = cflag;
        !          2484:     loop--;
        !          2485:   }
        !          2486:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2487:   PC+= 2;
        !          2488: }
        !          2489: 
        !          2490: void cpu_op_1539b(t_ipc *ipc) /* ROXL */ {
        !          2491:   /* mask fff8, bits e150, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2492:   unsigned int srcdata = 8;
        !          2493:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2494:   uint16 dstdata = DATAREG(dstreg);
        !          2495:   uint8 bits = 16;
        !          2496:   uint8 loop = srcdata & 63;
        !          2497:   uint8 cflag = CFLAG;
        !          2498:   uint8 xflag = XFLAG;
        !          2499:   uint16 outdata = dstdata;
        !          2500: 
        !          2501:   while(loop) {
        !          2502:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2503:     outdata<<= 1;
        !          2504:     outdata |= xflag;
        !          2505:     xflag = cflag;
        !          2506:     loop--;
        !          2507:   }
        !          2508:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2509: 
        !          2510:   XFLAG = xflag;
        !          2511:   CFLAG = xflag;
        !          2512:   NFLAG = ((sint16)outdata) < 0;
        !          2513:   ZFLAG = !outdata;
        !          2514:   VFLAG = 0;
        !          2515:   PC+= 2;
        !          2516: }
        !          2517: 
        !          2518: void cpu_op_1540a(t_ipc *ipc) /* ROXL */ {
        !          2519:   /* mask fff8, bits e190, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2520:   unsigned int srcdata = 8;
        !          2521:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2522:   uint32 dstdata = DATAREG(dstreg);
        !          2523:   uint8 bits = 32;
        !          2524:   uint8 loop = srcdata & 63;
        !          2525:   uint8 cflag = CFLAG;
        !          2526:   uint8 xflag = XFLAG;
        !          2527:   uint32 outdata = dstdata;
        !          2528: 
        !          2529:   while(loop) {
        !          2530:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2531:     outdata<<= 1;
        !          2532:     outdata |= xflag;
        !          2533:     xflag = cflag;
        !          2534:     loop--;
        !          2535:   }
        !          2536:   DATAREG(dstreg) = outdata;
        !          2537:   PC+= 2;
        !          2538: }
        !          2539: 
        !          2540: void cpu_op_1540b(t_ipc *ipc) /* ROXL */ {
        !          2541:   /* mask fff8, bits e190, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2542:   unsigned int srcdata = 8;
        !          2543:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2544:   uint32 dstdata = DATAREG(dstreg);
        !          2545:   uint8 bits = 32;
        !          2546:   uint8 loop = srcdata & 63;
        !          2547:   uint8 cflag = CFLAG;
        !          2548:   uint8 xflag = XFLAG;
        !          2549:   uint32 outdata = dstdata;
        !          2550: 
        !          2551:   while(loop) {
        !          2552:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2553:     outdata<<= 1;
        !          2554:     outdata |= xflag;
        !          2555:     xflag = cflag;
        !          2556:     loop--;
        !          2557:   }
        !          2558:   DATAREG(dstreg) = outdata;
        !          2559: 
        !          2560:   XFLAG = xflag;
        !          2561:   CFLAG = xflag;
        !          2562:   NFLAG = ((sint32)outdata) < 0;
        !          2563:   ZFLAG = !outdata;
        !          2564:   VFLAG = 0;
        !          2565:   PC+= 2;
        !          2566: }
        !          2567: 
        !          2568: void cpu_op_1541a(t_ipc *ipc) /* ROL */ {
        !          2569:   /* mask fff8, bits e118, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2570:   unsigned int srcdata = 8;
        !          2571:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2572:   uint8 dstdata = DATAREG(dstreg);
        !          2573:   uint8 bits = 8;
        !          2574:   uint8 loop = srcdata & 63;
        !          2575:   uint8 cflag = 0;
        !          2576:   uint8 outdata = dstdata;
        !          2577: 
        !          2578:   while(loop) {
        !          2579:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2580:     outdata<<= 1;
        !          2581:     if (cflag)
        !          2582:       outdata |= 1;
        !          2583:     loop--;
        !          2584:   }
        !          2585:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2586:   PC+= 2;
        !          2587: }
        !          2588: 
        !          2589: void cpu_op_1541b(t_ipc *ipc) /* ROL */ {
        !          2590:   /* mask fff8, bits e118, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2591:   unsigned int srcdata = 8;
        !          2592:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2593:   uint8 dstdata = DATAREG(dstreg);
        !          2594:   uint8 bits = 8;
        !          2595:   uint8 loop = srcdata & 63;
        !          2596:   uint8 cflag = 0;
        !          2597:   uint8 outdata = dstdata;
        !          2598: 
        !          2599:   while(loop) {
        !          2600:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2601:     outdata<<= 1;
        !          2602:     if (cflag)
        !          2603:       outdata |= 1;
        !          2604:     loop--;
        !          2605:   }
        !          2606:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2607: 
        !          2608:   CFLAG = cflag;
        !          2609:   NFLAG = ((sint8)outdata) < 0;
        !          2610:   ZFLAG = !outdata;
        !          2611:   VFLAG = 0;
        !          2612:   PC+= 2;
        !          2613: }
        !          2614: 
        !          2615: void cpu_op_1542a(t_ipc *ipc) /* ROL */ {
        !          2616:   /* mask fff8, bits e158, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2617:   unsigned int srcdata = 8;
        !          2618:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2619:   uint16 dstdata = DATAREG(dstreg);
        !          2620:   uint8 bits = 16;
        !          2621:   uint8 loop = srcdata & 63;
        !          2622:   uint8 cflag = 0;
        !          2623:   uint16 outdata = dstdata;
        !          2624: 
        !          2625:   while(loop) {
        !          2626:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2627:     outdata<<= 1;
        !          2628:     if (cflag)
        !          2629:       outdata |= 1;
        !          2630:     loop--;
        !          2631:   }
        !          2632:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2633:   PC+= 2;
        !          2634: }
        !          2635: 
        !          2636: void cpu_op_1542b(t_ipc *ipc) /* ROL */ {
        !          2637:   /* mask fff8, bits e158, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2638:   unsigned int srcdata = 8;
        !          2639:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2640:   uint16 dstdata = DATAREG(dstreg);
        !          2641:   uint8 bits = 16;
        !          2642:   uint8 loop = srcdata & 63;
        !          2643:   uint8 cflag = 0;
        !          2644:   uint16 outdata = dstdata;
        !          2645: 
        !          2646:   while(loop) {
        !          2647:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2648:     outdata<<= 1;
        !          2649:     if (cflag)
        !          2650:       outdata |= 1;
        !          2651:     loop--;
        !          2652:   }
        !          2653:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2654: 
        !          2655:   CFLAG = cflag;
        !          2656:   NFLAG = ((sint16)outdata) < 0;
        !          2657:   ZFLAG = !outdata;
        !          2658:   VFLAG = 0;
        !          2659:   PC+= 2;
        !          2660: }
        !          2661: 
        !          2662: void cpu_op_1543a(t_ipc *ipc) /* ROL */ {
        !          2663:   /* mask fff8, bits e198, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2664:   unsigned int srcdata = 8;
        !          2665:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2666:   uint32 dstdata = DATAREG(dstreg);
        !          2667:   uint8 bits = 32;
        !          2668:   uint8 loop = srcdata & 63;
        !          2669:   uint8 cflag = 0;
        !          2670:   uint32 outdata = dstdata;
        !          2671: 
        !          2672:   while(loop) {
        !          2673:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2674:     outdata<<= 1;
        !          2675:     if (cflag)
        !          2676:       outdata |= 1;
        !          2677:     loop--;
        !          2678:   }
        !          2679:   DATAREG(dstreg) = outdata;
        !          2680:   PC+= 2;
        !          2681: }
        !          2682: 
        !          2683: void cpu_op_1543b(t_ipc *ipc) /* ROL */ {
        !          2684:   /* mask fff8, bits e198, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 14, dtype 0, sbitpos 0, dbitpos 0, immvalue 8 */
        !          2685:   unsigned int srcdata = 8;
        !          2686:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2687:   uint32 dstdata = DATAREG(dstreg);
        !          2688:   uint8 bits = 32;
        !          2689:   uint8 loop = srcdata & 63;
        !          2690:   uint8 cflag = 0;
        !          2691:   uint32 outdata = dstdata;
        !          2692: 
        !          2693:   while(loop) {
        !          2694:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2695:     outdata<<= 1;
        !          2696:     if (cflag)
        !          2697:       outdata |= 1;
        !          2698:     loop--;
        !          2699:   }
        !          2700:   DATAREG(dstreg) = outdata;
        !          2701: 
        !          2702:   CFLAG = cflag;
        !          2703:   NFLAG = ((sint32)outdata) < 0;
        !          2704:   ZFLAG = !outdata;
        !          2705:   VFLAG = 0;
        !          2706:   PC+= 2;
        !          2707: }
        !          2708: 
        !          2709: void cpu_op_1544a(t_ipc *ipc) /* ASL */ {
        !          2710:   /* mask f1f8, bits e120, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2711:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2712:   uint8 srcdata = DATAREG(srcreg);
        !          2713:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2714:   uint8 dstdata = DATAREG(dstreg);
        !          2715:   uint8 bits = 8;
        !          2716:   uint8 count = srcdata & 63;
        !          2717:   uint8 outdata = count >= bits ? 0 : (dstdata << count);
        !          2718: 
        !          2719:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2720:   PC+= 2;
        !          2721: }
        !          2722: 
        !          2723: void cpu_op_1544b(t_ipc *ipc) /* ASL */ {
        !          2724:   /* mask f1f8, bits e120, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2725:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2726:   uint8 srcdata = DATAREG(srcreg);
        !          2727:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2728:   uint8 dstdata = DATAREG(dstreg);
        !          2729:   uint8 bits = 8;
        !          2730:   uint8 count = srcdata & 63;
        !          2731:   uint8 outdata = count >= bits ? 0 : (dstdata << count);
        !          2732: 
        !          2733:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2734: 
        !          2735:   if (!count)
        !          2736:     CFLAG = 0;
        !          2737:   else if (count >= bits) {
        !          2738:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2739:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2740:     VFLAG = !dstdata;
        !          2741:   } else {
        !          2742:     CFLAG = dstdata>>(bits-count) & 1;
        !          2743:     XFLAG = dstdata>>(bits-count) & 1;
        !          2744:     {
        !          2745:       uint8 mask = 0xff << (7-count);
        !          2746:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          2747:     }
        !          2748:   }
        !          2749:   NFLAG = ((sint8)outdata) < 0;
        !          2750:   ZFLAG = !outdata;
        !          2751:   PC+= 2;
        !          2752: }
        !          2753: 
        !          2754: void cpu_op_1545a(t_ipc *ipc) /* ASL */ {
        !          2755:   /* mask f1f8, bits e160, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2756:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2757:   uint16 srcdata = DATAREG(srcreg);
        !          2758:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2759:   uint16 dstdata = DATAREG(dstreg);
        !          2760:   uint8 bits = 16;
        !          2761:   uint8 count = srcdata & 63;
        !          2762:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          2763: 
        !          2764:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2765:   PC+= 2;
        !          2766: }
        !          2767: 
        !          2768: void cpu_op_1545b(t_ipc *ipc) /* ASL */ {
        !          2769:   /* mask f1f8, bits e160, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2770:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2771:   uint16 srcdata = DATAREG(srcreg);
        !          2772:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2773:   uint16 dstdata = DATAREG(dstreg);
        !          2774:   uint8 bits = 16;
        !          2775:   uint8 count = srcdata & 63;
        !          2776:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          2777: 
        !          2778:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2779: 
        !          2780:   if (!count)
        !          2781:     CFLAG = 0;
        !          2782:   else if (count >= bits) {
        !          2783:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2784:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2785:     VFLAG = !dstdata;
        !          2786:   } else {
        !          2787:     CFLAG = dstdata>>(bits-count) & 1;
        !          2788:     XFLAG = dstdata>>(bits-count) & 1;
        !          2789:     {
        !          2790:       uint16 mask = 0xffff << (15-count);
        !          2791:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          2792:     }
        !          2793:   }
        !          2794:   NFLAG = ((sint16)outdata) < 0;
        !          2795:   ZFLAG = !outdata;
        !          2796:   PC+= 2;
        !          2797: }
        !          2798: 
        !          2799: void cpu_op_1546a(t_ipc *ipc) /* ASL */ {
        !          2800:   /* mask f1f8, bits e1a0, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2801:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2802:   uint32 srcdata = DATAREG(srcreg);
        !          2803:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2804:   uint32 dstdata = DATAREG(dstreg);
        !          2805:   uint8 bits = 32;
        !          2806:   uint8 count = srcdata & 63;
        !          2807:   uint32 outdata = count >= bits ? 0 : (dstdata << count);
        !          2808: 
        !          2809:   DATAREG(dstreg) = outdata;
        !          2810:   PC+= 2;
        !          2811: }
        !          2812: 
        !          2813: void cpu_op_1546b(t_ipc *ipc) /* ASL */ {
        !          2814:   /* mask f1f8, bits e1a0, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2815:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2816:   uint32 srcdata = DATAREG(srcreg);
        !          2817:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2818:   uint32 dstdata = DATAREG(dstreg);
        !          2819:   uint8 bits = 32;
        !          2820:   uint8 count = srcdata & 63;
        !          2821:   uint32 outdata = count >= bits ? 0 : (dstdata << count);
        !          2822: 
        !          2823:   DATAREG(dstreg) = outdata;
        !          2824: 
        !          2825:   if (!count)
        !          2826:     CFLAG = 0;
        !          2827:   else if (count >= bits) {
        !          2828:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2829:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2830:     VFLAG = !dstdata;
        !          2831:   } else {
        !          2832:     CFLAG = dstdata>>(bits-count) & 1;
        !          2833:     XFLAG = dstdata>>(bits-count) & 1;
        !          2834:     {
        !          2835:       uint32 mask = 0xffffffff <<(31-count);
        !          2836:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          2837:     }
        !          2838:   }
        !          2839:   NFLAG = ((sint32)outdata) < 0;
        !          2840:   ZFLAG = !outdata;
        !          2841:   PC+= 2;
        !          2842: }
        !          2843: 
        !          2844: void cpu_op_1547a(t_ipc *ipc) /* LSL */ {
        !          2845:   /* mask f1f8, bits e128, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2846:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2847:   uint8 srcdata = DATAREG(srcreg);
        !          2848:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2849:   uint8 dstdata = DATAREG(dstreg);
        !          2850:   uint8 bits = 8;
        !          2851:   uint8 count = srcdata & 63;
        !          2852:   uint8 outdata = count >= bits ? 0 : (dstdata << count);
        !          2853: 
        !          2854:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2855:   PC+= 2;
        !          2856: }
        !          2857: 
        !          2858: void cpu_op_1547b(t_ipc *ipc) /* LSL */ {
        !          2859:   /* mask f1f8, bits e128, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2860:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2861:   uint8 srcdata = DATAREG(srcreg);
        !          2862:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2863:   uint8 dstdata = DATAREG(dstreg);
        !          2864:   uint8 bits = 8;
        !          2865:   uint8 count = srcdata & 63;
        !          2866:   uint8 outdata = count >= bits ? 0 : (dstdata << count);
        !          2867: 
        !          2868:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2869: 
        !          2870:   if (!count)
        !          2871:     CFLAG = 0;
        !          2872:   else if (count >= bits) {
        !          2873:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2874:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2875:   } else {
        !          2876:     CFLAG = dstdata>>(bits-count) & 1;
        !          2877:     XFLAG = dstdata>>(bits-count) & 1;
        !          2878:   }
        !          2879:   VFLAG = 0;
        !          2880:   NFLAG = ((sint8)outdata) < 0;
        !          2881:   ZFLAG = !outdata;
        !          2882:   PC+= 2;
        !          2883: }
        !          2884: 
        !          2885: void cpu_op_1548a(t_ipc *ipc) /* LSL */ {
        !          2886:   /* mask f1f8, bits e168, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2887:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2888:   uint16 srcdata = DATAREG(srcreg);
        !          2889:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2890:   uint16 dstdata = DATAREG(dstreg);
        !          2891:   uint8 bits = 16;
        !          2892:   uint8 count = srcdata & 63;
        !          2893:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          2894: 
        !          2895:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2896:   PC+= 2;
        !          2897: }
        !          2898: 
        !          2899: void cpu_op_1548b(t_ipc *ipc) /* LSL */ {
        !          2900:   /* mask f1f8, bits e168, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2901:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2902:   uint16 srcdata = DATAREG(srcreg);
        !          2903:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2904:   uint16 dstdata = DATAREG(dstreg);
        !          2905:   uint8 bits = 16;
        !          2906:   uint8 count = srcdata & 63;
        !          2907:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          2908: 
        !          2909:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          2910: 
        !          2911:   if (!count)
        !          2912:     CFLAG = 0;
        !          2913:   else if (count >= bits) {
        !          2914:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2915:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2916:   } else {
        !          2917:     CFLAG = dstdata>>(bits-count) & 1;
        !          2918:     XFLAG = dstdata>>(bits-count) & 1;
        !          2919:   }
        !          2920:   VFLAG = 0;
        !          2921:   NFLAG = ((sint16)outdata) < 0;
        !          2922:   ZFLAG = !outdata;
        !          2923:   PC+= 2;
        !          2924: }
        !          2925: 
        !          2926: void cpu_op_1549a(t_ipc *ipc) /* LSL */ {
        !          2927:   /* mask f1f8, bits e1a8, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2928:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2929:   uint32 srcdata = DATAREG(srcreg);
        !          2930:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2931:   uint32 dstdata = DATAREG(dstreg);
        !          2932:   uint8 bits = 32;
        !          2933:   uint8 count = srcdata & 63;
        !          2934:   uint32 outdata = count >= bits ? 0 : (dstdata << count);
        !          2935: 
        !          2936:   DATAREG(dstreg) = outdata;
        !          2937:   PC+= 2;
        !          2938: }
        !          2939: 
        !          2940: void cpu_op_1549b(t_ipc *ipc) /* LSL */ {
        !          2941:   /* mask f1f8, bits e1a8, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2942:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2943:   uint32 srcdata = DATAREG(srcreg);
        !          2944:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2945:   uint32 dstdata = DATAREG(dstreg);
        !          2946:   uint8 bits = 32;
        !          2947:   uint8 count = srcdata & 63;
        !          2948:   uint32 outdata = count >= bits ? 0 : (dstdata << count);
        !          2949: 
        !          2950:   DATAREG(dstreg) = outdata;
        !          2951: 
        !          2952:   if (!count)
        !          2953:     CFLAG = 0;
        !          2954:   else if (count >= bits) {
        !          2955:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2956:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          2957:   } else {
        !          2958:     CFLAG = dstdata>>(bits-count) & 1;
        !          2959:     XFLAG = dstdata>>(bits-count) & 1;
        !          2960:   }
        !          2961:   VFLAG = 0;
        !          2962:   NFLAG = ((sint32)outdata) < 0;
        !          2963:   ZFLAG = !outdata;
        !          2964:   PC+= 2;
        !          2965: }
        !          2966: 
        !          2967: void cpu_op_1550a(t_ipc *ipc) /* ROXL */ {
        !          2968:   /* mask f1f8, bits e130, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2969:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2970:   uint8 srcdata = DATAREG(srcreg);
        !          2971:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2972:   uint8 dstdata = DATAREG(dstreg);
        !          2973:   uint8 bits = 8;
        !          2974:   uint8 loop = srcdata & 63;
        !          2975:   uint8 cflag = CFLAG;
        !          2976:   uint8 xflag = XFLAG;
        !          2977:   uint8 outdata = dstdata;
        !          2978: 
        !          2979:   while(loop) {
        !          2980:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          2981:     outdata<<= 1;
        !          2982:     outdata |= xflag;
        !          2983:     xflag = cflag;
        !          2984:     loop--;
        !          2985:   }
        !          2986:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          2987:   PC+= 2;
        !          2988: }
        !          2989: 
        !          2990: void cpu_op_1550b(t_ipc *ipc) /* ROXL */ {
        !          2991:   /* mask f1f8, bits e130, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          2992:   int srcreg = (ipc->opcode >> 9) & 7;
        !          2993:   uint8 srcdata = DATAREG(srcreg);
        !          2994:   int dstreg = (ipc->opcode >> 0) & 7;
        !          2995:   uint8 dstdata = DATAREG(dstreg);
        !          2996:   uint8 bits = 8;
        !          2997:   uint8 loop = srcdata & 63;
        !          2998:   uint8 cflag = CFLAG;
        !          2999:   uint8 xflag = XFLAG;
        !          3000:   uint8 outdata = dstdata;
        !          3001: 
        !          3002:   while(loop) {
        !          3003:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          3004:     outdata<<= 1;
        !          3005:     outdata |= xflag;
        !          3006:     xflag = cflag;
        !          3007:     loop--;
        !          3008:   }
        !          3009:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          3010: 
        !          3011:   XFLAG = xflag;
        !          3012:   CFLAG = xflag;
        !          3013:   NFLAG = ((sint8)outdata) < 0;
        !          3014:   ZFLAG = !outdata;
        !          3015:   VFLAG = 0;
        !          3016:   PC+= 2;
        !          3017: }
        !          3018: 
        !          3019: void cpu_op_1551a(t_ipc *ipc) /* ROXL */ {
        !          3020:   /* mask f1f8, bits e170, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          3021:   int srcreg = (ipc->opcode >> 9) & 7;
        !          3022:   uint16 srcdata = DATAREG(srcreg);
        !          3023:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3024:   uint16 dstdata = DATAREG(dstreg);
        !          3025:   uint8 bits = 16;
        !          3026:   uint8 loop = srcdata & 63;
        !          3027:   uint8 cflag = CFLAG;
        !          3028:   uint8 xflag = XFLAG;
        !          3029:   uint16 outdata = dstdata;
        !          3030: 
        !          3031:   while(loop) {
        !          3032:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          3033:     outdata<<= 1;
        !          3034:     outdata |= xflag;
        !          3035:     xflag = cflag;
        !          3036:     loop--;
        !          3037:   }
        !          3038:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          3039:   PC+= 2;
        !          3040: }
        !          3041: 
        !          3042: void cpu_op_1551b(t_ipc *ipc) /* ROXL */ {
        !          3043:   /* mask f1f8, bits e170, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          3044:   int srcreg = (ipc->opcode >> 9) & 7;
        !          3045:   uint16 srcdata = DATAREG(srcreg);
        !          3046:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3047:   uint16 dstdata = DATAREG(dstreg);
        !          3048:   uint8 bits = 16;
        !          3049:   uint8 loop = srcdata & 63;
        !          3050:   uint8 cflag = CFLAG;
        !          3051:   uint8 xflag = XFLAG;
        !          3052:   uint16 outdata = dstdata;
        !          3053: 
        !          3054:   while(loop) {
        !          3055:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          3056:     outdata<<= 1;
        !          3057:     outdata |= xflag;
        !          3058:     xflag = cflag;
        !          3059:     loop--;
        !          3060:   }
        !          3061:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          3062: 
        !          3063:   XFLAG = xflag;
        !          3064:   CFLAG = xflag;
        !          3065:   NFLAG = ((sint16)outdata) < 0;
        !          3066:   ZFLAG = !outdata;
        !          3067:   VFLAG = 0;
        !          3068:   PC+= 2;
        !          3069: }
        !          3070: 
        !          3071: void cpu_op_1552a(t_ipc *ipc) /* ROXL */ {
        !          3072:   /* mask f1f8, bits e1b0, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          3073:   int srcreg = (ipc->opcode >> 9) & 7;
        !          3074:   uint32 srcdata = DATAREG(srcreg);
        !          3075:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3076:   uint32 dstdata = DATAREG(dstreg);
        !          3077:   uint8 bits = 32;
        !          3078:   uint8 loop = srcdata & 63;
        !          3079:   uint8 cflag = CFLAG;
        !          3080:   uint8 xflag = XFLAG;
        !          3081:   uint32 outdata = dstdata;
        !          3082: 
        !          3083:   while(loop) {
        !          3084:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          3085:     outdata<<= 1;
        !          3086:     outdata |= xflag;
        !          3087:     xflag = cflag;
        !          3088:     loop--;
        !          3089:   }
        !          3090:   DATAREG(dstreg) = outdata;
        !          3091:   PC+= 2;
        !          3092: }
        !          3093: 
        !          3094: void cpu_op_1552b(t_ipc *ipc) /* ROXL */ {
        !          3095:   /* mask f1f8, bits e1b0, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          3096:   int srcreg = (ipc->opcode >> 9) & 7;
        !          3097:   uint32 srcdata = DATAREG(srcreg);
        !          3098:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3099:   uint32 dstdata = DATAREG(dstreg);
        !          3100:   uint8 bits = 32;
        !          3101:   uint8 loop = srcdata & 63;
        !          3102:   uint8 cflag = CFLAG;
        !          3103:   uint8 xflag = XFLAG;
        !          3104:   uint32 outdata = dstdata;
        !          3105: 
        !          3106:   while(loop) {
        !          3107:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          3108:     outdata<<= 1;
        !          3109:     outdata |= xflag;
        !          3110:     xflag = cflag;
        !          3111:     loop--;
        !          3112:   }
        !          3113:   DATAREG(dstreg) = outdata;
        !          3114: 
        !          3115:   XFLAG = xflag;
        !          3116:   CFLAG = xflag;
        !          3117:   NFLAG = ((sint32)outdata) < 0;
        !          3118:   ZFLAG = !outdata;
        !          3119:   VFLAG = 0;
        !          3120:   PC+= 2;
        !          3121: }
        !          3122: 
        !          3123: void cpu_op_1553a(t_ipc *ipc) /* ROL */ {
        !          3124:   /* mask f1f8, bits e138, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          3125:   int srcreg = (ipc->opcode >> 9) & 7;
        !          3126:   uint8 srcdata = DATAREG(srcreg);
        !          3127:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3128:   uint8 dstdata = DATAREG(dstreg);
        !          3129:   uint8 bits = 8;
        !          3130:   uint8 loop = srcdata & 63;
        !          3131:   uint8 cflag = 0;
        !          3132:   uint8 outdata = dstdata;
        !          3133: 
        !          3134:   while(loop) {
        !          3135:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          3136:     outdata<<= 1;
        !          3137:     if (cflag)
        !          3138:       outdata |= 1;
        !          3139:     loop--;
        !          3140:   }
        !          3141:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          3142:   PC+= 2;
        !          3143: }
        !          3144: 
        !          3145: void cpu_op_1553b(t_ipc *ipc) /* ROL */ {
        !          3146:   /* mask f1f8, bits e138, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          3147:   int srcreg = (ipc->opcode >> 9) & 7;
        !          3148:   uint8 srcdata = DATAREG(srcreg);
        !          3149:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3150:   uint8 dstdata = DATAREG(dstreg);
        !          3151:   uint8 bits = 8;
        !          3152:   uint8 loop = srcdata & 63;
        !          3153:   uint8 cflag = 0;
        !          3154:   uint8 outdata = dstdata;
        !          3155: 
        !          3156:   while(loop) {
        !          3157:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          3158:     outdata<<= 1;
        !          3159:     if (cflag)
        !          3160:       outdata |= 1;
        !          3161:     loop--;
        !          3162:   }
        !          3163:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
        !          3164: 
        !          3165:   CFLAG = cflag;
        !          3166:   NFLAG = ((sint8)outdata) < 0;
        !          3167:   ZFLAG = !outdata;
        !          3168:   VFLAG = 0;
        !          3169:   PC+= 2;
        !          3170: }
        !          3171: 
        !          3172: void cpu_op_1554a(t_ipc *ipc) /* ROL */ {
        !          3173:   /* mask f1f8, bits e178, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          3174:   int srcreg = (ipc->opcode >> 9) & 7;
        !          3175:   uint16 srcdata = DATAREG(srcreg);
        !          3176:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3177:   uint16 dstdata = DATAREG(dstreg);
        !          3178:   uint8 bits = 16;
        !          3179:   uint8 loop = srcdata & 63;
        !          3180:   uint8 cflag = 0;
        !          3181:   uint16 outdata = dstdata;
        !          3182: 
        !          3183:   while(loop) {
        !          3184:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          3185:     outdata<<= 1;
        !          3186:     if (cflag)
        !          3187:       outdata |= 1;
        !          3188:     loop--;
        !          3189:   }
        !          3190:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          3191:   PC+= 2;
        !          3192: }
        !          3193: 
        !          3194: void cpu_op_1554b(t_ipc *ipc) /* ROL */ {
        !          3195:   /* mask f1f8, bits e178, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          3196:   int srcreg = (ipc->opcode >> 9) & 7;
        !          3197:   uint16 srcdata = DATAREG(srcreg);
        !          3198:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3199:   uint16 dstdata = DATAREG(dstreg);
        !          3200:   uint8 bits = 16;
        !          3201:   uint8 loop = srcdata & 63;
        !          3202:   uint8 cflag = 0;
        !          3203:   uint16 outdata = dstdata;
        !          3204: 
        !          3205:   while(loop) {
        !          3206:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          3207:     outdata<<= 1;
        !          3208:     if (cflag)
        !          3209:       outdata |= 1;
        !          3210:     loop--;
        !          3211:   }
        !          3212:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
        !          3213: 
        !          3214:   CFLAG = cflag;
        !          3215:   NFLAG = ((sint16)outdata) < 0;
        !          3216:   ZFLAG = !outdata;
        !          3217:   VFLAG = 0;
        !          3218:   PC+= 2;
        !          3219: }
        !          3220: 
        !          3221: void cpu_op_1555a(t_ipc *ipc) /* ROL */ {
        !          3222:   /* mask f1f8, bits e1b8, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          3223:   int srcreg = (ipc->opcode >> 9) & 7;
        !          3224:   uint32 srcdata = DATAREG(srcreg);
        !          3225:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3226:   uint32 dstdata = DATAREG(dstreg);
        !          3227:   uint8 bits = 32;
        !          3228:   uint8 loop = srcdata & 63;
        !          3229:   uint8 cflag = 0;
        !          3230:   uint32 outdata = dstdata;
        !          3231: 
        !          3232:   while(loop) {
        !          3233:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          3234:     outdata<<= 1;
        !          3235:     if (cflag)
        !          3236:       outdata |= 1;
        !          3237:     loop--;
        !          3238:   }
        !          3239:   DATAREG(dstreg) = outdata;
        !          3240:   PC+= 2;
        !          3241: }
        !          3242: 
        !          3243: void cpu_op_1555b(t_ipc *ipc) /* ROL */ {
        !          3244:   /* mask f1f8, bits e1b8, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 0, sbitpos 9, dbitpos 0, immvalue 0 */
        !          3245:   int srcreg = (ipc->opcode >> 9) & 7;
        !          3246:   uint32 srcdata = DATAREG(srcreg);
        !          3247:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3248:   uint32 dstdata = DATAREG(dstreg);
        !          3249:   uint8 bits = 32;
        !          3250:   uint8 loop = srcdata & 63;
        !          3251:   uint8 cflag = 0;
        !          3252:   uint32 outdata = dstdata;
        !          3253: 
        !          3254:   while(loop) {
        !          3255:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          3256:     outdata<<= 1;
        !          3257:     if (cflag)
        !          3258:       outdata |= 1;
        !          3259:     loop--;
        !          3260:   }
        !          3261:   DATAREG(dstreg) = outdata;
        !          3262: 
        !          3263:   CFLAG = cflag;
        !          3264:   NFLAG = ((sint32)outdata) < 0;
        !          3265:   ZFLAG = !outdata;
        !          3266:   VFLAG = 0;
        !          3267:   PC+= 2;
        !          3268: }
        !          3269: 
        !          3270: void cpu_op_1556a(t_ipc *ipc) /* ASR */ {
        !          3271:   /* mask fff8, bits e0d0, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3272:   unsigned int srcdata = 1;
        !          3273:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3274:   uint32 dstaddr = ADDRREG(dstreg);
        !          3275:   uint16 dstdata = fetchword(dstaddr);
        !          3276:   uint8 bits = 16;
        !          3277:   uint8 count = srcdata & 63;
        !          3278:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3279: 
        !          3280:   storeword(dstaddr, outdata);
        !          3281:   PC+= 2;
        !          3282: }
        !          3283: 
        !          3284: void cpu_op_1556b(t_ipc *ipc) /* ASR */ {
        !          3285:   /* mask fff8, bits e0d0, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3286:   unsigned int srcdata = 1;
        !          3287:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3288:   uint32 dstaddr = ADDRREG(dstreg);
        !          3289:   uint16 dstdata = fetchword(dstaddr);
        !          3290:   uint8 bits = 16;
        !          3291:   uint8 count = srcdata & 63;
        !          3292:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3293: 
        !          3294:   storeword(dstaddr, outdata);
        !          3295: 
        !          3296:   if (!srcdata)
        !          3297:     CFLAG = 0;
        !          3298:   else if (srcdata >= bits) {
        !          3299:     CFLAG = dstdata>>(bits-1);
        !          3300:     XFLAG = dstdata>>(bits-1);
        !          3301:   } else {
        !          3302:     CFLAG = dstdata>>(count-1) & 1;
        !          3303:     XFLAG = dstdata>>(count-1) & 1;
        !          3304:   }
        !          3305:   VFLAG = 0;
        !          3306:   NFLAG = ((sint16)outdata) < 0;
        !          3307:   ZFLAG = !outdata;
        !          3308:   PC+= 2;
        !          3309: }
        !          3310: 
        !          3311: void cpu_op_1557a(t_ipc *ipc) /* ASR */ {
        !          3312:   /* mask fff8, bits e0d8, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3313:   unsigned int srcdata = 1;
        !          3314:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3315:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          3316:   uint16 dstdata = fetchword(dstaddr);
        !          3317:   uint8 bits = 16;
        !          3318:   uint8 count = srcdata & 63;
        !          3319:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3320: 
        !          3321:   storeword(dstaddr, outdata);
        !          3322:   PC+= 2;
        !          3323: }
        !          3324: 
        !          3325: void cpu_op_1557b(t_ipc *ipc) /* ASR */ {
        !          3326:   /* mask fff8, bits e0d8, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3327:   unsigned int srcdata = 1;
        !          3328:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3329:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          3330:   uint16 dstdata = fetchword(dstaddr);
        !          3331:   uint8 bits = 16;
        !          3332:   uint8 count = srcdata & 63;
        !          3333:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3334: 
        !          3335:   storeword(dstaddr, outdata);
        !          3336: 
        !          3337:   if (!srcdata)
        !          3338:     CFLAG = 0;
        !          3339:   else if (srcdata >= bits) {
        !          3340:     CFLAG = dstdata>>(bits-1);
        !          3341:     XFLAG = dstdata>>(bits-1);
        !          3342:   } else {
        !          3343:     CFLAG = dstdata>>(count-1) & 1;
        !          3344:     XFLAG = dstdata>>(count-1) & 1;
        !          3345:   }
        !          3346:   VFLAG = 0;
        !          3347:   NFLAG = ((sint16)outdata) < 0;
        !          3348:   ZFLAG = !outdata;
        !          3349:   PC+= 2;
        !          3350: }
        !          3351: 
        !          3352: void cpu_op_1558a(t_ipc *ipc) /* ASR */ {
        !          3353:   /* mask fff8, bits e0e0, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3354:   unsigned int srcdata = 1;
        !          3355:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3356:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          3357:   uint16 dstdata = fetchword(dstaddr);
        !          3358:   uint8 bits = 16;
        !          3359:   uint8 count = srcdata & 63;
        !          3360:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3361: 
        !          3362:   storeword(dstaddr, outdata);
        !          3363:   PC+= 2;
        !          3364: }
        !          3365: 
        !          3366: void cpu_op_1558b(t_ipc *ipc) /* ASR */ {
        !          3367:   /* mask fff8, bits e0e0, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3368:   unsigned int srcdata = 1;
        !          3369:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3370:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          3371:   uint16 dstdata = fetchword(dstaddr);
        !          3372:   uint8 bits = 16;
        !          3373:   uint8 count = srcdata & 63;
        !          3374:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3375: 
        !          3376:   storeword(dstaddr, outdata);
        !          3377: 
        !          3378:   if (!srcdata)
        !          3379:     CFLAG = 0;
        !          3380:   else if (srcdata >= bits) {
        !          3381:     CFLAG = dstdata>>(bits-1);
        !          3382:     XFLAG = dstdata>>(bits-1);
        !          3383:   } else {
        !          3384:     CFLAG = dstdata>>(count-1) & 1;
        !          3385:     XFLAG = dstdata>>(count-1) & 1;
        !          3386:   }
        !          3387:   VFLAG = 0;
        !          3388:   NFLAG = ((sint16)outdata) < 0;
        !          3389:   ZFLAG = !outdata;
        !          3390:   PC+= 2;
        !          3391: }
        !          3392: 
        !          3393: void cpu_op_1559a(t_ipc *ipc) /* ASR */ {
        !          3394:   /* mask fff8, bits e0e8, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3395:   unsigned int srcdata = 1;
        !          3396:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3397:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          3398:   uint16 dstdata = fetchword(dstaddr);
        !          3399:   uint8 bits = 16;
        !          3400:   uint8 count = srcdata & 63;
        !          3401:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3402: 
        !          3403:   storeword(dstaddr, outdata);
        !          3404:   PC+= 4;
        !          3405: }
        !          3406: 
        !          3407: void cpu_op_1559b(t_ipc *ipc) /* ASR */ {
        !          3408:   /* mask fff8, bits e0e8, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3409:   unsigned int srcdata = 1;
        !          3410:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3411:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          3412:   uint16 dstdata = fetchword(dstaddr);
        !          3413:   uint8 bits = 16;
        !          3414:   uint8 count = srcdata & 63;
        !          3415:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3416: 
        !          3417:   storeword(dstaddr, outdata);
        !          3418: 
        !          3419:   if (!srcdata)
        !          3420:     CFLAG = 0;
        !          3421:   else if (srcdata >= bits) {
        !          3422:     CFLAG = dstdata>>(bits-1);
        !          3423:     XFLAG = dstdata>>(bits-1);
        !          3424:   } else {
        !          3425:     CFLAG = dstdata>>(count-1) & 1;
        !          3426:     XFLAG = dstdata>>(count-1) & 1;
        !          3427:   }
        !          3428:   VFLAG = 0;
        !          3429:   NFLAG = ((sint16)outdata) < 0;
        !          3430:   ZFLAG = !outdata;
        !          3431:   PC+= 4;
        !          3432: }
        !          3433: 
        !          3434: void cpu_op_1560a(t_ipc *ipc) /* ASR */ {
        !          3435:   /* mask fff8, bits e0f0, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3436:   unsigned int srcdata = 1;
        !          3437:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3438:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          3439:   uint16 dstdata = fetchword(dstaddr);
        !          3440:   uint8 bits = 16;
        !          3441:   uint8 count = srcdata & 63;
        !          3442:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3443: 
        !          3444:   storeword(dstaddr, outdata);
        !          3445:   PC+= 4;
        !          3446: }
        !          3447: 
        !          3448: void cpu_op_1560b(t_ipc *ipc) /* ASR */ {
        !          3449:   /* mask fff8, bits e0f0, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3450:   unsigned int srcdata = 1;
        !          3451:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3452:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          3453:   uint16 dstdata = fetchword(dstaddr);
        !          3454:   uint8 bits = 16;
        !          3455:   uint8 count = srcdata & 63;
        !          3456:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3457: 
        !          3458:   storeword(dstaddr, outdata);
        !          3459: 
        !          3460:   if (!srcdata)
        !          3461:     CFLAG = 0;
        !          3462:   else if (srcdata >= bits) {
        !          3463:     CFLAG = dstdata>>(bits-1);
        !          3464:     XFLAG = dstdata>>(bits-1);
        !          3465:   } else {
        !          3466:     CFLAG = dstdata>>(count-1) & 1;
        !          3467:     XFLAG = dstdata>>(count-1) & 1;
        !          3468:   }
        !          3469:   VFLAG = 0;
        !          3470:   NFLAG = ((sint16)outdata) < 0;
        !          3471:   ZFLAG = !outdata;
        !          3472:   PC+= 4;
        !          3473: }
        !          3474: 
        !          3475: void cpu_op_1561a(t_ipc *ipc) /* ASR */ {
        !          3476:   /* mask ffff, bits e0f8, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3477:   unsigned int srcdata = 1;
        !          3478:   uint32 dstaddr = ipc->dst;
        !          3479:   uint16 dstdata = fetchword(dstaddr);
        !          3480:   uint8 bits = 16;
        !          3481:   uint8 count = srcdata & 63;
        !          3482:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3483: 
        !          3484:   storeword(dstaddr, outdata);
        !          3485:   PC+= 4;
        !          3486: }
        !          3487: 
        !          3488: void cpu_op_1561b(t_ipc *ipc) /* ASR */ {
        !          3489:   /* mask ffff, bits e0f8, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3490:   unsigned int srcdata = 1;
        !          3491:   uint32 dstaddr = ipc->dst;
        !          3492:   uint16 dstdata = fetchword(dstaddr);
        !          3493:   uint8 bits = 16;
        !          3494:   uint8 count = srcdata & 63;
        !          3495:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3496: 
        !          3497:   storeword(dstaddr, outdata);
        !          3498: 
        !          3499:   if (!srcdata)
        !          3500:     CFLAG = 0;
        !          3501:   else if (srcdata >= bits) {
        !          3502:     CFLAG = dstdata>>(bits-1);
        !          3503:     XFLAG = dstdata>>(bits-1);
        !          3504:   } else {
        !          3505:     CFLAG = dstdata>>(count-1) & 1;
        !          3506:     XFLAG = dstdata>>(count-1) & 1;
        !          3507:   }
        !          3508:   VFLAG = 0;
        !          3509:   NFLAG = ((sint16)outdata) < 0;
        !          3510:   ZFLAG = !outdata;
        !          3511:   PC+= 4;
        !          3512: }
        !          3513: 
        !          3514: void cpu_op_1562a(t_ipc *ipc) /* ASR */ {
        !          3515:   /* mask ffff, bits e0f9, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3516:   unsigned int srcdata = 1;
        !          3517:   uint32 dstaddr = ipc->dst;
        !          3518:   uint16 dstdata = fetchword(dstaddr);
        !          3519:   uint8 bits = 16;
        !          3520:   uint8 count = srcdata & 63;
        !          3521:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3522: 
        !          3523:   storeword(dstaddr, outdata);
        !          3524:   PC+= 6;
        !          3525: }
        !          3526: 
        !          3527: void cpu_op_1562b(t_ipc *ipc) /* ASR */ {
        !          3528:   /* mask ffff, bits e0f9, mnemonic 66, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3529:   unsigned int srcdata = 1;
        !          3530:   uint32 dstaddr = ipc->dst;
        !          3531:   uint16 dstdata = fetchword(dstaddr);
        !          3532:   uint8 bits = 16;
        !          3533:   uint8 count = srcdata & 63;
        !          3534:   uint16 outdata = ((sint16)dstdata) >> (count > 15 ? 15 : count);
        !          3535: 
        !          3536:   storeword(dstaddr, outdata);
        !          3537: 
        !          3538:   if (!srcdata)
        !          3539:     CFLAG = 0;
        !          3540:   else if (srcdata >= bits) {
        !          3541:     CFLAG = dstdata>>(bits-1);
        !          3542:     XFLAG = dstdata>>(bits-1);
        !          3543:   } else {
        !          3544:     CFLAG = dstdata>>(count-1) & 1;
        !          3545:     XFLAG = dstdata>>(count-1) & 1;
        !          3546:   }
        !          3547:   VFLAG = 0;
        !          3548:   NFLAG = ((sint16)outdata) < 0;
        !          3549:   ZFLAG = !outdata;
        !          3550:   PC+= 6;
        !          3551: }
        !          3552: 
        !          3553: void cpu_op_1563a(t_ipc *ipc) /* LSR */ {
        !          3554:   /* mask fff8, bits e2d0, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3555:   unsigned int srcdata = 1;
        !          3556:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3557:   uint32 dstaddr = ADDRREG(dstreg);
        !          3558:   uint16 dstdata = fetchword(dstaddr);
        !          3559:   uint8 bits = 16;
        !          3560:   uint8 count = srcdata & 63;
        !          3561:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3562: 
        !          3563:   storeword(dstaddr, outdata);
        !          3564:   PC+= 2;
        !          3565: }
        !          3566: 
        !          3567: void cpu_op_1563b(t_ipc *ipc) /* LSR */ {
        !          3568:   /* mask fff8, bits e2d0, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3569:   unsigned int srcdata = 1;
        !          3570:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3571:   uint32 dstaddr = ADDRREG(dstreg);
        !          3572:   uint16 dstdata = fetchword(dstaddr);
        !          3573:   uint8 bits = 16;
        !          3574:   uint8 count = srcdata & 63;
        !          3575:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3576: 
        !          3577:   storeword(dstaddr, outdata);
        !          3578: 
        !          3579:   if (!count)
        !          3580:     CFLAG = 0;
        !          3581:   else if (count >= bits) {
        !          3582:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3583:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3584:   } else {
        !          3585:     CFLAG = dstdata>>(count-1) & 1;
        !          3586:     XFLAG = dstdata>>(count-1) & 1;
        !          3587:   }
        !          3588:   VFLAG = 0;
        !          3589:   NFLAG = ((sint16)outdata) < 0;
        !          3590:   ZFLAG = !outdata;
        !          3591:   PC+= 2;
        !          3592: }
        !          3593: 
        !          3594: void cpu_op_1564a(t_ipc *ipc) /* LSR */ {
        !          3595:   /* mask fff8, bits e2d8, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3596:   unsigned int srcdata = 1;
        !          3597:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3598:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          3599:   uint16 dstdata = fetchword(dstaddr);
        !          3600:   uint8 bits = 16;
        !          3601:   uint8 count = srcdata & 63;
        !          3602:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3603: 
        !          3604:   storeword(dstaddr, outdata);
        !          3605:   PC+= 2;
        !          3606: }
        !          3607: 
        !          3608: void cpu_op_1564b(t_ipc *ipc) /* LSR */ {
        !          3609:   /* mask fff8, bits e2d8, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3610:   unsigned int srcdata = 1;
        !          3611:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3612:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          3613:   uint16 dstdata = fetchword(dstaddr);
        !          3614:   uint8 bits = 16;
        !          3615:   uint8 count = srcdata & 63;
        !          3616:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3617: 
        !          3618:   storeword(dstaddr, outdata);
        !          3619: 
        !          3620:   if (!count)
        !          3621:     CFLAG = 0;
        !          3622:   else if (count >= bits) {
        !          3623:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3624:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3625:   } else {
        !          3626:     CFLAG = dstdata>>(count-1) & 1;
        !          3627:     XFLAG = dstdata>>(count-1) & 1;
        !          3628:   }
        !          3629:   VFLAG = 0;
        !          3630:   NFLAG = ((sint16)outdata) < 0;
        !          3631:   ZFLAG = !outdata;
        !          3632:   PC+= 2;
        !          3633: }
        !          3634: 
        !          3635: void cpu_op_1565a(t_ipc *ipc) /* LSR */ {
        !          3636:   /* mask fff8, bits e2e0, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3637:   unsigned int srcdata = 1;
        !          3638:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3639:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          3640:   uint16 dstdata = fetchword(dstaddr);
        !          3641:   uint8 bits = 16;
        !          3642:   uint8 count = srcdata & 63;
        !          3643:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3644: 
        !          3645:   storeword(dstaddr, outdata);
        !          3646:   PC+= 2;
        !          3647: }
        !          3648: 
        !          3649: void cpu_op_1565b(t_ipc *ipc) /* LSR */ {
        !          3650:   /* mask fff8, bits e2e0, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3651:   unsigned int srcdata = 1;
        !          3652:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3653:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          3654:   uint16 dstdata = fetchword(dstaddr);
        !          3655:   uint8 bits = 16;
        !          3656:   uint8 count = srcdata & 63;
        !          3657:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3658: 
        !          3659:   storeword(dstaddr, outdata);
        !          3660: 
        !          3661:   if (!count)
        !          3662:     CFLAG = 0;
        !          3663:   else if (count >= bits) {
        !          3664:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3665:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3666:   } else {
        !          3667:     CFLAG = dstdata>>(count-1) & 1;
        !          3668:     XFLAG = dstdata>>(count-1) & 1;
        !          3669:   }
        !          3670:   VFLAG = 0;
        !          3671:   NFLAG = ((sint16)outdata) < 0;
        !          3672:   ZFLAG = !outdata;
        !          3673:   PC+= 2;
        !          3674: }
        !          3675: 
        !          3676: void cpu_op_1566a(t_ipc *ipc) /* LSR */ {
        !          3677:   /* mask fff8, bits e2e8, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3678:   unsigned int srcdata = 1;
        !          3679:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3680:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          3681:   uint16 dstdata = fetchword(dstaddr);
        !          3682:   uint8 bits = 16;
        !          3683:   uint8 count = srcdata & 63;
        !          3684:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3685: 
        !          3686:   storeword(dstaddr, outdata);
        !          3687:   PC+= 4;
        !          3688: }
        !          3689: 
        !          3690: void cpu_op_1566b(t_ipc *ipc) /* LSR */ {
        !          3691:   /* mask fff8, bits e2e8, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3692:   unsigned int srcdata = 1;
        !          3693:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3694:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          3695:   uint16 dstdata = fetchword(dstaddr);
        !          3696:   uint8 bits = 16;
        !          3697:   uint8 count = srcdata & 63;
        !          3698:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3699: 
        !          3700:   storeword(dstaddr, outdata);
        !          3701: 
        !          3702:   if (!count)
        !          3703:     CFLAG = 0;
        !          3704:   else if (count >= bits) {
        !          3705:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3706:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3707:   } else {
        !          3708:     CFLAG = dstdata>>(count-1) & 1;
        !          3709:     XFLAG = dstdata>>(count-1) & 1;
        !          3710:   }
        !          3711:   VFLAG = 0;
        !          3712:   NFLAG = ((sint16)outdata) < 0;
        !          3713:   ZFLAG = !outdata;
        !          3714:   PC+= 4;
        !          3715: }
        !          3716: 
        !          3717: void cpu_op_1567a(t_ipc *ipc) /* LSR */ {
        !          3718:   /* mask fff8, bits e2f0, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3719:   unsigned int srcdata = 1;
        !          3720:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3721:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          3722:   uint16 dstdata = fetchword(dstaddr);
        !          3723:   uint8 bits = 16;
        !          3724:   uint8 count = srcdata & 63;
        !          3725:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3726: 
        !          3727:   storeword(dstaddr, outdata);
        !          3728:   PC+= 4;
        !          3729: }
        !          3730: 
        !          3731: void cpu_op_1567b(t_ipc *ipc) /* LSR */ {
        !          3732:   /* mask fff8, bits e2f0, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3733:   unsigned int srcdata = 1;
        !          3734:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3735:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          3736:   uint16 dstdata = fetchword(dstaddr);
        !          3737:   uint8 bits = 16;
        !          3738:   uint8 count = srcdata & 63;
        !          3739:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3740: 
        !          3741:   storeword(dstaddr, outdata);
        !          3742: 
        !          3743:   if (!count)
        !          3744:     CFLAG = 0;
        !          3745:   else if (count >= bits) {
        !          3746:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3747:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3748:   } else {
        !          3749:     CFLAG = dstdata>>(count-1) & 1;
        !          3750:     XFLAG = dstdata>>(count-1) & 1;
        !          3751:   }
        !          3752:   VFLAG = 0;
        !          3753:   NFLAG = ((sint16)outdata) < 0;
        !          3754:   ZFLAG = !outdata;
        !          3755:   PC+= 4;
        !          3756: }
        !          3757: 
        !          3758: void cpu_op_1568a(t_ipc *ipc) /* LSR */ {
        !          3759:   /* mask ffff, bits e2f8, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3760:   unsigned int srcdata = 1;
        !          3761:   uint32 dstaddr = ipc->dst;
        !          3762:   uint16 dstdata = fetchword(dstaddr);
        !          3763:   uint8 bits = 16;
        !          3764:   uint8 count = srcdata & 63;
        !          3765:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3766: 
        !          3767:   storeword(dstaddr, outdata);
        !          3768:   PC+= 4;
        !          3769: }
        !          3770: 
        !          3771: void cpu_op_1568b(t_ipc *ipc) /* LSR */ {
        !          3772:   /* mask ffff, bits e2f8, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3773:   unsigned int srcdata = 1;
        !          3774:   uint32 dstaddr = ipc->dst;
        !          3775:   uint16 dstdata = fetchword(dstaddr);
        !          3776:   uint8 bits = 16;
        !          3777:   uint8 count = srcdata & 63;
        !          3778:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3779: 
        !          3780:   storeword(dstaddr, outdata);
        !          3781: 
        !          3782:   if (!count)
        !          3783:     CFLAG = 0;
        !          3784:   else if (count >= bits) {
        !          3785:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3786:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3787:   } else {
        !          3788:     CFLAG = dstdata>>(count-1) & 1;
        !          3789:     XFLAG = dstdata>>(count-1) & 1;
        !          3790:   }
        !          3791:   VFLAG = 0;
        !          3792:   NFLAG = ((sint16)outdata) < 0;
        !          3793:   ZFLAG = !outdata;
        !          3794:   PC+= 4;
        !          3795: }
        !          3796: 
        !          3797: void cpu_op_1569a(t_ipc *ipc) /* LSR */ {
        !          3798:   /* mask ffff, bits e2f9, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3799:   unsigned int srcdata = 1;
        !          3800:   uint32 dstaddr = ipc->dst;
        !          3801:   uint16 dstdata = fetchword(dstaddr);
        !          3802:   uint8 bits = 16;
        !          3803:   uint8 count = srcdata & 63;
        !          3804:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3805: 
        !          3806:   storeword(dstaddr, outdata);
        !          3807:   PC+= 6;
        !          3808: }
        !          3809: 
        !          3810: void cpu_op_1569b(t_ipc *ipc) /* LSR */ {
        !          3811:   /* mask ffff, bits e2f9, mnemonic 67, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3812:   unsigned int srcdata = 1;
        !          3813:   uint32 dstaddr = ipc->dst;
        !          3814:   uint16 dstdata = fetchword(dstaddr);
        !          3815:   uint8 bits = 16;
        !          3816:   uint8 count = srcdata & 63;
        !          3817:   uint16 outdata = dstdata >> (count > (bits-1) ? (bits-1) : count);
        !          3818: 
        !          3819:   storeword(dstaddr, outdata);
        !          3820: 
        !          3821:   if (!count)
        !          3822:     CFLAG = 0;
        !          3823:   else if (count >= bits) {
        !          3824:     CFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3825:     XFLAG = (count == bits) ? dstdata>>(bits-1) : 0;
        !          3826:   } else {
        !          3827:     CFLAG = dstdata>>(count-1) & 1;
        !          3828:     XFLAG = dstdata>>(count-1) & 1;
        !          3829:   }
        !          3830:   VFLAG = 0;
        !          3831:   NFLAG = ((sint16)outdata) < 0;
        !          3832:   ZFLAG = !outdata;
        !          3833:   PC+= 6;
        !          3834: }
        !          3835: 
        !          3836: void cpu_op_1570a(t_ipc *ipc) /* ROXR */ {
        !          3837:   /* mask fff8, bits e4d0, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3838:   unsigned int srcdata = 1;
        !          3839:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3840:   uint32 dstaddr = ADDRREG(dstreg);
        !          3841:   uint16 dstdata = fetchword(dstaddr);
        !          3842:   uint8 bits = 16;
        !          3843:   uint8 loop = srcdata & 63;
        !          3844:   uint8 cflag = CFLAG;
        !          3845:   uint8 xflag = XFLAG;
        !          3846:   uint16 outdata = dstdata;
        !          3847: 
        !          3848:   while(loop) {
        !          3849:     cflag = outdata & 1;
        !          3850:     outdata>>= 1;
        !          3851:     if (xflag)
        !          3852:       outdata |= 1<<(bits-1);
        !          3853:     xflag = cflag;
        !          3854:     loop--;
        !          3855:   }
        !          3856:   storeword(dstaddr, outdata);
        !          3857:   PC+= 2;
        !          3858: }
        !          3859: 
        !          3860: void cpu_op_1570b(t_ipc *ipc) /* ROXR */ {
        !          3861:   /* mask fff8, bits e4d0, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3862:   unsigned int srcdata = 1;
        !          3863:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3864:   uint32 dstaddr = ADDRREG(dstreg);
        !          3865:   uint16 dstdata = fetchword(dstaddr);
        !          3866:   uint8 bits = 16;
        !          3867:   uint8 loop = srcdata & 63;
        !          3868:   uint8 cflag = CFLAG;
        !          3869:   uint8 xflag = XFLAG;
        !          3870:   uint16 outdata = dstdata;
        !          3871: 
        !          3872:   while(loop) {
        !          3873:     cflag = outdata & 1;
        !          3874:     outdata>>= 1;
        !          3875:     if (xflag)
        !          3876:       outdata |= 1<<(bits-1);
        !          3877:     xflag = cflag;
        !          3878:     loop--;
        !          3879:   }
        !          3880:   storeword(dstaddr, outdata);
        !          3881: 
        !          3882:   XFLAG = xflag;
        !          3883:   CFLAG = xflag;
        !          3884:   NFLAG = ((sint16)outdata) < 0;
        !          3885:   ZFLAG = !outdata;
        !          3886:   VFLAG = 0;
        !          3887:   PC+= 2;
        !          3888: }
        !          3889: 
        !          3890: void cpu_op_1571a(t_ipc *ipc) /* ROXR */ {
        !          3891:   /* mask fff8, bits e4d8, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3892:   unsigned int srcdata = 1;
        !          3893:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3894:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          3895:   uint16 dstdata = fetchword(dstaddr);
        !          3896:   uint8 bits = 16;
        !          3897:   uint8 loop = srcdata & 63;
        !          3898:   uint8 cflag = CFLAG;
        !          3899:   uint8 xflag = XFLAG;
        !          3900:   uint16 outdata = dstdata;
        !          3901: 
        !          3902:   while(loop) {
        !          3903:     cflag = outdata & 1;
        !          3904:     outdata>>= 1;
        !          3905:     if (xflag)
        !          3906:       outdata |= 1<<(bits-1);
        !          3907:     xflag = cflag;
        !          3908:     loop--;
        !          3909:   }
        !          3910:   storeword(dstaddr, outdata);
        !          3911:   PC+= 2;
        !          3912: }
        !          3913: 
        !          3914: void cpu_op_1571b(t_ipc *ipc) /* ROXR */ {
        !          3915:   /* mask fff8, bits e4d8, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3916:   unsigned int srcdata = 1;
        !          3917:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3918:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          3919:   uint16 dstdata = fetchword(dstaddr);
        !          3920:   uint8 bits = 16;
        !          3921:   uint8 loop = srcdata & 63;
        !          3922:   uint8 cflag = CFLAG;
        !          3923:   uint8 xflag = XFLAG;
        !          3924:   uint16 outdata = dstdata;
        !          3925: 
        !          3926:   while(loop) {
        !          3927:     cflag = outdata & 1;
        !          3928:     outdata>>= 1;
        !          3929:     if (xflag)
        !          3930:       outdata |= 1<<(bits-1);
        !          3931:     xflag = cflag;
        !          3932:     loop--;
        !          3933:   }
        !          3934:   storeword(dstaddr, outdata);
        !          3935: 
        !          3936:   XFLAG = xflag;
        !          3937:   CFLAG = xflag;
        !          3938:   NFLAG = ((sint16)outdata) < 0;
        !          3939:   ZFLAG = !outdata;
        !          3940:   VFLAG = 0;
        !          3941:   PC+= 2;
        !          3942: }
        !          3943: 
        !          3944: void cpu_op_1572a(t_ipc *ipc) /* ROXR */ {
        !          3945:   /* mask fff8, bits e4e0, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3946:   unsigned int srcdata = 1;
        !          3947:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3948:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          3949:   uint16 dstdata = fetchword(dstaddr);
        !          3950:   uint8 bits = 16;
        !          3951:   uint8 loop = srcdata & 63;
        !          3952:   uint8 cflag = CFLAG;
        !          3953:   uint8 xflag = XFLAG;
        !          3954:   uint16 outdata = dstdata;
        !          3955: 
        !          3956:   while(loop) {
        !          3957:     cflag = outdata & 1;
        !          3958:     outdata>>= 1;
        !          3959:     if (xflag)
        !          3960:       outdata |= 1<<(bits-1);
        !          3961:     xflag = cflag;
        !          3962:     loop--;
        !          3963:   }
        !          3964:   storeword(dstaddr, outdata);
        !          3965:   PC+= 2;
        !          3966: }
        !          3967: 
        !          3968: void cpu_op_1572b(t_ipc *ipc) /* ROXR */ {
        !          3969:   /* mask fff8, bits e4e0, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          3970:   unsigned int srcdata = 1;
        !          3971:   int dstreg = (ipc->opcode >> 0) & 7;
        !          3972:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          3973:   uint16 dstdata = fetchword(dstaddr);
        !          3974:   uint8 bits = 16;
        !          3975:   uint8 loop = srcdata & 63;
        !          3976:   uint8 cflag = CFLAG;
        !          3977:   uint8 xflag = XFLAG;
        !          3978:   uint16 outdata = dstdata;
        !          3979: 
        !          3980:   while(loop) {
        !          3981:     cflag = outdata & 1;
        !          3982:     outdata>>= 1;
        !          3983:     if (xflag)
        !          3984:       outdata |= 1<<(bits-1);
        !          3985:     xflag = cflag;
        !          3986:     loop--;
        !          3987:   }
        !          3988:   storeword(dstaddr, outdata);
        !          3989: 
        !          3990:   XFLAG = xflag;
        !          3991:   CFLAG = xflag;
        !          3992:   NFLAG = ((sint16)outdata) < 0;
        !          3993:   ZFLAG = !outdata;
        !          3994:   VFLAG = 0;
        !          3995:   PC+= 2;
        !          3996: }
        !          3997: 
        !          3998: void cpu_op_1573a(t_ipc *ipc) /* ROXR */ {
        !          3999:   /* mask fff8, bits e4e8, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4000:   unsigned int srcdata = 1;
        !          4001:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4002:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          4003:   uint16 dstdata = fetchword(dstaddr);
        !          4004:   uint8 bits = 16;
        !          4005:   uint8 loop = srcdata & 63;
        !          4006:   uint8 cflag = CFLAG;
        !          4007:   uint8 xflag = XFLAG;
        !          4008:   uint16 outdata = dstdata;
        !          4009: 
        !          4010:   while(loop) {
        !          4011:     cflag = outdata & 1;
        !          4012:     outdata>>= 1;
        !          4013:     if (xflag)
        !          4014:       outdata |= 1<<(bits-1);
        !          4015:     xflag = cflag;
        !          4016:     loop--;
        !          4017:   }
        !          4018:   storeword(dstaddr, outdata);
        !          4019:   PC+= 4;
        !          4020: }
        !          4021: 
        !          4022: void cpu_op_1573b(t_ipc *ipc) /* ROXR */ {
        !          4023:   /* mask fff8, bits e4e8, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4024:   unsigned int srcdata = 1;
        !          4025:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4026:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          4027:   uint16 dstdata = fetchword(dstaddr);
        !          4028:   uint8 bits = 16;
        !          4029:   uint8 loop = srcdata & 63;
        !          4030:   uint8 cflag = CFLAG;
        !          4031:   uint8 xflag = XFLAG;
        !          4032:   uint16 outdata = dstdata;
        !          4033: 
        !          4034:   while(loop) {
        !          4035:     cflag = outdata & 1;
        !          4036:     outdata>>= 1;
        !          4037:     if (xflag)
        !          4038:       outdata |= 1<<(bits-1);
        !          4039:     xflag = cflag;
        !          4040:     loop--;
        !          4041:   }
        !          4042:   storeword(dstaddr, outdata);
        !          4043: 
        !          4044:   XFLAG = xflag;
        !          4045:   CFLAG = xflag;
        !          4046:   NFLAG = ((sint16)outdata) < 0;
        !          4047:   ZFLAG = !outdata;
        !          4048:   VFLAG = 0;
        !          4049:   PC+= 4;
        !          4050: }
        !          4051: 
        !          4052: void cpu_op_1574a(t_ipc *ipc) /* ROXR */ {
        !          4053:   /* mask fff8, bits e4f0, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4054:   unsigned int srcdata = 1;
        !          4055:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4056:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          4057:   uint16 dstdata = fetchword(dstaddr);
        !          4058:   uint8 bits = 16;
        !          4059:   uint8 loop = srcdata & 63;
        !          4060:   uint8 cflag = CFLAG;
        !          4061:   uint8 xflag = XFLAG;
        !          4062:   uint16 outdata = dstdata;
        !          4063: 
        !          4064:   while(loop) {
        !          4065:     cflag = outdata & 1;
        !          4066:     outdata>>= 1;
        !          4067:     if (xflag)
        !          4068:       outdata |= 1<<(bits-1);
        !          4069:     xflag = cflag;
        !          4070:     loop--;
        !          4071:   }
        !          4072:   storeword(dstaddr, outdata);
        !          4073:   PC+= 4;
        !          4074: }
        !          4075: 
        !          4076: void cpu_op_1574b(t_ipc *ipc) /* ROXR */ {
        !          4077:   /* mask fff8, bits e4f0, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4078:   unsigned int srcdata = 1;
        !          4079:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4080:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          4081:   uint16 dstdata = fetchword(dstaddr);
        !          4082:   uint8 bits = 16;
        !          4083:   uint8 loop = srcdata & 63;
        !          4084:   uint8 cflag = CFLAG;
        !          4085:   uint8 xflag = XFLAG;
        !          4086:   uint16 outdata = dstdata;
        !          4087: 
        !          4088:   while(loop) {
        !          4089:     cflag = outdata & 1;
        !          4090:     outdata>>= 1;
        !          4091:     if (xflag)
        !          4092:       outdata |= 1<<(bits-1);
        !          4093:     xflag = cflag;
        !          4094:     loop--;
        !          4095:   }
        !          4096:   storeword(dstaddr, outdata);
        !          4097: 
        !          4098:   XFLAG = xflag;
        !          4099:   CFLAG = xflag;
        !          4100:   NFLAG = ((sint16)outdata) < 0;
        !          4101:   ZFLAG = !outdata;
        !          4102:   VFLAG = 0;
        !          4103:   PC+= 4;
        !          4104: }
        !          4105: 
        !          4106: void cpu_op_1575a(t_ipc *ipc) /* ROXR */ {
        !          4107:   /* mask ffff, bits e4f8, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4108:   unsigned int srcdata = 1;
        !          4109:   uint32 dstaddr = ipc->dst;
        !          4110:   uint16 dstdata = fetchword(dstaddr);
        !          4111:   uint8 bits = 16;
        !          4112:   uint8 loop = srcdata & 63;
        !          4113:   uint8 cflag = CFLAG;
        !          4114:   uint8 xflag = XFLAG;
        !          4115:   uint16 outdata = dstdata;
        !          4116: 
        !          4117:   while(loop) {
        !          4118:     cflag = outdata & 1;
        !          4119:     outdata>>= 1;
        !          4120:     if (xflag)
        !          4121:       outdata |= 1<<(bits-1);
        !          4122:     xflag = cflag;
        !          4123:     loop--;
        !          4124:   }
        !          4125:   storeword(dstaddr, outdata);
        !          4126:   PC+= 4;
        !          4127: }
        !          4128: 
        !          4129: void cpu_op_1575b(t_ipc *ipc) /* ROXR */ {
        !          4130:   /* mask ffff, bits e4f8, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4131:   unsigned int srcdata = 1;
        !          4132:   uint32 dstaddr = ipc->dst;
        !          4133:   uint16 dstdata = fetchword(dstaddr);
        !          4134:   uint8 bits = 16;
        !          4135:   uint8 loop = srcdata & 63;
        !          4136:   uint8 cflag = CFLAG;
        !          4137:   uint8 xflag = XFLAG;
        !          4138:   uint16 outdata = dstdata;
        !          4139: 
        !          4140:   while(loop) {
        !          4141:     cflag = outdata & 1;
        !          4142:     outdata>>= 1;
        !          4143:     if (xflag)
        !          4144:       outdata |= 1<<(bits-1);
        !          4145:     xflag = cflag;
        !          4146:     loop--;
        !          4147:   }
        !          4148:   storeword(dstaddr, outdata);
        !          4149: 
        !          4150:   XFLAG = xflag;
        !          4151:   CFLAG = xflag;
        !          4152:   NFLAG = ((sint16)outdata) < 0;
        !          4153:   ZFLAG = !outdata;
        !          4154:   VFLAG = 0;
        !          4155:   PC+= 4;
        !          4156: }
        !          4157: 
        !          4158: void cpu_op_1576a(t_ipc *ipc) /* ROXR */ {
        !          4159:   /* mask ffff, bits e4f9, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4160:   unsigned int srcdata = 1;
        !          4161:   uint32 dstaddr = ipc->dst;
        !          4162:   uint16 dstdata = fetchword(dstaddr);
        !          4163:   uint8 bits = 16;
        !          4164:   uint8 loop = srcdata & 63;
        !          4165:   uint8 cflag = CFLAG;
        !          4166:   uint8 xflag = XFLAG;
        !          4167:   uint16 outdata = dstdata;
        !          4168: 
        !          4169:   while(loop) {
        !          4170:     cflag = outdata & 1;
        !          4171:     outdata>>= 1;
        !          4172:     if (xflag)
        !          4173:       outdata |= 1<<(bits-1);
        !          4174:     xflag = cflag;
        !          4175:     loop--;
        !          4176:   }
        !          4177:   storeword(dstaddr, outdata);
        !          4178:   PC+= 6;
        !          4179: }
        !          4180: 
        !          4181: void cpu_op_1576b(t_ipc *ipc) /* ROXR */ {
        !          4182:   /* mask ffff, bits e4f9, mnemonic 68, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4183:   unsigned int srcdata = 1;
        !          4184:   uint32 dstaddr = ipc->dst;
        !          4185:   uint16 dstdata = fetchword(dstaddr);
        !          4186:   uint8 bits = 16;
        !          4187:   uint8 loop = srcdata & 63;
        !          4188:   uint8 cflag = CFLAG;
        !          4189:   uint8 xflag = XFLAG;
        !          4190:   uint16 outdata = dstdata;
        !          4191: 
        !          4192:   while(loop) {
        !          4193:     cflag = outdata & 1;
        !          4194:     outdata>>= 1;
        !          4195:     if (xflag)
        !          4196:       outdata |= 1<<(bits-1);
        !          4197:     xflag = cflag;
        !          4198:     loop--;
        !          4199:   }
        !          4200:   storeword(dstaddr, outdata);
        !          4201: 
        !          4202:   XFLAG = xflag;
        !          4203:   CFLAG = xflag;
        !          4204:   NFLAG = ((sint16)outdata) < 0;
        !          4205:   ZFLAG = !outdata;
        !          4206:   VFLAG = 0;
        !          4207:   PC+= 6;
        !          4208: }
        !          4209: 
        !          4210: void cpu_op_1577a(t_ipc *ipc) /* ROR */ {
        !          4211:   /* mask fff8, bits e6d0, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4212:   unsigned int srcdata = 1;
        !          4213:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4214:   uint32 dstaddr = ADDRREG(dstreg);
        !          4215:   uint16 dstdata = fetchword(dstaddr);
        !          4216:   uint8 bits = 16;
        !          4217:   uint8 loop = srcdata & 63;
        !          4218:   uint8 cflag = 0;
        !          4219:   uint16 outdata = dstdata;
        !          4220: 
        !          4221:   while(loop) {
        !          4222:     cflag = outdata & 1;
        !          4223:     outdata>>= 1;
        !          4224:     if (cflag)
        !          4225:       outdata |= 1<<(bits-1);
        !          4226:     loop--;
        !          4227:   }
        !          4228:   storeword(dstaddr, outdata);
        !          4229:   PC+= 2;
        !          4230: }
        !          4231: 
        !          4232: void cpu_op_1577b(t_ipc *ipc) /* ROR */ {
        !          4233:   /* mask fff8, bits e6d0, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4234:   unsigned int srcdata = 1;
        !          4235:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4236:   uint32 dstaddr = ADDRREG(dstreg);
        !          4237:   uint16 dstdata = fetchword(dstaddr);
        !          4238:   uint8 bits = 16;
        !          4239:   uint8 loop = srcdata & 63;
        !          4240:   uint8 cflag = 0;
        !          4241:   uint16 outdata = dstdata;
        !          4242: 
        !          4243:   while(loop) {
        !          4244:     cflag = outdata & 1;
        !          4245:     outdata>>= 1;
        !          4246:     if (cflag)
        !          4247:       outdata |= 1<<(bits-1);
        !          4248:     loop--;
        !          4249:   }
        !          4250:   storeword(dstaddr, outdata);
        !          4251: 
        !          4252:   CFLAG = cflag;
        !          4253:   NFLAG = ((sint16)outdata) < 0;
        !          4254:   ZFLAG = !outdata;
        !          4255:   VFLAG = 0;
        !          4256:   PC+= 2;
        !          4257: }
        !          4258: 
        !          4259: void cpu_op_1578a(t_ipc *ipc) /* ROR */ {
        !          4260:   /* mask fff8, bits e6d8, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4261:   unsigned int srcdata = 1;
        !          4262:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4263:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          4264:   uint16 dstdata = fetchword(dstaddr);
        !          4265:   uint8 bits = 16;
        !          4266:   uint8 loop = srcdata & 63;
        !          4267:   uint8 cflag = 0;
        !          4268:   uint16 outdata = dstdata;
        !          4269: 
        !          4270:   while(loop) {
        !          4271:     cflag = outdata & 1;
        !          4272:     outdata>>= 1;
        !          4273:     if (cflag)
        !          4274:       outdata |= 1<<(bits-1);
        !          4275:     loop--;
        !          4276:   }
        !          4277:   storeword(dstaddr, outdata);
        !          4278:   PC+= 2;
        !          4279: }
        !          4280: 
        !          4281: void cpu_op_1578b(t_ipc *ipc) /* ROR */ {
        !          4282:   /* mask fff8, bits e6d8, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4283:   unsigned int srcdata = 1;
        !          4284:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4285:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          4286:   uint16 dstdata = fetchword(dstaddr);
        !          4287:   uint8 bits = 16;
        !          4288:   uint8 loop = srcdata & 63;
        !          4289:   uint8 cflag = 0;
        !          4290:   uint16 outdata = dstdata;
        !          4291: 
        !          4292:   while(loop) {
        !          4293:     cflag = outdata & 1;
        !          4294:     outdata>>= 1;
        !          4295:     if (cflag)
        !          4296:       outdata |= 1<<(bits-1);
        !          4297:     loop--;
        !          4298:   }
        !          4299:   storeword(dstaddr, outdata);
        !          4300: 
        !          4301:   CFLAG = cflag;
        !          4302:   NFLAG = ((sint16)outdata) < 0;
        !          4303:   ZFLAG = !outdata;
        !          4304:   VFLAG = 0;
        !          4305:   PC+= 2;
        !          4306: }
        !          4307: 
        !          4308: void cpu_op_1579a(t_ipc *ipc) /* ROR */ {
        !          4309:   /* mask fff8, bits e6e0, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4310:   unsigned int srcdata = 1;
        !          4311:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4312:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          4313:   uint16 dstdata = fetchword(dstaddr);
        !          4314:   uint8 bits = 16;
        !          4315:   uint8 loop = srcdata & 63;
        !          4316:   uint8 cflag = 0;
        !          4317:   uint16 outdata = dstdata;
        !          4318: 
        !          4319:   while(loop) {
        !          4320:     cflag = outdata & 1;
        !          4321:     outdata>>= 1;
        !          4322:     if (cflag)
        !          4323:       outdata |= 1<<(bits-1);
        !          4324:     loop--;
        !          4325:   }
        !          4326:   storeword(dstaddr, outdata);
        !          4327:   PC+= 2;
        !          4328: }
        !          4329: 
        !          4330: void cpu_op_1579b(t_ipc *ipc) /* ROR */ {
        !          4331:   /* mask fff8, bits e6e0, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4332:   unsigned int srcdata = 1;
        !          4333:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4334:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          4335:   uint16 dstdata = fetchword(dstaddr);
        !          4336:   uint8 bits = 16;
        !          4337:   uint8 loop = srcdata & 63;
        !          4338:   uint8 cflag = 0;
        !          4339:   uint16 outdata = dstdata;
        !          4340: 
        !          4341:   while(loop) {
        !          4342:     cflag = outdata & 1;
        !          4343:     outdata>>= 1;
        !          4344:     if (cflag)
        !          4345:       outdata |= 1<<(bits-1);
        !          4346:     loop--;
        !          4347:   }
        !          4348:   storeword(dstaddr, outdata);
        !          4349: 
        !          4350:   CFLAG = cflag;
        !          4351:   NFLAG = ((sint16)outdata) < 0;
        !          4352:   ZFLAG = !outdata;
        !          4353:   VFLAG = 0;
        !          4354:   PC+= 2;
        !          4355: }
        !          4356: 
        !          4357: void cpu_op_1580a(t_ipc *ipc) /* ROR */ {
        !          4358:   /* mask fff8, bits e6e8, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4359:   unsigned int srcdata = 1;
        !          4360:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4361:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          4362:   uint16 dstdata = fetchword(dstaddr);
        !          4363:   uint8 bits = 16;
        !          4364:   uint8 loop = srcdata & 63;
        !          4365:   uint8 cflag = 0;
        !          4366:   uint16 outdata = dstdata;
        !          4367: 
        !          4368:   while(loop) {
        !          4369:     cflag = outdata & 1;
        !          4370:     outdata>>= 1;
        !          4371:     if (cflag)
        !          4372:       outdata |= 1<<(bits-1);
        !          4373:     loop--;
        !          4374:   }
        !          4375:   storeword(dstaddr, outdata);
        !          4376:   PC+= 4;
        !          4377: }
        !          4378: 
        !          4379: void cpu_op_1580b(t_ipc *ipc) /* ROR */ {
        !          4380:   /* mask fff8, bits e6e8, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4381:   unsigned int srcdata = 1;
        !          4382:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4383:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          4384:   uint16 dstdata = fetchword(dstaddr);
        !          4385:   uint8 bits = 16;
        !          4386:   uint8 loop = srcdata & 63;
        !          4387:   uint8 cflag = 0;
        !          4388:   uint16 outdata = dstdata;
        !          4389: 
        !          4390:   while(loop) {
        !          4391:     cflag = outdata & 1;
        !          4392:     outdata>>= 1;
        !          4393:     if (cflag)
        !          4394:       outdata |= 1<<(bits-1);
        !          4395:     loop--;
        !          4396:   }
        !          4397:   storeword(dstaddr, outdata);
        !          4398: 
        !          4399:   CFLAG = cflag;
        !          4400:   NFLAG = ((sint16)outdata) < 0;
        !          4401:   ZFLAG = !outdata;
        !          4402:   VFLAG = 0;
        !          4403:   PC+= 4;
        !          4404: }
        !          4405: 
        !          4406: void cpu_op_1581a(t_ipc *ipc) /* ROR */ {
        !          4407:   /* mask fff8, bits e6f0, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4408:   unsigned int srcdata = 1;
        !          4409:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4410:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          4411:   uint16 dstdata = fetchword(dstaddr);
        !          4412:   uint8 bits = 16;
        !          4413:   uint8 loop = srcdata & 63;
        !          4414:   uint8 cflag = 0;
        !          4415:   uint16 outdata = dstdata;
        !          4416: 
        !          4417:   while(loop) {
        !          4418:     cflag = outdata & 1;
        !          4419:     outdata>>= 1;
        !          4420:     if (cflag)
        !          4421:       outdata |= 1<<(bits-1);
        !          4422:     loop--;
        !          4423:   }
        !          4424:   storeword(dstaddr, outdata);
        !          4425:   PC+= 4;
        !          4426: }
        !          4427: 
        !          4428: void cpu_op_1581b(t_ipc *ipc) /* ROR */ {
        !          4429:   /* mask fff8, bits e6f0, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4430:   unsigned int srcdata = 1;
        !          4431:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4432:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          4433:   uint16 dstdata = fetchword(dstaddr);
        !          4434:   uint8 bits = 16;
        !          4435:   uint8 loop = srcdata & 63;
        !          4436:   uint8 cflag = 0;
        !          4437:   uint16 outdata = dstdata;
        !          4438: 
        !          4439:   while(loop) {
        !          4440:     cflag = outdata & 1;
        !          4441:     outdata>>= 1;
        !          4442:     if (cflag)
        !          4443:       outdata |= 1<<(bits-1);
        !          4444:     loop--;
        !          4445:   }
        !          4446:   storeword(dstaddr, outdata);
        !          4447: 
        !          4448:   CFLAG = cflag;
        !          4449:   NFLAG = ((sint16)outdata) < 0;
        !          4450:   ZFLAG = !outdata;
        !          4451:   VFLAG = 0;
        !          4452:   PC+= 4;
        !          4453: }
        !          4454: 
        !          4455: void cpu_op_1582a(t_ipc *ipc) /* ROR */ {
        !          4456:   /* mask ffff, bits e6f8, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4457:   unsigned int srcdata = 1;
        !          4458:   uint32 dstaddr = ipc->dst;
        !          4459:   uint16 dstdata = fetchword(dstaddr);
        !          4460:   uint8 bits = 16;
        !          4461:   uint8 loop = srcdata & 63;
        !          4462:   uint8 cflag = 0;
        !          4463:   uint16 outdata = dstdata;
        !          4464: 
        !          4465:   while(loop) {
        !          4466:     cflag = outdata & 1;
        !          4467:     outdata>>= 1;
        !          4468:     if (cflag)
        !          4469:       outdata |= 1<<(bits-1);
        !          4470:     loop--;
        !          4471:   }
        !          4472:   storeword(dstaddr, outdata);
        !          4473:   PC+= 4;
        !          4474: }
        !          4475: 
        !          4476: void cpu_op_1582b(t_ipc *ipc) /* ROR */ {
        !          4477:   /* mask ffff, bits e6f8, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4478:   unsigned int srcdata = 1;
        !          4479:   uint32 dstaddr = ipc->dst;
        !          4480:   uint16 dstdata = fetchword(dstaddr);
        !          4481:   uint8 bits = 16;
        !          4482:   uint8 loop = srcdata & 63;
        !          4483:   uint8 cflag = 0;
        !          4484:   uint16 outdata = dstdata;
        !          4485: 
        !          4486:   while(loop) {
        !          4487:     cflag = outdata & 1;
        !          4488:     outdata>>= 1;
        !          4489:     if (cflag)
        !          4490:       outdata |= 1<<(bits-1);
        !          4491:     loop--;
        !          4492:   }
        !          4493:   storeword(dstaddr, outdata);
        !          4494: 
        !          4495:   CFLAG = cflag;
        !          4496:   NFLAG = ((sint16)outdata) < 0;
        !          4497:   ZFLAG = !outdata;
        !          4498:   VFLAG = 0;
        !          4499:   PC+= 4;
        !          4500: }
        !          4501: 
        !          4502: void cpu_op_1583a(t_ipc *ipc) /* ROR */ {
        !          4503:   /* mask ffff, bits e6f9, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4504:   unsigned int srcdata = 1;
        !          4505:   uint32 dstaddr = ipc->dst;
        !          4506:   uint16 dstdata = fetchword(dstaddr);
        !          4507:   uint8 bits = 16;
        !          4508:   uint8 loop = srcdata & 63;
        !          4509:   uint8 cflag = 0;
        !          4510:   uint16 outdata = dstdata;
        !          4511: 
        !          4512:   while(loop) {
        !          4513:     cflag = outdata & 1;
        !          4514:     outdata>>= 1;
        !          4515:     if (cflag)
        !          4516:       outdata |= 1<<(bits-1);
        !          4517:     loop--;
        !          4518:   }
        !          4519:   storeword(dstaddr, outdata);
        !          4520:   PC+= 6;
        !          4521: }
        !          4522: 
        !          4523: void cpu_op_1583b(t_ipc *ipc) /* ROR */ {
        !          4524:   /* mask ffff, bits e6f9, mnemonic 69, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4525:   unsigned int srcdata = 1;
        !          4526:   uint32 dstaddr = ipc->dst;
        !          4527:   uint16 dstdata = fetchword(dstaddr);
        !          4528:   uint8 bits = 16;
        !          4529:   uint8 loop = srcdata & 63;
        !          4530:   uint8 cflag = 0;
        !          4531:   uint16 outdata = dstdata;
        !          4532: 
        !          4533:   while(loop) {
        !          4534:     cflag = outdata & 1;
        !          4535:     outdata>>= 1;
        !          4536:     if (cflag)
        !          4537:       outdata |= 1<<(bits-1);
        !          4538:     loop--;
        !          4539:   }
        !          4540:   storeword(dstaddr, outdata);
        !          4541: 
        !          4542:   CFLAG = cflag;
        !          4543:   NFLAG = ((sint16)outdata) < 0;
        !          4544:   ZFLAG = !outdata;
        !          4545:   VFLAG = 0;
        !          4546:   PC+= 6;
        !          4547: }
        !          4548: 
        !          4549: void cpu_op_1584a(t_ipc *ipc) /* ASL */ {
        !          4550:   /* mask fff8, bits e1d0, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4551:   unsigned int srcdata = 1;
        !          4552:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4553:   uint32 dstaddr = ADDRREG(dstreg);
        !          4554:   uint16 dstdata = fetchword(dstaddr);
        !          4555:   uint8 bits = 16;
        !          4556:   uint8 count = srcdata & 63;
        !          4557:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4558: 
        !          4559:   storeword(dstaddr, outdata);
        !          4560:   PC+= 2;
        !          4561: }
        !          4562: 
        !          4563: void cpu_op_1584b(t_ipc *ipc) /* ASL */ {
        !          4564:   /* mask fff8, bits e1d0, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4565:   unsigned int srcdata = 1;
        !          4566:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4567:   uint32 dstaddr = ADDRREG(dstreg);
        !          4568:   uint16 dstdata = fetchword(dstaddr);
        !          4569:   uint8 bits = 16;
        !          4570:   uint8 count = srcdata & 63;
        !          4571:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4572: 
        !          4573:   storeword(dstaddr, outdata);
        !          4574: 
        !          4575:   if (!count)
        !          4576:     CFLAG = 0;
        !          4577:   else if (count >= bits) {
        !          4578:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4579:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4580:     VFLAG = !dstdata;
        !          4581:   } else {
        !          4582:     CFLAG = dstdata>>(bits-count) & 1;
        !          4583:     XFLAG = dstdata>>(bits-count) & 1;
        !          4584:     {
        !          4585:       uint16 mask = 0xffff << (15-count);
        !          4586:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          4587:     }
        !          4588:   }
        !          4589:   NFLAG = ((sint16)outdata) < 0;
        !          4590:   ZFLAG = !outdata;
        !          4591:   PC+= 2;
        !          4592: }
        !          4593: 
        !          4594: void cpu_op_1585a(t_ipc *ipc) /* ASL */ {
        !          4595:   /* mask fff8, bits e1d8, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4596:   unsigned int srcdata = 1;
        !          4597:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4598:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          4599:   uint16 dstdata = fetchword(dstaddr);
        !          4600:   uint8 bits = 16;
        !          4601:   uint8 count = srcdata & 63;
        !          4602:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4603: 
        !          4604:   storeword(dstaddr, outdata);
        !          4605:   PC+= 2;
        !          4606: }
        !          4607: 
        !          4608: void cpu_op_1585b(t_ipc *ipc) /* ASL */ {
        !          4609:   /* mask fff8, bits e1d8, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4610:   unsigned int srcdata = 1;
        !          4611:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4612:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          4613:   uint16 dstdata = fetchword(dstaddr);
        !          4614:   uint8 bits = 16;
        !          4615:   uint8 count = srcdata & 63;
        !          4616:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4617: 
        !          4618:   storeword(dstaddr, outdata);
        !          4619: 
        !          4620:   if (!count)
        !          4621:     CFLAG = 0;
        !          4622:   else if (count >= bits) {
        !          4623:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4624:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4625:     VFLAG = !dstdata;
        !          4626:   } else {
        !          4627:     CFLAG = dstdata>>(bits-count) & 1;
        !          4628:     XFLAG = dstdata>>(bits-count) & 1;
        !          4629:     {
        !          4630:       uint16 mask = 0xffff << (15-count);
        !          4631:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          4632:     }
        !          4633:   }
        !          4634:   NFLAG = ((sint16)outdata) < 0;
        !          4635:   ZFLAG = !outdata;
        !          4636:   PC+= 2;
        !          4637: }
        !          4638: 
        !          4639: void cpu_op_1586a(t_ipc *ipc) /* ASL */ {
        !          4640:   /* mask fff8, bits e1e0, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4641:   unsigned int srcdata = 1;
        !          4642:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4643:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          4644:   uint16 dstdata = fetchword(dstaddr);
        !          4645:   uint8 bits = 16;
        !          4646:   uint8 count = srcdata & 63;
        !          4647:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4648: 
        !          4649:   storeword(dstaddr, outdata);
        !          4650:   PC+= 2;
        !          4651: }
        !          4652: 
        !          4653: void cpu_op_1586b(t_ipc *ipc) /* ASL */ {
        !          4654:   /* mask fff8, bits e1e0, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4655:   unsigned int srcdata = 1;
        !          4656:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4657:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          4658:   uint16 dstdata = fetchword(dstaddr);
        !          4659:   uint8 bits = 16;
        !          4660:   uint8 count = srcdata & 63;
        !          4661:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4662: 
        !          4663:   storeword(dstaddr, outdata);
        !          4664: 
        !          4665:   if (!count)
        !          4666:     CFLAG = 0;
        !          4667:   else if (count >= bits) {
        !          4668:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4669:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4670:     VFLAG = !dstdata;
        !          4671:   } else {
        !          4672:     CFLAG = dstdata>>(bits-count) & 1;
        !          4673:     XFLAG = dstdata>>(bits-count) & 1;
        !          4674:     {
        !          4675:       uint16 mask = 0xffff << (15-count);
        !          4676:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          4677:     }
        !          4678:   }
        !          4679:   NFLAG = ((sint16)outdata) < 0;
        !          4680:   ZFLAG = !outdata;
        !          4681:   PC+= 2;
        !          4682: }
        !          4683: 
        !          4684: void cpu_op_1587a(t_ipc *ipc) /* ASL */ {
        !          4685:   /* mask fff8, bits e1e8, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4686:   unsigned int srcdata = 1;
        !          4687:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4688:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          4689:   uint16 dstdata = fetchword(dstaddr);
        !          4690:   uint8 bits = 16;
        !          4691:   uint8 count = srcdata & 63;
        !          4692:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4693: 
        !          4694:   storeword(dstaddr, outdata);
        !          4695:   PC+= 4;
        !          4696: }
        !          4697: 
        !          4698: void cpu_op_1587b(t_ipc *ipc) /* ASL */ {
        !          4699:   /* mask fff8, bits e1e8, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4700:   unsigned int srcdata = 1;
        !          4701:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4702:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          4703:   uint16 dstdata = fetchword(dstaddr);
        !          4704:   uint8 bits = 16;
        !          4705:   uint8 count = srcdata & 63;
        !          4706:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4707: 
        !          4708:   storeword(dstaddr, outdata);
        !          4709: 
        !          4710:   if (!count)
        !          4711:     CFLAG = 0;
        !          4712:   else if (count >= bits) {
        !          4713:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4714:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4715:     VFLAG = !dstdata;
        !          4716:   } else {
        !          4717:     CFLAG = dstdata>>(bits-count) & 1;
        !          4718:     XFLAG = dstdata>>(bits-count) & 1;
        !          4719:     {
        !          4720:       uint16 mask = 0xffff << (15-count);
        !          4721:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          4722:     }
        !          4723:   }
        !          4724:   NFLAG = ((sint16)outdata) < 0;
        !          4725:   ZFLAG = !outdata;
        !          4726:   PC+= 4;
        !          4727: }
        !          4728: 
        !          4729: void cpu_op_1588a(t_ipc *ipc) /* ASL */ {
        !          4730:   /* mask fff8, bits e1f0, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4731:   unsigned int srcdata = 1;
        !          4732:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4733:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          4734:   uint16 dstdata = fetchword(dstaddr);
        !          4735:   uint8 bits = 16;
        !          4736:   uint8 count = srcdata & 63;
        !          4737:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4738: 
        !          4739:   storeword(dstaddr, outdata);
        !          4740:   PC+= 4;
        !          4741: }
        !          4742: 
        !          4743: void cpu_op_1588b(t_ipc *ipc) /* ASL */ {
        !          4744:   /* mask fff8, bits e1f0, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4745:   unsigned int srcdata = 1;
        !          4746:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4747:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          4748:   uint16 dstdata = fetchword(dstaddr);
        !          4749:   uint8 bits = 16;
        !          4750:   uint8 count = srcdata & 63;
        !          4751:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4752: 
        !          4753:   storeword(dstaddr, outdata);
        !          4754: 
        !          4755:   if (!count)
        !          4756:     CFLAG = 0;
        !          4757:   else if (count >= bits) {
        !          4758:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4759:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4760:     VFLAG = !dstdata;
        !          4761:   } else {
        !          4762:     CFLAG = dstdata>>(bits-count) & 1;
        !          4763:     XFLAG = dstdata>>(bits-count) & 1;
        !          4764:     {
        !          4765:       uint16 mask = 0xffff << (15-count);
        !          4766:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          4767:     }
        !          4768:   }
        !          4769:   NFLAG = ((sint16)outdata) < 0;
        !          4770:   ZFLAG = !outdata;
        !          4771:   PC+= 4;
        !          4772: }
        !          4773: 
        !          4774: void cpu_op_1589a(t_ipc *ipc) /* ASL */ {
        !          4775:   /* mask ffff, bits e1f8, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4776:   unsigned int srcdata = 1;
        !          4777:   uint32 dstaddr = ipc->dst;
        !          4778:   uint16 dstdata = fetchword(dstaddr);
        !          4779:   uint8 bits = 16;
        !          4780:   uint8 count = srcdata & 63;
        !          4781:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4782: 
        !          4783:   storeword(dstaddr, outdata);
        !          4784:   PC+= 4;
        !          4785: }
        !          4786: 
        !          4787: void cpu_op_1589b(t_ipc *ipc) /* ASL */ {
        !          4788:   /* mask ffff, bits e1f8, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4789:   unsigned int srcdata = 1;
        !          4790:   uint32 dstaddr = ipc->dst;
        !          4791:   uint16 dstdata = fetchword(dstaddr);
        !          4792:   uint8 bits = 16;
        !          4793:   uint8 count = srcdata & 63;
        !          4794:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4795: 
        !          4796:   storeword(dstaddr, outdata);
        !          4797: 
        !          4798:   if (!count)
        !          4799:     CFLAG = 0;
        !          4800:   else if (count >= bits) {
        !          4801:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4802:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4803:     VFLAG = !dstdata;
        !          4804:   } else {
        !          4805:     CFLAG = dstdata>>(bits-count) & 1;
        !          4806:     XFLAG = dstdata>>(bits-count) & 1;
        !          4807:     {
        !          4808:       uint16 mask = 0xffff << (15-count);
        !          4809:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          4810:     }
        !          4811:   }
        !          4812:   NFLAG = ((sint16)outdata) < 0;
        !          4813:   ZFLAG = !outdata;
        !          4814:   PC+= 4;
        !          4815: }
        !          4816: 
        !          4817: void cpu_op_1590a(t_ipc *ipc) /* ASL */ {
        !          4818:   /* mask ffff, bits e1f9, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4819:   unsigned int srcdata = 1;
        !          4820:   uint32 dstaddr = ipc->dst;
        !          4821:   uint16 dstdata = fetchword(dstaddr);
        !          4822:   uint8 bits = 16;
        !          4823:   uint8 count = srcdata & 63;
        !          4824:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4825: 
        !          4826:   storeword(dstaddr, outdata);
        !          4827:   PC+= 6;
        !          4828: }
        !          4829: 
        !          4830: void cpu_op_1590b(t_ipc *ipc) /* ASL */ {
        !          4831:   /* mask ffff, bits e1f9, mnemonic 70, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4832:   unsigned int srcdata = 1;
        !          4833:   uint32 dstaddr = ipc->dst;
        !          4834:   uint16 dstdata = fetchword(dstaddr);
        !          4835:   uint8 bits = 16;
        !          4836:   uint8 count = srcdata & 63;
        !          4837:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4838: 
        !          4839:   storeword(dstaddr, outdata);
        !          4840: 
        !          4841:   if (!count)
        !          4842:     CFLAG = 0;
        !          4843:   else if (count >= bits) {
        !          4844:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4845:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4846:     VFLAG = !dstdata;
        !          4847:   } else {
        !          4848:     CFLAG = dstdata>>(bits-count) & 1;
        !          4849:     XFLAG = dstdata>>(bits-count) & 1;
        !          4850:     {
        !          4851:       uint16 mask = 0xffff << (15-count);
        !          4852:       VFLAG = ((dstdata & mask) != mask) && ((dstdata & mask) != 0);
        !          4853:     }
        !          4854:   }
        !          4855:   NFLAG = ((sint16)outdata) < 0;
        !          4856:   ZFLAG = !outdata;
        !          4857:   PC+= 6;
        !          4858: }
        !          4859: 
        !          4860: void cpu_op_1591a(t_ipc *ipc) /* LSL */ {
        !          4861:   /* mask fff8, bits e3d0, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4862:   unsigned int srcdata = 1;
        !          4863:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4864:   uint32 dstaddr = ADDRREG(dstreg);
        !          4865:   uint16 dstdata = fetchword(dstaddr);
        !          4866:   uint8 bits = 16;
        !          4867:   uint8 count = srcdata & 63;
        !          4868:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4869: 
        !          4870:   storeword(dstaddr, outdata);
        !          4871:   PC+= 2;
        !          4872: }
        !          4873: 
        !          4874: void cpu_op_1591b(t_ipc *ipc) /* LSL */ {
        !          4875:   /* mask fff8, bits e3d0, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4876:   unsigned int srcdata = 1;
        !          4877:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4878:   uint32 dstaddr = ADDRREG(dstreg);
        !          4879:   uint16 dstdata = fetchword(dstaddr);
        !          4880:   uint8 bits = 16;
        !          4881:   uint8 count = srcdata & 63;
        !          4882:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4883: 
        !          4884:   storeword(dstaddr, outdata);
        !          4885: 
        !          4886:   if (!count)
        !          4887:     CFLAG = 0;
        !          4888:   else if (count >= bits) {
        !          4889:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4890:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4891:   } else {
        !          4892:     CFLAG = dstdata>>(bits-count) & 1;
        !          4893:     XFLAG = dstdata>>(bits-count) & 1;
        !          4894:   }
        !          4895:   VFLAG = 0;
        !          4896:   NFLAG = ((sint16)outdata) < 0;
        !          4897:   ZFLAG = !outdata;
        !          4898:   PC+= 2;
        !          4899: }
        !          4900: 
        !          4901: void cpu_op_1592a(t_ipc *ipc) /* LSL */ {
        !          4902:   /* mask fff8, bits e3d8, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4903:   unsigned int srcdata = 1;
        !          4904:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4905:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          4906:   uint16 dstdata = fetchword(dstaddr);
        !          4907:   uint8 bits = 16;
        !          4908:   uint8 count = srcdata & 63;
        !          4909:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4910: 
        !          4911:   storeword(dstaddr, outdata);
        !          4912:   PC+= 2;
        !          4913: }
        !          4914: 
        !          4915: void cpu_op_1592b(t_ipc *ipc) /* LSL */ {
        !          4916:   /* mask fff8, bits e3d8, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4917:   unsigned int srcdata = 1;
        !          4918:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4919:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          4920:   uint16 dstdata = fetchword(dstaddr);
        !          4921:   uint8 bits = 16;
        !          4922:   uint8 count = srcdata & 63;
        !          4923:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4924: 
        !          4925:   storeword(dstaddr, outdata);
        !          4926: 
        !          4927:   if (!count)
        !          4928:     CFLAG = 0;
        !          4929:   else if (count >= bits) {
        !          4930:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4931:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4932:   } else {
        !          4933:     CFLAG = dstdata>>(bits-count) & 1;
        !          4934:     XFLAG = dstdata>>(bits-count) & 1;
        !          4935:   }
        !          4936:   VFLAG = 0;
        !          4937:   NFLAG = ((sint16)outdata) < 0;
        !          4938:   ZFLAG = !outdata;
        !          4939:   PC+= 2;
        !          4940: }
        !          4941: 
        !          4942: void cpu_op_1593a(t_ipc *ipc) /* LSL */ {
        !          4943:   /* mask fff8, bits e3e0, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4944:   unsigned int srcdata = 1;
        !          4945:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4946:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          4947:   uint16 dstdata = fetchword(dstaddr);
        !          4948:   uint8 bits = 16;
        !          4949:   uint8 count = srcdata & 63;
        !          4950:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4951: 
        !          4952:   storeword(dstaddr, outdata);
        !          4953:   PC+= 2;
        !          4954: }
        !          4955: 
        !          4956: void cpu_op_1593b(t_ipc *ipc) /* LSL */ {
        !          4957:   /* mask fff8, bits e3e0, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4958:   unsigned int srcdata = 1;
        !          4959:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4960:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          4961:   uint16 dstdata = fetchword(dstaddr);
        !          4962:   uint8 bits = 16;
        !          4963:   uint8 count = srcdata & 63;
        !          4964:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4965: 
        !          4966:   storeword(dstaddr, outdata);
        !          4967: 
        !          4968:   if (!count)
        !          4969:     CFLAG = 0;
        !          4970:   else if (count >= bits) {
        !          4971:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4972:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          4973:   } else {
        !          4974:     CFLAG = dstdata>>(bits-count) & 1;
        !          4975:     XFLAG = dstdata>>(bits-count) & 1;
        !          4976:   }
        !          4977:   VFLAG = 0;
        !          4978:   NFLAG = ((sint16)outdata) < 0;
        !          4979:   ZFLAG = !outdata;
        !          4980:   PC+= 2;
        !          4981: }
        !          4982: 
        !          4983: void cpu_op_1594a(t_ipc *ipc) /* LSL */ {
        !          4984:   /* mask fff8, bits e3e8, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4985:   unsigned int srcdata = 1;
        !          4986:   int dstreg = (ipc->opcode >> 0) & 7;
        !          4987:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          4988:   uint16 dstdata = fetchword(dstaddr);
        !          4989:   uint8 bits = 16;
        !          4990:   uint8 count = srcdata & 63;
        !          4991:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          4992: 
        !          4993:   storeword(dstaddr, outdata);
        !          4994:   PC+= 4;
        !          4995: }
        !          4996: 
        !          4997: void cpu_op_1594b(t_ipc *ipc) /* LSL */ {
        !          4998:   /* mask fff8, bits e3e8, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          4999:   unsigned int srcdata = 1;
        !          5000:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5001:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          5002:   uint16 dstdata = fetchword(dstaddr);
        !          5003:   uint8 bits = 16;
        !          5004:   uint8 count = srcdata & 63;
        !          5005:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          5006: 
        !          5007:   storeword(dstaddr, outdata);
        !          5008: 
        !          5009:   if (!count)
        !          5010:     CFLAG = 0;
        !          5011:   else if (count >= bits) {
        !          5012:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          5013:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          5014:   } else {
        !          5015:     CFLAG = dstdata>>(bits-count) & 1;
        !          5016:     XFLAG = dstdata>>(bits-count) & 1;
        !          5017:   }
        !          5018:   VFLAG = 0;
        !          5019:   NFLAG = ((sint16)outdata) < 0;
        !          5020:   ZFLAG = !outdata;
        !          5021:   PC+= 4;
        !          5022: }
        !          5023: 
        !          5024: void cpu_op_1595a(t_ipc *ipc) /* LSL */ {
        !          5025:   /* mask fff8, bits e3f0, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5026:   unsigned int srcdata = 1;
        !          5027:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5028:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          5029:   uint16 dstdata = fetchword(dstaddr);
        !          5030:   uint8 bits = 16;
        !          5031:   uint8 count = srcdata & 63;
        !          5032:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          5033: 
        !          5034:   storeword(dstaddr, outdata);
        !          5035:   PC+= 4;
        !          5036: }
        !          5037: 
        !          5038: void cpu_op_1595b(t_ipc *ipc) /* LSL */ {
        !          5039:   /* mask fff8, bits e3f0, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5040:   unsigned int srcdata = 1;
        !          5041:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5042:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          5043:   uint16 dstdata = fetchword(dstaddr);
        !          5044:   uint8 bits = 16;
        !          5045:   uint8 count = srcdata & 63;
        !          5046:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          5047: 
        !          5048:   storeword(dstaddr, outdata);
        !          5049: 
        !          5050:   if (!count)
        !          5051:     CFLAG = 0;
        !          5052:   else if (count >= bits) {
        !          5053:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          5054:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          5055:   } else {
        !          5056:     CFLAG = dstdata>>(bits-count) & 1;
        !          5057:     XFLAG = dstdata>>(bits-count) & 1;
        !          5058:   }
        !          5059:   VFLAG = 0;
        !          5060:   NFLAG = ((sint16)outdata) < 0;
        !          5061:   ZFLAG = !outdata;
        !          5062:   PC+= 4;
        !          5063: }
        !          5064: 
        !          5065: void cpu_op_1596a(t_ipc *ipc) /* LSL */ {
        !          5066:   /* mask ffff, bits e3f8, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5067:   unsigned int srcdata = 1;
        !          5068:   uint32 dstaddr = ipc->dst;
        !          5069:   uint16 dstdata = fetchword(dstaddr);
        !          5070:   uint8 bits = 16;
        !          5071:   uint8 count = srcdata & 63;
        !          5072:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          5073: 
        !          5074:   storeword(dstaddr, outdata);
        !          5075:   PC+= 4;
        !          5076: }
        !          5077: 
        !          5078: void cpu_op_1596b(t_ipc *ipc) /* LSL */ {
        !          5079:   /* mask ffff, bits e3f8, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5080:   unsigned int srcdata = 1;
        !          5081:   uint32 dstaddr = ipc->dst;
        !          5082:   uint16 dstdata = fetchword(dstaddr);
        !          5083:   uint8 bits = 16;
        !          5084:   uint8 count = srcdata & 63;
        !          5085:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          5086: 
        !          5087:   storeword(dstaddr, outdata);
        !          5088: 
        !          5089:   if (!count)
        !          5090:     CFLAG = 0;
        !          5091:   else if (count >= bits) {
        !          5092:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          5093:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          5094:   } else {
        !          5095:     CFLAG = dstdata>>(bits-count) & 1;
        !          5096:     XFLAG = dstdata>>(bits-count) & 1;
        !          5097:   }
        !          5098:   VFLAG = 0;
        !          5099:   NFLAG = ((sint16)outdata) < 0;
        !          5100:   ZFLAG = !outdata;
        !          5101:   PC+= 4;
        !          5102: }
        !          5103: 
        !          5104: void cpu_op_1597a(t_ipc *ipc) /* LSL */ {
        !          5105:   /* mask ffff, bits e3f9, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5106:   unsigned int srcdata = 1;
        !          5107:   uint32 dstaddr = ipc->dst;
        !          5108:   uint16 dstdata = fetchword(dstaddr);
        !          5109:   uint8 bits = 16;
        !          5110:   uint8 count = srcdata & 63;
        !          5111:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          5112: 
        !          5113:   storeword(dstaddr, outdata);
        !          5114:   PC+= 6;
        !          5115: }
        !          5116: 
        !          5117: void cpu_op_1597b(t_ipc *ipc) /* LSL */ {
        !          5118:   /* mask ffff, bits e3f9, mnemonic 71, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5119:   unsigned int srcdata = 1;
        !          5120:   uint32 dstaddr = ipc->dst;
        !          5121:   uint16 dstdata = fetchword(dstaddr);
        !          5122:   uint8 bits = 16;
        !          5123:   uint8 count = srcdata & 63;
        !          5124:   uint16 outdata = count >= bits ? 0 : (dstdata << count);
        !          5125: 
        !          5126:   storeword(dstaddr, outdata);
        !          5127: 
        !          5128:   if (!count)
        !          5129:     CFLAG = 0;
        !          5130:   else if (count >= bits) {
        !          5131:     CFLAG = (count == bits) ? dstdata & 1 : 0;
        !          5132:     XFLAG = (count == bits) ? dstdata & 1 : 0;
        !          5133:   } else {
        !          5134:     CFLAG = dstdata>>(bits-count) & 1;
        !          5135:     XFLAG = dstdata>>(bits-count) & 1;
        !          5136:   }
        !          5137:   VFLAG = 0;
        !          5138:   NFLAG = ((sint16)outdata) < 0;
        !          5139:   ZFLAG = !outdata;
        !          5140:   PC+= 6;
        !          5141: }
        !          5142: 
        !          5143: void cpu_op_1598a(t_ipc *ipc) /* ROXL */ {
        !          5144:   /* mask fff8, bits e5d0, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5145:   unsigned int srcdata = 1;
        !          5146:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5147:   uint32 dstaddr = ADDRREG(dstreg);
        !          5148:   uint16 dstdata = fetchword(dstaddr);
        !          5149:   uint8 bits = 16;
        !          5150:   uint8 loop = srcdata & 63;
        !          5151:   uint8 cflag = CFLAG;
        !          5152:   uint8 xflag = XFLAG;
        !          5153:   uint16 outdata = dstdata;
        !          5154: 
        !          5155:   while(loop) {
        !          5156:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5157:     outdata<<= 1;
        !          5158:     outdata |= xflag;
        !          5159:     xflag = cflag;
        !          5160:     loop--;
        !          5161:   }
        !          5162:   storeword(dstaddr, outdata);
        !          5163:   PC+= 2;
        !          5164: }
        !          5165: 
        !          5166: void cpu_op_1598b(t_ipc *ipc) /* ROXL */ {
        !          5167:   /* mask fff8, bits e5d0, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5168:   unsigned int srcdata = 1;
        !          5169:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5170:   uint32 dstaddr = ADDRREG(dstreg);
        !          5171:   uint16 dstdata = fetchword(dstaddr);
        !          5172:   uint8 bits = 16;
        !          5173:   uint8 loop = srcdata & 63;
        !          5174:   uint8 cflag = CFLAG;
        !          5175:   uint8 xflag = XFLAG;
        !          5176:   uint16 outdata = dstdata;
        !          5177: 
        !          5178:   while(loop) {
        !          5179:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5180:     outdata<<= 1;
        !          5181:     outdata |= xflag;
        !          5182:     xflag = cflag;
        !          5183:     loop--;
        !          5184:   }
        !          5185:   storeword(dstaddr, outdata);
        !          5186: 
        !          5187:   XFLAG = xflag;
        !          5188:   CFLAG = xflag;
        !          5189:   NFLAG = ((sint16)outdata) < 0;
        !          5190:   ZFLAG = !outdata;
        !          5191:   VFLAG = 0;
        !          5192:   PC+= 2;
        !          5193: }
        !          5194: 
        !          5195: void cpu_op_1599a(t_ipc *ipc) /* ROXL */ {
        !          5196:   /* mask fff8, bits e5d8, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5197:   unsigned int srcdata = 1;
        !          5198:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5199:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          5200:   uint16 dstdata = fetchword(dstaddr);
        !          5201:   uint8 bits = 16;
        !          5202:   uint8 loop = srcdata & 63;
        !          5203:   uint8 cflag = CFLAG;
        !          5204:   uint8 xflag = XFLAG;
        !          5205:   uint16 outdata = dstdata;
        !          5206: 
        !          5207:   while(loop) {
        !          5208:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5209:     outdata<<= 1;
        !          5210:     outdata |= xflag;
        !          5211:     xflag = cflag;
        !          5212:     loop--;
        !          5213:   }
        !          5214:   storeword(dstaddr, outdata);
        !          5215:   PC+= 2;
        !          5216: }
        !          5217: 
        !          5218: void cpu_op_1599b(t_ipc *ipc) /* ROXL */ {
        !          5219:   /* mask fff8, bits e5d8, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5220:   unsigned int srcdata = 1;
        !          5221:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5222:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          5223:   uint16 dstdata = fetchword(dstaddr);
        !          5224:   uint8 bits = 16;
        !          5225:   uint8 loop = srcdata & 63;
        !          5226:   uint8 cflag = CFLAG;
        !          5227:   uint8 xflag = XFLAG;
        !          5228:   uint16 outdata = dstdata;
        !          5229: 
        !          5230:   while(loop) {
        !          5231:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5232:     outdata<<= 1;
        !          5233:     outdata |= xflag;
        !          5234:     xflag = cflag;
        !          5235:     loop--;
        !          5236:   }
        !          5237:   storeword(dstaddr, outdata);
        !          5238: 
        !          5239:   XFLAG = xflag;
        !          5240:   CFLAG = xflag;
        !          5241:   NFLAG = ((sint16)outdata) < 0;
        !          5242:   ZFLAG = !outdata;
        !          5243:   VFLAG = 0;
        !          5244:   PC+= 2;
        !          5245: }
        !          5246: 
        !          5247: void cpu_op_1600a(t_ipc *ipc) /* ROXL */ {
        !          5248:   /* mask fff8, bits e5e0, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5249:   unsigned int srcdata = 1;
        !          5250:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5251:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          5252:   uint16 dstdata = fetchword(dstaddr);
        !          5253:   uint8 bits = 16;
        !          5254:   uint8 loop = srcdata & 63;
        !          5255:   uint8 cflag = CFLAG;
        !          5256:   uint8 xflag = XFLAG;
        !          5257:   uint16 outdata = dstdata;
        !          5258: 
        !          5259:   while(loop) {
        !          5260:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5261:     outdata<<= 1;
        !          5262:     outdata |= xflag;
        !          5263:     xflag = cflag;
        !          5264:     loop--;
        !          5265:   }
        !          5266:   storeword(dstaddr, outdata);
        !          5267:   PC+= 2;
        !          5268: }
        !          5269: 
        !          5270: void cpu_op_1600b(t_ipc *ipc) /* ROXL */ {
        !          5271:   /* mask fff8, bits e5e0, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5272:   unsigned int srcdata = 1;
        !          5273:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5274:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          5275:   uint16 dstdata = fetchword(dstaddr);
        !          5276:   uint8 bits = 16;
        !          5277:   uint8 loop = srcdata & 63;
        !          5278:   uint8 cflag = CFLAG;
        !          5279:   uint8 xflag = XFLAG;
        !          5280:   uint16 outdata = dstdata;
        !          5281: 
        !          5282:   while(loop) {
        !          5283:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5284:     outdata<<= 1;
        !          5285:     outdata |= xflag;
        !          5286:     xflag = cflag;
        !          5287:     loop--;
        !          5288:   }
        !          5289:   storeword(dstaddr, outdata);
        !          5290: 
        !          5291:   XFLAG = xflag;
        !          5292:   CFLAG = xflag;
        !          5293:   NFLAG = ((sint16)outdata) < 0;
        !          5294:   ZFLAG = !outdata;
        !          5295:   VFLAG = 0;
        !          5296:   PC+= 2;
        !          5297: }
        !          5298: 
        !          5299: void cpu_op_1601a(t_ipc *ipc) /* ROXL */ {
        !          5300:   /* mask fff8, bits e5e8, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5301:   unsigned int srcdata = 1;
        !          5302:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5303:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          5304:   uint16 dstdata = fetchword(dstaddr);
        !          5305:   uint8 bits = 16;
        !          5306:   uint8 loop = srcdata & 63;
        !          5307:   uint8 cflag = CFLAG;
        !          5308:   uint8 xflag = XFLAG;
        !          5309:   uint16 outdata = dstdata;
        !          5310: 
        !          5311:   while(loop) {
        !          5312:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5313:     outdata<<= 1;
        !          5314:     outdata |= xflag;
        !          5315:     xflag = cflag;
        !          5316:     loop--;
        !          5317:   }
        !          5318:   storeword(dstaddr, outdata);
        !          5319:   PC+= 4;
        !          5320: }
        !          5321: 
        !          5322: void cpu_op_1601b(t_ipc *ipc) /* ROXL */ {
        !          5323:   /* mask fff8, bits e5e8, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5324:   unsigned int srcdata = 1;
        !          5325:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5326:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          5327:   uint16 dstdata = fetchword(dstaddr);
        !          5328:   uint8 bits = 16;
        !          5329:   uint8 loop = srcdata & 63;
        !          5330:   uint8 cflag = CFLAG;
        !          5331:   uint8 xflag = XFLAG;
        !          5332:   uint16 outdata = dstdata;
        !          5333: 
        !          5334:   while(loop) {
        !          5335:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5336:     outdata<<= 1;
        !          5337:     outdata |= xflag;
        !          5338:     xflag = cflag;
        !          5339:     loop--;
        !          5340:   }
        !          5341:   storeword(dstaddr, outdata);
        !          5342: 
        !          5343:   XFLAG = xflag;
        !          5344:   CFLAG = xflag;
        !          5345:   NFLAG = ((sint16)outdata) < 0;
        !          5346:   ZFLAG = !outdata;
        !          5347:   VFLAG = 0;
        !          5348:   PC+= 4;
        !          5349: }
        !          5350: 
        !          5351: void cpu_op_1602a(t_ipc *ipc) /* ROXL */ {
        !          5352:   /* mask fff8, bits e5f0, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5353:   unsigned int srcdata = 1;
        !          5354:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5355:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          5356:   uint16 dstdata = fetchword(dstaddr);
        !          5357:   uint8 bits = 16;
        !          5358:   uint8 loop = srcdata & 63;
        !          5359:   uint8 cflag = CFLAG;
        !          5360:   uint8 xflag = XFLAG;
        !          5361:   uint16 outdata = dstdata;
        !          5362: 
        !          5363:   while(loop) {
        !          5364:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5365:     outdata<<= 1;
        !          5366:     outdata |= xflag;
        !          5367:     xflag = cflag;
        !          5368:     loop--;
        !          5369:   }
        !          5370:   storeword(dstaddr, outdata);
        !          5371:   PC+= 4;
        !          5372: }
        !          5373: 
        !          5374: void cpu_op_1602b(t_ipc *ipc) /* ROXL */ {
        !          5375:   /* mask fff8, bits e5f0, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5376:   unsigned int srcdata = 1;
        !          5377:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5378:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          5379:   uint16 dstdata = fetchword(dstaddr);
        !          5380:   uint8 bits = 16;
        !          5381:   uint8 loop = srcdata & 63;
        !          5382:   uint8 cflag = CFLAG;
        !          5383:   uint8 xflag = XFLAG;
        !          5384:   uint16 outdata = dstdata;
        !          5385: 
        !          5386:   while(loop) {
        !          5387:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5388:     outdata<<= 1;
        !          5389:     outdata |= xflag;
        !          5390:     xflag = cflag;
        !          5391:     loop--;
        !          5392:   }
        !          5393:   storeword(dstaddr, outdata);
        !          5394: 
        !          5395:   XFLAG = xflag;
        !          5396:   CFLAG = xflag;
        !          5397:   NFLAG = ((sint16)outdata) < 0;
        !          5398:   ZFLAG = !outdata;
        !          5399:   VFLAG = 0;
        !          5400:   PC+= 4;
        !          5401: }
        !          5402: 
        !          5403: void cpu_op_1603a(t_ipc *ipc) /* ROXL */ {
        !          5404:   /* mask ffff, bits e5f8, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5405:   unsigned int srcdata = 1;
        !          5406:   uint32 dstaddr = ipc->dst;
        !          5407:   uint16 dstdata = fetchword(dstaddr);
        !          5408:   uint8 bits = 16;
        !          5409:   uint8 loop = srcdata & 63;
        !          5410:   uint8 cflag = CFLAG;
        !          5411:   uint8 xflag = XFLAG;
        !          5412:   uint16 outdata = dstdata;
        !          5413: 
        !          5414:   while(loop) {
        !          5415:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5416:     outdata<<= 1;
        !          5417:     outdata |= xflag;
        !          5418:     xflag = cflag;
        !          5419:     loop--;
        !          5420:   }
        !          5421:   storeword(dstaddr, outdata);
        !          5422:   PC+= 4;
        !          5423: }
        !          5424: 
        !          5425: void cpu_op_1603b(t_ipc *ipc) /* ROXL */ {
        !          5426:   /* mask ffff, bits e5f8, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5427:   unsigned int srcdata = 1;
        !          5428:   uint32 dstaddr = ipc->dst;
        !          5429:   uint16 dstdata = fetchword(dstaddr);
        !          5430:   uint8 bits = 16;
        !          5431:   uint8 loop = srcdata & 63;
        !          5432:   uint8 cflag = CFLAG;
        !          5433:   uint8 xflag = XFLAG;
        !          5434:   uint16 outdata = dstdata;
        !          5435: 
        !          5436:   while(loop) {
        !          5437:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5438:     outdata<<= 1;
        !          5439:     outdata |= xflag;
        !          5440:     xflag = cflag;
        !          5441:     loop--;
        !          5442:   }
        !          5443:   storeword(dstaddr, outdata);
        !          5444: 
        !          5445:   XFLAG = xflag;
        !          5446:   CFLAG = xflag;
        !          5447:   NFLAG = ((sint16)outdata) < 0;
        !          5448:   ZFLAG = !outdata;
        !          5449:   VFLAG = 0;
        !          5450:   PC+= 4;
        !          5451: }
        !          5452: 
        !          5453: void cpu_op_1604a(t_ipc *ipc) /* ROXL */ {
        !          5454:   /* mask ffff, bits e5f9, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5455:   unsigned int srcdata = 1;
        !          5456:   uint32 dstaddr = ipc->dst;
        !          5457:   uint16 dstdata = fetchword(dstaddr);
        !          5458:   uint8 bits = 16;
        !          5459:   uint8 loop = srcdata & 63;
        !          5460:   uint8 cflag = CFLAG;
        !          5461:   uint8 xflag = XFLAG;
        !          5462:   uint16 outdata = dstdata;
        !          5463: 
        !          5464:   while(loop) {
        !          5465:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5466:     outdata<<= 1;
        !          5467:     outdata |= xflag;
        !          5468:     xflag = cflag;
        !          5469:     loop--;
        !          5470:   }
        !          5471:   storeword(dstaddr, outdata);
        !          5472:   PC+= 6;
        !          5473: }
        !          5474: 
        !          5475: void cpu_op_1604b(t_ipc *ipc) /* ROXL */ {
        !          5476:   /* mask ffff, bits e5f9, mnemonic 72, priv 0, endblk 0, imm_notzero 0, used 1     set -1, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5477:   unsigned int srcdata = 1;
        !          5478:   uint32 dstaddr = ipc->dst;
        !          5479:   uint16 dstdata = fetchword(dstaddr);
        !          5480:   uint8 bits = 16;
        !          5481:   uint8 loop = srcdata & 63;
        !          5482:   uint8 cflag = CFLAG;
        !          5483:   uint8 xflag = XFLAG;
        !          5484:   uint16 outdata = dstdata;
        !          5485: 
        !          5486:   while(loop) {
        !          5487:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5488:     outdata<<= 1;
        !          5489:     outdata |= xflag;
        !          5490:     xflag = cflag;
        !          5491:     loop--;
        !          5492:   }
        !          5493:   storeword(dstaddr, outdata);
        !          5494: 
        !          5495:   XFLAG = xflag;
        !          5496:   CFLAG = xflag;
        !          5497:   NFLAG = ((sint16)outdata) < 0;
        !          5498:   ZFLAG = !outdata;
        !          5499:   VFLAG = 0;
        !          5500:   PC+= 6;
        !          5501: }
        !          5502: 
        !          5503: void cpu_op_1605a(t_ipc *ipc) /* ROL */ {
        !          5504:   /* mask fff8, bits e7d0, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5505:   unsigned int srcdata = 1;
        !          5506:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5507:   uint32 dstaddr = ADDRREG(dstreg);
        !          5508:   uint16 dstdata = fetchword(dstaddr);
        !          5509:   uint8 bits = 16;
        !          5510:   uint8 loop = srcdata & 63;
        !          5511:   uint8 cflag = 0;
        !          5512:   uint16 outdata = dstdata;
        !          5513: 
        !          5514:   while(loop) {
        !          5515:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5516:     outdata<<= 1;
        !          5517:     if (cflag)
        !          5518:       outdata |= 1;
        !          5519:     loop--;
        !          5520:   }
        !          5521:   storeword(dstaddr, outdata);
        !          5522:   PC+= 2;
        !          5523: }
        !          5524: 
        !          5525: void cpu_op_1605b(t_ipc *ipc) /* ROL */ {
        !          5526:   /* mask fff8, bits e7d0, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 2, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5527:   unsigned int srcdata = 1;
        !          5528:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5529:   uint32 dstaddr = ADDRREG(dstreg);
        !          5530:   uint16 dstdata = fetchword(dstaddr);
        !          5531:   uint8 bits = 16;
        !          5532:   uint8 loop = srcdata & 63;
        !          5533:   uint8 cflag = 0;
        !          5534:   uint16 outdata = dstdata;
        !          5535: 
        !          5536:   while(loop) {
        !          5537:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5538:     outdata<<= 1;
        !          5539:     if (cflag)
        !          5540:       outdata |= 1;
        !          5541:     loop--;
        !          5542:   }
        !          5543:   storeword(dstaddr, outdata);
        !          5544: 
        !          5545:   CFLAG = cflag;
        !          5546:   NFLAG = ((sint16)outdata) < 0;
        !          5547:   ZFLAG = !outdata;
        !          5548:   VFLAG = 0;
        !          5549:   PC+= 2;
        !          5550: }
        !          5551: 
        !          5552: void cpu_op_1606a(t_ipc *ipc) /* ROL */ {
        !          5553:   /* mask fff8, bits e7d8, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5554:   unsigned int srcdata = 1;
        !          5555:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5556:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          5557:   uint16 dstdata = fetchword(dstaddr);
        !          5558:   uint8 bits = 16;
        !          5559:   uint8 loop = srcdata & 63;
        !          5560:   uint8 cflag = 0;
        !          5561:   uint16 outdata = dstdata;
        !          5562: 
        !          5563:   while(loop) {
        !          5564:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5565:     outdata<<= 1;
        !          5566:     if (cflag)
        !          5567:       outdata |= 1;
        !          5568:     loop--;
        !          5569:   }
        !          5570:   storeword(dstaddr, outdata);
        !          5571:   PC+= 2;
        !          5572: }
        !          5573: 
        !          5574: void cpu_op_1606b(t_ipc *ipc) /* ROL */ {
        !          5575:   /* mask fff8, bits e7d8, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 3, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5576:   unsigned int srcdata = 1;
        !          5577:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5578:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
        !          5579:   uint16 dstdata = fetchword(dstaddr);
        !          5580:   uint8 bits = 16;
        !          5581:   uint8 loop = srcdata & 63;
        !          5582:   uint8 cflag = 0;
        !          5583:   uint16 outdata = dstdata;
        !          5584: 
        !          5585:   while(loop) {
        !          5586:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5587:     outdata<<= 1;
        !          5588:     if (cflag)
        !          5589:       outdata |= 1;
        !          5590:     loop--;
        !          5591:   }
        !          5592:   storeword(dstaddr, outdata);
        !          5593: 
        !          5594:   CFLAG = cflag;
        !          5595:   NFLAG = ((sint16)outdata) < 0;
        !          5596:   ZFLAG = !outdata;
        !          5597:   VFLAG = 0;
        !          5598:   PC+= 2;
        !          5599: }
        !          5600: 
        !          5601: void cpu_op_1607a(t_ipc *ipc) /* ROL */ {
        !          5602:   /* mask fff8, bits e7e0, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5603:   unsigned int srcdata = 1;
        !          5604:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5605:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          5606:   uint16 dstdata = fetchword(dstaddr);
        !          5607:   uint8 bits = 16;
        !          5608:   uint8 loop = srcdata & 63;
        !          5609:   uint8 cflag = 0;
        !          5610:   uint16 outdata = dstdata;
        !          5611: 
        !          5612:   while(loop) {
        !          5613:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5614:     outdata<<= 1;
        !          5615:     if (cflag)
        !          5616:       outdata |= 1;
        !          5617:     loop--;
        !          5618:   }
        !          5619:   storeword(dstaddr, outdata);
        !          5620:   PC+= 2;
        !          5621: }
        !          5622: 
        !          5623: void cpu_op_1607b(t_ipc *ipc) /* ROL */ {
        !          5624:   /* mask fff8, bits e7e0, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 4, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5625:   unsigned int srcdata = 1;
        !          5626:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5627:   uint32 dstaddr = ADDRREG(dstreg)-=2;
        !          5628:   uint16 dstdata = fetchword(dstaddr);
        !          5629:   uint8 bits = 16;
        !          5630:   uint8 loop = srcdata & 63;
        !          5631:   uint8 cflag = 0;
        !          5632:   uint16 outdata = dstdata;
        !          5633: 
        !          5634:   while(loop) {
        !          5635:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5636:     outdata<<= 1;
        !          5637:     if (cflag)
        !          5638:       outdata |= 1;
        !          5639:     loop--;
        !          5640:   }
        !          5641:   storeword(dstaddr, outdata);
        !          5642: 
        !          5643:   CFLAG = cflag;
        !          5644:   NFLAG = ((sint16)outdata) < 0;
        !          5645:   ZFLAG = !outdata;
        !          5646:   VFLAG = 0;
        !          5647:   PC+= 2;
        !          5648: }
        !          5649: 
        !          5650: void cpu_op_1608a(t_ipc *ipc) /* ROL */ {
        !          5651:   /* mask fff8, bits e7e8, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5652:   unsigned int srcdata = 1;
        !          5653:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5654:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          5655:   uint16 dstdata = fetchword(dstaddr);
        !          5656:   uint8 bits = 16;
        !          5657:   uint8 loop = srcdata & 63;
        !          5658:   uint8 cflag = 0;
        !          5659:   uint16 outdata = dstdata;
        !          5660: 
        !          5661:   while(loop) {
        !          5662:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5663:     outdata<<= 1;
        !          5664:     if (cflag)
        !          5665:       outdata |= 1;
        !          5666:     loop--;
        !          5667:   }
        !          5668:   storeword(dstaddr, outdata);
        !          5669:   PC+= 4;
        !          5670: }
        !          5671: 
        !          5672: void cpu_op_1608b(t_ipc *ipc) /* ROL */ {
        !          5673:   /* mask fff8, bits e7e8, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 5, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5674:   unsigned int srcdata = 1;
        !          5675:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5676:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
        !          5677:   uint16 dstdata = fetchword(dstaddr);
        !          5678:   uint8 bits = 16;
        !          5679:   uint8 loop = srcdata & 63;
        !          5680:   uint8 cflag = 0;
        !          5681:   uint16 outdata = dstdata;
        !          5682: 
        !          5683:   while(loop) {
        !          5684:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5685:     outdata<<= 1;
        !          5686:     if (cflag)
        !          5687:       outdata |= 1;
        !          5688:     loop--;
        !          5689:   }
        !          5690:   storeword(dstaddr, outdata);
        !          5691: 
        !          5692:   CFLAG = cflag;
        !          5693:   NFLAG = ((sint16)outdata) < 0;
        !          5694:   ZFLAG = !outdata;
        !          5695:   VFLAG = 0;
        !          5696:   PC+= 4;
        !          5697: }
        !          5698: 
        !          5699: void cpu_op_1609a(t_ipc *ipc) /* ROL */ {
        !          5700:   /* mask fff8, bits e7f0, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5701:   unsigned int srcdata = 1;
        !          5702:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5703:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          5704:   uint16 dstdata = fetchword(dstaddr);
        !          5705:   uint8 bits = 16;
        !          5706:   uint8 loop = srcdata & 63;
        !          5707:   uint8 cflag = 0;
        !          5708:   uint16 outdata = dstdata;
        !          5709: 
        !          5710:   while(loop) {
        !          5711:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5712:     outdata<<= 1;
        !          5713:     if (cflag)
        !          5714:       outdata |= 1;
        !          5715:     loop--;
        !          5716:   }
        !          5717:   storeword(dstaddr, outdata);
        !          5718:   PC+= 4;
        !          5719: }
        !          5720: 
        !          5721: void cpu_op_1609b(t_ipc *ipc) /* ROL */ {
        !          5722:   /* mask fff8, bits e7f0, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 6, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5723:   unsigned int srcdata = 1;
        !          5724:   int dstreg = (ipc->opcode >> 0) & 7;
        !          5725:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
        !          5726:   uint16 dstdata = fetchword(dstaddr);
        !          5727:   uint8 bits = 16;
        !          5728:   uint8 loop = srcdata & 63;
        !          5729:   uint8 cflag = 0;
        !          5730:   uint16 outdata = dstdata;
        !          5731: 
        !          5732:   while(loop) {
        !          5733:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5734:     outdata<<= 1;
        !          5735:     if (cflag)
        !          5736:       outdata |= 1;
        !          5737:     loop--;
        !          5738:   }
        !          5739:   storeword(dstaddr, outdata);
        !          5740: 
        !          5741:   CFLAG = cflag;
        !          5742:   NFLAG = ((sint16)outdata) < 0;
        !          5743:   ZFLAG = !outdata;
        !          5744:   VFLAG = 0;
        !          5745:   PC+= 4;
        !          5746: }
        !          5747: 
        !          5748: void cpu_op_1610a(t_ipc *ipc) /* ROL */ {
        !          5749:   /* mask ffff, bits e7f8, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5750:   unsigned int srcdata = 1;
        !          5751:   uint32 dstaddr = ipc->dst;
        !          5752:   uint16 dstdata = fetchword(dstaddr);
        !          5753:   uint8 bits = 16;
        !          5754:   uint8 loop = srcdata & 63;
        !          5755:   uint8 cflag = 0;
        !          5756:   uint16 outdata = dstdata;
        !          5757: 
        !          5758:   while(loop) {
        !          5759:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5760:     outdata<<= 1;
        !          5761:     if (cflag)
        !          5762:       outdata |= 1;
        !          5763:     loop--;
        !          5764:   }
        !          5765:   storeword(dstaddr, outdata);
        !          5766:   PC+= 4;
        !          5767: }
        !          5768: 
        !          5769: void cpu_op_1610b(t_ipc *ipc) /* ROL */ {
        !          5770:   /* mask ffff, bits e7f8, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 7, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5771:   unsigned int srcdata = 1;
        !          5772:   uint32 dstaddr = ipc->dst;
        !          5773:   uint16 dstdata = fetchword(dstaddr);
        !          5774:   uint8 bits = 16;
        !          5775:   uint8 loop = srcdata & 63;
        !          5776:   uint8 cflag = 0;
        !          5777:   uint16 outdata = dstdata;
        !          5778: 
        !          5779:   while(loop) {
        !          5780:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5781:     outdata<<= 1;
        !          5782:     if (cflag)
        !          5783:       outdata |= 1;
        !          5784:     loop--;
        !          5785:   }
        !          5786:   storeword(dstaddr, outdata);
        !          5787: 
        !          5788:   CFLAG = cflag;
        !          5789:   NFLAG = ((sint16)outdata) < 0;
        !          5790:   ZFLAG = !outdata;
        !          5791:   VFLAG = 0;
        !          5792:   PC+= 4;
        !          5793: }
        !          5794: 
        !          5795: void cpu_op_1611a(t_ipc *ipc) /* ROL */ {
        !          5796:   /* mask ffff, bits e7f9, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5797:   unsigned int srcdata = 1;
        !          5798:   uint32 dstaddr = ipc->dst;
        !          5799:   uint16 dstdata = fetchword(dstaddr);
        !          5800:   uint8 bits = 16;
        !          5801:   uint8 loop = srcdata & 63;
        !          5802:   uint8 cflag = 0;
        !          5803:   uint16 outdata = dstdata;
        !          5804: 
        !          5805:   while(loop) {
        !          5806:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5807:     outdata<<= 1;
        !          5808:     if (cflag)
        !          5809:       outdata |= 1;
        !          5810:     loop--;
        !          5811:   }
        !          5812:   storeword(dstaddr, outdata);
        !          5813:   PC+= 6;
        !          5814: }
        !          5815: 
        !          5816: void cpu_op_1611b(t_ipc *ipc) /* ROL */ {
        !          5817:   /* mask ffff, bits e7f9, mnemonic 73, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 14, dtype 8, sbitpos 0, dbitpos 0, immvalue 1 */
        !          5818:   unsigned int srcdata = 1;
        !          5819:   uint32 dstaddr = ipc->dst;
        !          5820:   uint16 dstdata = fetchword(dstaddr);
        !          5821:   uint8 bits = 16;
        !          5822:   uint8 loop = srcdata & 63;
        !          5823:   uint8 cflag = 0;
        !          5824:   uint16 outdata = dstdata;
        !          5825: 
        !          5826:   while(loop) {
        !          5827:     cflag = outdata & 1<<(bits-1) ? 1 : 0;
        !          5828:     outdata<<= 1;
        !          5829:     if (cflag)
        !          5830:       outdata |= 1;
        !          5831:     loop--;
        !          5832:   }
        !          5833:   storeword(dstaddr, outdata);
        !          5834: 
        !          5835:   CFLAG = cflag;
        !          5836:   NFLAG = ((sint16)outdata) < 0;
        !          5837:   ZFLAG = !outdata;
        !          5838:   VFLAG = 0;
        !          5839:   PC+= 6;
        !          5840: }
        !          5841: 

unix.superglobalmegacorp.com

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