Annotation of generator/src/out/cpu68k-0.c, revision 1.1.1.2

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

unix.superglobalmegacorp.com

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