Annotation of generator/src/out/cpu68k-d.c, revision 1.1.1.1

1.1       root        1: /*****************************************************************************/
                      2: /*     Generator - Sega Genesis emulation - (c) James Ponder 1997-1998       */
                      3: /*****************************************************************************/
                      4: /*                                                                           */
                      5: /* cpu68k-d.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_1397a(t_ipc *ipc) /* ADD */ {
                     19:   /* mask f1f8, bits d000, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                     20:   int srcreg = (ipc->opcode >> 0) & 7;
                     21:   uint8 srcdata = DATAREG(srcreg);
                     22:   int dstreg = (ipc->opcode >> 9) & 7;
                     23:   uint8 dstdata = DATAREG(dstreg);
                     24:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                     25: 
                     26:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                     27:   PC+= 2;
                     28: }
                     29: 
                     30: void cpu_op_1397b(t_ipc *ipc) /* ADD */ {
                     31:   /* mask f1f8, bits d000, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                     32:   int srcreg = (ipc->opcode >> 0) & 7;
                     33:   uint8 srcdata = DATAREG(srcreg);
                     34:   int dstreg = (ipc->opcode >> 9) & 7;
                     35:   uint8 dstdata = DATAREG(dstreg);
                     36:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                     37: 
                     38:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                     39: 
                     40:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                     41:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                     42:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                     43:   NFLAG = ((sint8)outdata) < 0;
                     44:   ZFLAG = !outdata;
                     45:   PC+= 2;
                     46: }
                     47: 
                     48: void cpu_op_1398a(t_ipc *ipc) /* ADD */ {
                     49:   /* mask f1f8, bits d008, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                     50:   int srcreg = (ipc->opcode >> 0) & 7;
                     51:   uint8 srcdata = ADDRREG(srcreg);
                     52:   int dstreg = (ipc->opcode >> 9) & 7;
                     53:   uint8 dstdata = DATAREG(dstreg);
                     54:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                     55: 
                     56:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                     57:   PC+= 2;
                     58: }
                     59: 
                     60: void cpu_op_1398b(t_ipc *ipc) /* ADD */ {
                     61:   /* mask f1f8, bits d008, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                     62:   int srcreg = (ipc->opcode >> 0) & 7;
                     63:   uint8 srcdata = ADDRREG(srcreg);
                     64:   int dstreg = (ipc->opcode >> 9) & 7;
                     65:   uint8 dstdata = DATAREG(dstreg);
                     66:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                     67: 
                     68:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                     69: 
                     70:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                     71:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                     72:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                     73:   NFLAG = ((sint8)outdata) < 0;
                     74:   ZFLAG = !outdata;
                     75:   PC+= 2;
                     76: }
                     77: 
                     78: void cpu_op_1399a(t_ipc *ipc) /* ADD */ {
                     79:   /* mask f1f8, bits d010, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                     80:   int srcreg = (ipc->opcode >> 0) & 7;
                     81:   uint32 srcaddr = ADDRREG(srcreg);
                     82:   uint8 srcdata = fetchbyte(srcaddr);
                     83:   int dstreg = (ipc->opcode >> 9) & 7;
                     84:   uint8 dstdata = DATAREG(dstreg);
                     85:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                     86: 
                     87:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                     88:   PC+= 2;
                     89: }
                     90: 
                     91: void cpu_op_1399b(t_ipc *ipc) /* ADD */ {
                     92:   /* mask f1f8, bits d010, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                     93:   int srcreg = (ipc->opcode >> 0) & 7;
                     94:   uint32 srcaddr = ADDRREG(srcreg);
                     95:   uint8 srcdata = fetchbyte(srcaddr);
                     96:   int dstreg = (ipc->opcode >> 9) & 7;
                     97:   uint8 dstdata = DATAREG(dstreg);
                     98:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                     99: 
                    100:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    101: 
                    102:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                    103:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                    104:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                    105:   NFLAG = ((sint8)outdata) < 0;
                    106:   ZFLAG = !outdata;
                    107:   PC+= 2;
                    108: }
                    109: 
                    110: void cpu_op_1400a(t_ipc *ipc) /* ADD */ {
                    111:   /* mask f1f8, bits d018, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    112:   int srcreg = (ipc->opcode >> 0) & 7;
                    113:   uint32 srcaddr = ADDRREG(srcreg);
                    114:   uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0);
                    115:   uint8 srcdata = fetchbyte(srcaddr);
                    116:   int dstreg = (ipc->opcode >> 9) & 7;
                    117:   uint8 dstdata = DATAREG(dstreg);
                    118:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    119: 
                    120:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    121:   PC+= 2;
                    122: }
                    123: 
                    124: void cpu_op_1400b(t_ipc *ipc) /* ADD */ {
                    125:   /* mask f1f8, bits d018, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    126:   int srcreg = (ipc->opcode >> 0) & 7;
                    127:   uint32 srcaddr = ADDRREG(srcreg);
                    128:   uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0);
                    129:   uint8 srcdata = fetchbyte(srcaddr);
                    130:   int dstreg = (ipc->opcode >> 9) & 7;
                    131:   uint8 dstdata = DATAREG(dstreg);
                    132:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    133: 
                    134:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    135: 
                    136:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                    137:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                    138:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                    139:   NFLAG = ((sint8)outdata) < 0;
                    140:   ZFLAG = !outdata;
                    141:   PC+= 2;
                    142: }
                    143: 
                    144: void cpu_op_1401a(t_ipc *ipc) /* ADD */ {
                    145:   /* mask f1f8, bits d020, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    146:   int srcreg = (ipc->opcode >> 0) & 7;
                    147:   uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1));
                    148:   uint8 srcdata = fetchbyte(srcaddr);
                    149:   int dstreg = (ipc->opcode >> 9) & 7;
                    150:   uint8 dstdata = DATAREG(dstreg);
                    151:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    152: 
                    153:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    154:   PC+= 2;
                    155: }
                    156: 
                    157: void cpu_op_1401b(t_ipc *ipc) /* ADD */ {
                    158:   /* mask f1f8, bits d020, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    159:   int srcreg = (ipc->opcode >> 0) & 7;
                    160:   uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1));
                    161:   uint8 srcdata = fetchbyte(srcaddr);
                    162:   int dstreg = (ipc->opcode >> 9) & 7;
                    163:   uint8 dstdata = DATAREG(dstreg);
                    164:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    165: 
                    166:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    167: 
                    168:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                    169:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                    170:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                    171:   NFLAG = ((sint8)outdata) < 0;
                    172:   ZFLAG = !outdata;
                    173:   PC+= 2;
                    174: }
                    175: 
                    176: void cpu_op_1402a(t_ipc *ipc) /* ADD */ {
                    177:   /* mask f1f8, bits d028, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    178:   int srcreg = (ipc->opcode >> 0) & 7;
                    179:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                    180:   uint8 srcdata = fetchbyte(srcaddr);
                    181:   int dstreg = (ipc->opcode >> 9) & 7;
                    182:   uint8 dstdata = DATAREG(dstreg);
                    183:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    184: 
                    185:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    186:   PC+= 4;
                    187: }
                    188: 
                    189: void cpu_op_1402b(t_ipc *ipc) /* ADD */ {
                    190:   /* mask f1f8, bits d028, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    191:   int srcreg = (ipc->opcode >> 0) & 7;
                    192:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                    193:   uint8 srcdata = fetchbyte(srcaddr);
                    194:   int dstreg = (ipc->opcode >> 9) & 7;
                    195:   uint8 dstdata = DATAREG(dstreg);
                    196:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    197: 
                    198:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    199: 
                    200:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                    201:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                    202:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                    203:   NFLAG = ((sint8)outdata) < 0;
                    204:   ZFLAG = !outdata;
                    205:   PC+= 4;
                    206: }
                    207: 
                    208: void cpu_op_1403a(t_ipc *ipc) /* ADD */ {
                    209:   /* mask f1f8, bits d030, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    210:   int srcreg = (ipc->opcode >> 0) & 7;
                    211:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                    212:   uint8 srcdata = fetchbyte(srcaddr);
                    213:   int dstreg = (ipc->opcode >> 9) & 7;
                    214:   uint8 dstdata = DATAREG(dstreg);
                    215:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    216: 
                    217:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    218:   PC+= 4;
                    219: }
                    220: 
                    221: void cpu_op_1403b(t_ipc *ipc) /* ADD */ {
                    222:   /* mask f1f8, bits d030, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    223:   int srcreg = (ipc->opcode >> 0) & 7;
                    224:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                    225:   uint8 srcdata = fetchbyte(srcaddr);
                    226:   int dstreg = (ipc->opcode >> 9) & 7;
                    227:   uint8 dstdata = DATAREG(dstreg);
                    228:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    229: 
                    230:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    231: 
                    232:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                    233:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                    234:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                    235:   NFLAG = ((sint8)outdata) < 0;
                    236:   ZFLAG = !outdata;
                    237:   PC+= 4;
                    238: }
                    239: 
                    240: void cpu_op_1404a(t_ipc *ipc) /* ADD */ {
                    241:   /* mask f1ff, bits d038, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    242:   uint32 srcaddr = ipc->src;
                    243:   uint8 srcdata = fetchbyte(srcaddr);
                    244:   int dstreg = (ipc->opcode >> 9) & 7;
                    245:   uint8 dstdata = DATAREG(dstreg);
                    246:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    247: 
                    248:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    249:   PC+= 4;
                    250: }
                    251: 
                    252: void cpu_op_1404b(t_ipc *ipc) /* ADD */ {
                    253:   /* mask f1ff, bits d038, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    254:   uint32 srcaddr = ipc->src;
                    255:   uint8 srcdata = fetchbyte(srcaddr);
                    256:   int dstreg = (ipc->opcode >> 9) & 7;
                    257:   uint8 dstdata = DATAREG(dstreg);
                    258:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    259: 
                    260:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    261: 
                    262:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                    263:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                    264:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                    265:   NFLAG = ((sint8)outdata) < 0;
                    266:   ZFLAG = !outdata;
                    267:   PC+= 4;
                    268: }
                    269: 
                    270: void cpu_op_1405a(t_ipc *ipc) /* ADD */ {
                    271:   /* mask f1ff, bits d039, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    272:   uint32 srcaddr = ipc->src;
                    273:   uint8 srcdata = fetchbyte(srcaddr);
                    274:   int dstreg = (ipc->opcode >> 9) & 7;
                    275:   uint8 dstdata = DATAREG(dstreg);
                    276:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    277: 
                    278:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    279:   PC+= 6;
                    280: }
                    281: 
                    282: void cpu_op_1405b(t_ipc *ipc) /* ADD */ {
                    283:   /* mask f1ff, bits d039, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    284:   uint32 srcaddr = ipc->src;
                    285:   uint8 srcdata = fetchbyte(srcaddr);
                    286:   int dstreg = (ipc->opcode >> 9) & 7;
                    287:   uint8 dstdata = DATAREG(dstreg);
                    288:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    289: 
                    290:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    291: 
                    292:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                    293:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                    294:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                    295:   NFLAG = ((sint8)outdata) < 0;
                    296:   ZFLAG = !outdata;
                    297:   PC+= 6;
                    298: }
                    299: 
                    300: void cpu_op_1406a(t_ipc *ipc) /* ADD */ {
                    301:   /* mask f1ff, bits d03a, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    302:   uint32 srcaddr = ipc->src;
                    303:   uint8 srcdata = fetchbyte(srcaddr);
                    304:   int dstreg = (ipc->opcode >> 9) & 7;
                    305:   uint8 dstdata = DATAREG(dstreg);
                    306:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    307: 
                    308:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    309:   PC+= 4;
                    310: }
                    311: 
                    312: void cpu_op_1406b(t_ipc *ipc) /* ADD */ {
                    313:   /* mask f1ff, bits d03a, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    314:   uint32 srcaddr = ipc->src;
                    315:   uint8 srcdata = fetchbyte(srcaddr);
                    316:   int dstreg = (ipc->opcode >> 9) & 7;
                    317:   uint8 dstdata = DATAREG(dstreg);
                    318:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    319: 
                    320:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    321: 
                    322:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                    323:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                    324:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                    325:   NFLAG = ((sint8)outdata) < 0;
                    326:   ZFLAG = !outdata;
                    327:   PC+= 4;
                    328: }
                    329: 
                    330: void cpu_op_1407a(t_ipc *ipc) /* ADD */ {
                    331:   /* mask f1ff, bits d03b, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    332:   uint32 srcaddr = idxval_src(ipc);
                    333:   uint8 srcdata = fetchbyte(srcaddr);
                    334:   int dstreg = (ipc->opcode >> 9) & 7;
                    335:   uint8 dstdata = DATAREG(dstreg);
                    336:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    337: 
                    338:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    339:   PC+= 4;
                    340: }
                    341: 
                    342: void cpu_op_1407b(t_ipc *ipc) /* ADD */ {
                    343:   /* mask f1ff, bits d03b, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    344:   uint32 srcaddr = idxval_src(ipc);
                    345:   uint8 srcdata = fetchbyte(srcaddr);
                    346:   int dstreg = (ipc->opcode >> 9) & 7;
                    347:   uint8 dstdata = DATAREG(dstreg);
                    348:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    349: 
                    350:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    351: 
                    352:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                    353:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                    354:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                    355:   NFLAG = ((sint8)outdata) < 0;
                    356:   ZFLAG = !outdata;
                    357:   PC+= 4;
                    358: }
                    359: 
                    360: void cpu_op_1408a(t_ipc *ipc) /* ADD */ {
                    361:   /* mask f1ff, bits d03c, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 11, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    362:   uint8 srcdata = ipc->src;
                    363:   int dstreg = (ipc->opcode >> 9) & 7;
                    364:   uint8 dstdata = DATAREG(dstreg);
                    365:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    366: 
                    367:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    368:   PC+= 4;
                    369: }
                    370: 
                    371: void cpu_op_1408b(t_ipc *ipc) /* ADD */ {
                    372:   /* mask f1ff, bits d03c, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 11, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    373:   uint8 srcdata = ipc->src;
                    374:   int dstreg = (ipc->opcode >> 9) & 7;
                    375:   uint8 dstdata = DATAREG(dstreg);
                    376:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                    377: 
                    378:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    379: 
                    380:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                    381:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                    382:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                    383:   NFLAG = ((sint8)outdata) < 0;
                    384:   ZFLAG = !outdata;
                    385:   PC+= 4;
                    386: }
                    387: 
                    388: void cpu_op_1409a(t_ipc *ipc) /* ADD */ {
                    389:   /* mask f1f8, bits d040, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    390:   int srcreg = (ipc->opcode >> 0) & 7;
                    391:   uint16 srcdata = DATAREG(srcreg);
                    392:   int dstreg = (ipc->opcode >> 9) & 7;
                    393:   uint16 dstdata = DATAREG(dstreg);
                    394:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    395: 
                    396:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    397:   PC+= 2;
                    398: }
                    399: 
                    400: void cpu_op_1409b(t_ipc *ipc) /* ADD */ {
                    401:   /* mask f1f8, bits d040, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    402:   int srcreg = (ipc->opcode >> 0) & 7;
                    403:   uint16 srcdata = DATAREG(srcreg);
                    404:   int dstreg = (ipc->opcode >> 9) & 7;
                    405:   uint16 dstdata = DATAREG(dstreg);
                    406:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    407: 
                    408:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    409: 
                    410:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                    411:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                    412:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                    413:   NFLAG = ((sint16)outdata) < 0;
                    414:   ZFLAG = !outdata;
                    415:   PC+= 2;
                    416: }
                    417: 
                    418: void cpu_op_1410a(t_ipc *ipc) /* ADD */ {
                    419:   /* mask f1f8, bits d048, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    420:   int srcreg = (ipc->opcode >> 0) & 7;
                    421:   uint16 srcdata = ADDRREG(srcreg);
                    422:   int dstreg = (ipc->opcode >> 9) & 7;
                    423:   uint16 dstdata = DATAREG(dstreg);
                    424:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    425: 
                    426:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    427:   PC+= 2;
                    428: }
                    429: 
                    430: void cpu_op_1410b(t_ipc *ipc) /* ADD */ {
                    431:   /* mask f1f8, bits d048, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    432:   int srcreg = (ipc->opcode >> 0) & 7;
                    433:   uint16 srcdata = ADDRREG(srcreg);
                    434:   int dstreg = (ipc->opcode >> 9) & 7;
                    435:   uint16 dstdata = DATAREG(dstreg);
                    436:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    437: 
                    438:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    439: 
                    440:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                    441:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                    442:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                    443:   NFLAG = ((sint16)outdata) < 0;
                    444:   ZFLAG = !outdata;
                    445:   PC+= 2;
                    446: }
                    447: 
                    448: void cpu_op_1411a(t_ipc *ipc) /* ADD */ {
                    449:   /* mask f1f8, bits d050, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    450:   int srcreg = (ipc->opcode >> 0) & 7;
                    451:   uint32 srcaddr = ADDRREG(srcreg);
                    452:   uint16 srcdata = fetchword(srcaddr);
                    453:   int dstreg = (ipc->opcode >> 9) & 7;
                    454:   uint16 dstdata = DATAREG(dstreg);
                    455:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    456: 
                    457:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    458:   PC+= 2;
                    459: }
                    460: 
                    461: void cpu_op_1411b(t_ipc *ipc) /* ADD */ {
                    462:   /* mask f1f8, bits d050, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    463:   int srcreg = (ipc->opcode >> 0) & 7;
                    464:   uint32 srcaddr = ADDRREG(srcreg);
                    465:   uint16 srcdata = fetchword(srcaddr);
                    466:   int dstreg = (ipc->opcode >> 9) & 7;
                    467:   uint16 dstdata = DATAREG(dstreg);
                    468:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    469: 
                    470:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    471: 
                    472:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                    473:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                    474:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                    475:   NFLAG = ((sint16)outdata) < 0;
                    476:   ZFLAG = !outdata;
                    477:   PC+= 2;
                    478: }
                    479: 
                    480: void cpu_op_1412a(t_ipc *ipc) /* ADD */ {
                    481:   /* mask f1f8, bits d058, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    482:   int srcreg = (ipc->opcode >> 0) & 7;
                    483:   uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
                    484:   uint16 srcdata = fetchword(srcaddr);
                    485:   int dstreg = (ipc->opcode >> 9) & 7;
                    486:   uint16 dstdata = DATAREG(dstreg);
                    487:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    488: 
                    489:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    490:   PC+= 2;
                    491: }
                    492: 
                    493: void cpu_op_1412b(t_ipc *ipc) /* ADD */ {
                    494:   /* mask f1f8, bits d058, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    495:   int srcreg = (ipc->opcode >> 0) & 7;
                    496:   uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
                    497:   uint16 srcdata = fetchword(srcaddr);
                    498:   int dstreg = (ipc->opcode >> 9) & 7;
                    499:   uint16 dstdata = DATAREG(dstreg);
                    500:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    501: 
                    502:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    503: 
                    504:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                    505:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                    506:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                    507:   NFLAG = ((sint16)outdata) < 0;
                    508:   ZFLAG = !outdata;
                    509:   PC+= 2;
                    510: }
                    511: 
                    512: void cpu_op_1413a(t_ipc *ipc) /* ADD */ {
                    513:   /* mask f1f8, bits d060, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    514:   int srcreg = (ipc->opcode >> 0) & 7;
                    515:   uint32 srcaddr = ADDRREG(srcreg)-=2;
                    516:   uint16 srcdata = fetchword(srcaddr);
                    517:   int dstreg = (ipc->opcode >> 9) & 7;
                    518:   uint16 dstdata = DATAREG(dstreg);
                    519:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    520: 
                    521:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    522:   PC+= 2;
                    523: }
                    524: 
                    525: void cpu_op_1413b(t_ipc *ipc) /* ADD */ {
                    526:   /* mask f1f8, bits d060, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    527:   int srcreg = (ipc->opcode >> 0) & 7;
                    528:   uint32 srcaddr = ADDRREG(srcreg)-=2;
                    529:   uint16 srcdata = fetchword(srcaddr);
                    530:   int dstreg = (ipc->opcode >> 9) & 7;
                    531:   uint16 dstdata = DATAREG(dstreg);
                    532:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    533: 
                    534:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    535: 
                    536:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                    537:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                    538:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                    539:   NFLAG = ((sint16)outdata) < 0;
                    540:   ZFLAG = !outdata;
                    541:   PC+= 2;
                    542: }
                    543: 
                    544: void cpu_op_1414a(t_ipc *ipc) /* ADD */ {
                    545:   /* mask f1f8, bits d068, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    546:   int srcreg = (ipc->opcode >> 0) & 7;
                    547:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                    548:   uint16 srcdata = fetchword(srcaddr);
                    549:   int dstreg = (ipc->opcode >> 9) & 7;
                    550:   uint16 dstdata = DATAREG(dstreg);
                    551:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    552: 
                    553:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    554:   PC+= 4;
                    555: }
                    556: 
                    557: void cpu_op_1414b(t_ipc *ipc) /* ADD */ {
                    558:   /* mask f1f8, bits d068, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    559:   int srcreg = (ipc->opcode >> 0) & 7;
                    560:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                    561:   uint16 srcdata = fetchword(srcaddr);
                    562:   int dstreg = (ipc->opcode >> 9) & 7;
                    563:   uint16 dstdata = DATAREG(dstreg);
                    564:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    565: 
                    566:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    567: 
                    568:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                    569:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                    570:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                    571:   NFLAG = ((sint16)outdata) < 0;
                    572:   ZFLAG = !outdata;
                    573:   PC+= 4;
                    574: }
                    575: 
                    576: void cpu_op_1415a(t_ipc *ipc) /* ADD */ {
                    577:   /* mask f1f8, bits d070, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    578:   int srcreg = (ipc->opcode >> 0) & 7;
                    579:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                    580:   uint16 srcdata = fetchword(srcaddr);
                    581:   int dstreg = (ipc->opcode >> 9) & 7;
                    582:   uint16 dstdata = DATAREG(dstreg);
                    583:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    584: 
                    585:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    586:   PC+= 4;
                    587: }
                    588: 
                    589: void cpu_op_1415b(t_ipc *ipc) /* ADD */ {
                    590:   /* mask f1f8, bits d070, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    591:   int srcreg = (ipc->opcode >> 0) & 7;
                    592:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                    593:   uint16 srcdata = fetchword(srcaddr);
                    594:   int dstreg = (ipc->opcode >> 9) & 7;
                    595:   uint16 dstdata = DATAREG(dstreg);
                    596:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    597: 
                    598:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    599: 
                    600:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                    601:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                    602:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                    603:   NFLAG = ((sint16)outdata) < 0;
                    604:   ZFLAG = !outdata;
                    605:   PC+= 4;
                    606: }
                    607: 
                    608: void cpu_op_1416a(t_ipc *ipc) /* ADD */ {
                    609:   /* mask f1ff, bits d078, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    610:   uint32 srcaddr = ipc->src;
                    611:   uint16 srcdata = fetchword(srcaddr);
                    612:   int dstreg = (ipc->opcode >> 9) & 7;
                    613:   uint16 dstdata = DATAREG(dstreg);
                    614:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    615: 
                    616:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    617:   PC+= 4;
                    618: }
                    619: 
                    620: void cpu_op_1416b(t_ipc *ipc) /* ADD */ {
                    621:   /* mask f1ff, bits d078, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    622:   uint32 srcaddr = ipc->src;
                    623:   uint16 srcdata = fetchword(srcaddr);
                    624:   int dstreg = (ipc->opcode >> 9) & 7;
                    625:   uint16 dstdata = DATAREG(dstreg);
                    626:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    627: 
                    628:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    629: 
                    630:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                    631:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                    632:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                    633:   NFLAG = ((sint16)outdata) < 0;
                    634:   ZFLAG = !outdata;
                    635:   PC+= 4;
                    636: }
                    637: 
                    638: void cpu_op_1417a(t_ipc *ipc) /* ADD */ {
                    639:   /* mask f1ff, bits d079, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    640:   uint32 srcaddr = ipc->src;
                    641:   uint16 srcdata = fetchword(srcaddr);
                    642:   int dstreg = (ipc->opcode >> 9) & 7;
                    643:   uint16 dstdata = DATAREG(dstreg);
                    644:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    645: 
                    646:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    647:   PC+= 6;
                    648: }
                    649: 
                    650: void cpu_op_1417b(t_ipc *ipc) /* ADD */ {
                    651:   /* mask f1ff, bits d079, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    652:   uint32 srcaddr = ipc->src;
                    653:   uint16 srcdata = fetchword(srcaddr);
                    654:   int dstreg = (ipc->opcode >> 9) & 7;
                    655:   uint16 dstdata = DATAREG(dstreg);
                    656:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    657: 
                    658:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    659: 
                    660:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                    661:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                    662:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                    663:   NFLAG = ((sint16)outdata) < 0;
                    664:   ZFLAG = !outdata;
                    665:   PC+= 6;
                    666: }
                    667: 
                    668: void cpu_op_1418a(t_ipc *ipc) /* ADD */ {
                    669:   /* mask f1ff, bits d07a, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    670:   uint32 srcaddr = ipc->src;
                    671:   uint16 srcdata = fetchword(srcaddr);
                    672:   int dstreg = (ipc->opcode >> 9) & 7;
                    673:   uint16 dstdata = DATAREG(dstreg);
                    674:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    675: 
                    676:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    677:   PC+= 4;
                    678: }
                    679: 
                    680: void cpu_op_1418b(t_ipc *ipc) /* ADD */ {
                    681:   /* mask f1ff, bits d07a, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    682:   uint32 srcaddr = ipc->src;
                    683:   uint16 srcdata = fetchword(srcaddr);
                    684:   int dstreg = (ipc->opcode >> 9) & 7;
                    685:   uint16 dstdata = DATAREG(dstreg);
                    686:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    687: 
                    688:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    689: 
                    690:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                    691:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                    692:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                    693:   NFLAG = ((sint16)outdata) < 0;
                    694:   ZFLAG = !outdata;
                    695:   PC+= 4;
                    696: }
                    697: 
                    698: void cpu_op_1419a(t_ipc *ipc) /* ADD */ {
                    699:   /* mask f1ff, bits d07b, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    700:   uint32 srcaddr = idxval_src(ipc);
                    701:   uint16 srcdata = fetchword(srcaddr);
                    702:   int dstreg = (ipc->opcode >> 9) & 7;
                    703:   uint16 dstdata = DATAREG(dstreg);
                    704:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    705: 
                    706:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    707:   PC+= 4;
                    708: }
                    709: 
                    710: void cpu_op_1419b(t_ipc *ipc) /* ADD */ {
                    711:   /* mask f1ff, bits d07b, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    712:   uint32 srcaddr = idxval_src(ipc);
                    713:   uint16 srcdata = fetchword(srcaddr);
                    714:   int dstreg = (ipc->opcode >> 9) & 7;
                    715:   uint16 dstdata = DATAREG(dstreg);
                    716:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    717: 
                    718:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    719: 
                    720:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                    721:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                    722:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                    723:   NFLAG = ((sint16)outdata) < 0;
                    724:   ZFLAG = !outdata;
                    725:   PC+= 4;
                    726: }
                    727: 
                    728: void cpu_op_1420a(t_ipc *ipc) /* ADD */ {
                    729:   /* mask f1ff, bits d07c, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    730:   uint16 srcdata = ipc->src;
                    731:   int dstreg = (ipc->opcode >> 9) & 7;
                    732:   uint16 dstdata = DATAREG(dstreg);
                    733:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    734: 
                    735:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    736:   PC+= 4;
                    737: }
                    738: 
                    739: void cpu_op_1420b(t_ipc *ipc) /* ADD */ {
                    740:   /* mask f1ff, bits d07c, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    741:   uint16 srcdata = ipc->src;
                    742:   int dstreg = (ipc->opcode >> 9) & 7;
                    743:   uint16 dstdata = DATAREG(dstreg);
                    744:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                    745: 
                    746:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    747: 
                    748:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                    749:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                    750:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                    751:   NFLAG = ((sint16)outdata) < 0;
                    752:   ZFLAG = !outdata;
                    753:   PC+= 4;
                    754: }
                    755: 
                    756: void cpu_op_1421a(t_ipc *ipc) /* ADD */ {
                    757:   /* mask f1f8, bits d080, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    758:   int srcreg = (ipc->opcode >> 0) & 7;
                    759:   uint32 srcdata = DATAREG(srcreg);
                    760:   int dstreg = (ipc->opcode >> 9) & 7;
                    761:   uint32 dstdata = DATAREG(dstreg);
                    762:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    763: 
                    764:   DATAREG(dstreg) = outdata;
                    765:   PC+= 2;
                    766: }
                    767: 
                    768: void cpu_op_1421b(t_ipc *ipc) /* ADD */ {
                    769:   /* mask f1f8, bits d080, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    770:   int srcreg = (ipc->opcode >> 0) & 7;
                    771:   uint32 srcdata = DATAREG(srcreg);
                    772:   int dstreg = (ipc->opcode >> 9) & 7;
                    773:   uint32 dstdata = DATAREG(dstreg);
                    774:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    775: 
                    776:   DATAREG(dstreg) = outdata;
                    777: 
                    778:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                    779:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                    780:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                    781:   NFLAG = ((sint32)outdata) < 0;
                    782:   ZFLAG = !outdata;
                    783:   PC+= 2;
                    784: }
                    785: 
                    786: void cpu_op_1422a(t_ipc *ipc) /* ADD */ {
                    787:   /* mask f1f8, bits d088, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    788:   int srcreg = (ipc->opcode >> 0) & 7;
                    789:   uint32 srcdata = ADDRREG(srcreg);
                    790:   int dstreg = (ipc->opcode >> 9) & 7;
                    791:   uint32 dstdata = DATAREG(dstreg);
                    792:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    793: 
                    794:   DATAREG(dstreg) = outdata;
                    795:   PC+= 2;
                    796: }
                    797: 
                    798: void cpu_op_1422b(t_ipc *ipc) /* ADD */ {
                    799:   /* mask f1f8, bits d088, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 1, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    800:   int srcreg = (ipc->opcode >> 0) & 7;
                    801:   uint32 srcdata = ADDRREG(srcreg);
                    802:   int dstreg = (ipc->opcode >> 9) & 7;
                    803:   uint32 dstdata = DATAREG(dstreg);
                    804:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    805: 
                    806:   DATAREG(dstreg) = outdata;
                    807: 
                    808:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                    809:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                    810:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                    811:   NFLAG = ((sint32)outdata) < 0;
                    812:   ZFLAG = !outdata;
                    813:   PC+= 2;
                    814: }
                    815: 
                    816: void cpu_op_1423a(t_ipc *ipc) /* ADD */ {
                    817:   /* mask f1f8, bits d090, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    818:   int srcreg = (ipc->opcode >> 0) & 7;
                    819:   uint32 srcaddr = ADDRREG(srcreg);
                    820:   uint32 srcdata = fetchlong(srcaddr);
                    821:   int dstreg = (ipc->opcode >> 9) & 7;
                    822:   uint32 dstdata = DATAREG(dstreg);
                    823:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    824: 
                    825:   DATAREG(dstreg) = outdata;
                    826:   PC+= 2;
                    827: }
                    828: 
                    829: void cpu_op_1423b(t_ipc *ipc) /* ADD */ {
                    830:   /* mask f1f8, bits d090, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    831:   int srcreg = (ipc->opcode >> 0) & 7;
                    832:   uint32 srcaddr = ADDRREG(srcreg);
                    833:   uint32 srcdata = fetchlong(srcaddr);
                    834:   int dstreg = (ipc->opcode >> 9) & 7;
                    835:   uint32 dstdata = DATAREG(dstreg);
                    836:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    837: 
                    838:   DATAREG(dstreg) = outdata;
                    839: 
                    840:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                    841:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                    842:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                    843:   NFLAG = ((sint32)outdata) < 0;
                    844:   ZFLAG = !outdata;
                    845:   PC+= 2;
                    846: }
                    847: 
                    848: void cpu_op_1424a(t_ipc *ipc) /* ADD */ {
                    849:   /* mask f1f8, bits d098, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    850:   int srcreg = (ipc->opcode >> 0) & 7;
                    851:   uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4);
                    852:   uint32 srcdata = fetchlong(srcaddr);
                    853:   int dstreg = (ipc->opcode >> 9) & 7;
                    854:   uint32 dstdata = DATAREG(dstreg);
                    855:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    856: 
                    857:   DATAREG(dstreg) = outdata;
                    858:   PC+= 2;
                    859: }
                    860: 
                    861: void cpu_op_1424b(t_ipc *ipc) /* ADD */ {
                    862:   /* mask f1f8, bits d098, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    863:   int srcreg = (ipc->opcode >> 0) & 7;
                    864:   uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4);
                    865:   uint32 srcdata = fetchlong(srcaddr);
                    866:   int dstreg = (ipc->opcode >> 9) & 7;
                    867:   uint32 dstdata = DATAREG(dstreg);
                    868:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    869: 
                    870:   DATAREG(dstreg) = outdata;
                    871: 
                    872:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                    873:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                    874:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                    875:   NFLAG = ((sint32)outdata) < 0;
                    876:   ZFLAG = !outdata;
                    877:   PC+= 2;
                    878: }
                    879: 
                    880: void cpu_op_1425a(t_ipc *ipc) /* ADD */ {
                    881:   /* mask f1f8, bits d0a0, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    882:   int srcreg = (ipc->opcode >> 0) & 7;
                    883:   uint32 srcaddr = ADDRREG(srcreg)-=4;
                    884:   uint32 srcdata = fetchlong(srcaddr);
                    885:   int dstreg = (ipc->opcode >> 9) & 7;
                    886:   uint32 dstdata = DATAREG(dstreg);
                    887:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    888: 
                    889:   DATAREG(dstreg) = outdata;
                    890:   PC+= 2;
                    891: }
                    892: 
                    893: void cpu_op_1425b(t_ipc *ipc) /* ADD */ {
                    894:   /* mask f1f8, bits d0a0, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    895:   int srcreg = (ipc->opcode >> 0) & 7;
                    896:   uint32 srcaddr = ADDRREG(srcreg)-=4;
                    897:   uint32 srcdata = fetchlong(srcaddr);
                    898:   int dstreg = (ipc->opcode >> 9) & 7;
                    899:   uint32 dstdata = DATAREG(dstreg);
                    900:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    901: 
                    902:   DATAREG(dstreg) = outdata;
                    903: 
                    904:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                    905:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                    906:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                    907:   NFLAG = ((sint32)outdata) < 0;
                    908:   ZFLAG = !outdata;
                    909:   PC+= 2;
                    910: }
                    911: 
                    912: void cpu_op_1426a(t_ipc *ipc) /* ADD */ {
                    913:   /* mask f1f8, bits d0a8, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    914:   int srcreg = (ipc->opcode >> 0) & 7;
                    915:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                    916:   uint32 srcdata = fetchlong(srcaddr);
                    917:   int dstreg = (ipc->opcode >> 9) & 7;
                    918:   uint32 dstdata = DATAREG(dstreg);
                    919:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    920: 
                    921:   DATAREG(dstreg) = outdata;
                    922:   PC+= 4;
                    923: }
                    924: 
                    925: void cpu_op_1426b(t_ipc *ipc) /* ADD */ {
                    926:   /* mask f1f8, bits d0a8, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    927:   int srcreg = (ipc->opcode >> 0) & 7;
                    928:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                    929:   uint32 srcdata = fetchlong(srcaddr);
                    930:   int dstreg = (ipc->opcode >> 9) & 7;
                    931:   uint32 dstdata = DATAREG(dstreg);
                    932:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    933: 
                    934:   DATAREG(dstreg) = outdata;
                    935: 
                    936:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                    937:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                    938:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                    939:   NFLAG = ((sint32)outdata) < 0;
                    940:   ZFLAG = !outdata;
                    941:   PC+= 4;
                    942: }
                    943: 
                    944: void cpu_op_1427a(t_ipc *ipc) /* ADD */ {
                    945:   /* mask f1f8, bits d0b0, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    946:   int srcreg = (ipc->opcode >> 0) & 7;
                    947:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                    948:   uint32 srcdata = fetchlong(srcaddr);
                    949:   int dstreg = (ipc->opcode >> 9) & 7;
                    950:   uint32 dstdata = DATAREG(dstreg);
                    951:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    952: 
                    953:   DATAREG(dstreg) = outdata;
                    954:   PC+= 4;
                    955: }
                    956: 
                    957: void cpu_op_1427b(t_ipc *ipc) /* ADD */ {
                    958:   /* mask f1f8, bits d0b0, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    959:   int srcreg = (ipc->opcode >> 0) & 7;
                    960:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                    961:   uint32 srcdata = fetchlong(srcaddr);
                    962:   int dstreg = (ipc->opcode >> 9) & 7;
                    963:   uint32 dstdata = DATAREG(dstreg);
                    964:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    965: 
                    966:   DATAREG(dstreg) = outdata;
                    967: 
                    968:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                    969:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                    970:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                    971:   NFLAG = ((sint32)outdata) < 0;
                    972:   ZFLAG = !outdata;
                    973:   PC+= 4;
                    974: }
                    975: 
                    976: void cpu_op_1428a(t_ipc *ipc) /* ADD */ {
                    977:   /* mask f1ff, bits d0b8, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    978:   uint32 srcaddr = ipc->src;
                    979:   uint32 srcdata = fetchlong(srcaddr);
                    980:   int dstreg = (ipc->opcode >> 9) & 7;
                    981:   uint32 dstdata = DATAREG(dstreg);
                    982:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    983: 
                    984:   DATAREG(dstreg) = outdata;
                    985:   PC+= 4;
                    986: }
                    987: 
                    988: void cpu_op_1428b(t_ipc *ipc) /* ADD */ {
                    989:   /* mask f1ff, bits d0b8, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    990:   uint32 srcaddr = ipc->src;
                    991:   uint32 srcdata = fetchlong(srcaddr);
                    992:   int dstreg = (ipc->opcode >> 9) & 7;
                    993:   uint32 dstdata = DATAREG(dstreg);
                    994:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                    995: 
                    996:   DATAREG(dstreg) = outdata;
                    997: 
                    998:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                    999:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   1000:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                   1001:   NFLAG = ((sint32)outdata) < 0;
                   1002:   ZFLAG = !outdata;
                   1003:   PC+= 4;
                   1004: }
                   1005: 
                   1006: void cpu_op_1429a(t_ipc *ipc) /* ADD */ {
                   1007:   /* mask f1ff, bits d0b9, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1008:   uint32 srcaddr = ipc->src;
                   1009:   uint32 srcdata = fetchlong(srcaddr);
                   1010:   int dstreg = (ipc->opcode >> 9) & 7;
                   1011:   uint32 dstdata = DATAREG(dstreg);
                   1012:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1013: 
                   1014:   DATAREG(dstreg) = outdata;
                   1015:   PC+= 6;
                   1016: }
                   1017: 
                   1018: void cpu_op_1429b(t_ipc *ipc) /* ADD */ {
                   1019:   /* mask f1ff, bits d0b9, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1020:   uint32 srcaddr = ipc->src;
                   1021:   uint32 srcdata = fetchlong(srcaddr);
                   1022:   int dstreg = (ipc->opcode >> 9) & 7;
                   1023:   uint32 dstdata = DATAREG(dstreg);
                   1024:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1025: 
                   1026:   DATAREG(dstreg) = outdata;
                   1027: 
                   1028:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                   1029:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   1030:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                   1031:   NFLAG = ((sint32)outdata) < 0;
                   1032:   ZFLAG = !outdata;
                   1033:   PC+= 6;
                   1034: }
                   1035: 
                   1036: void cpu_op_1430a(t_ipc *ipc) /* ADD */ {
                   1037:   /* mask f1ff, bits d0ba, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1038:   uint32 srcaddr = ipc->src;
                   1039:   uint32 srcdata = fetchlong(srcaddr);
                   1040:   int dstreg = (ipc->opcode >> 9) & 7;
                   1041:   uint32 dstdata = DATAREG(dstreg);
                   1042:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1043: 
                   1044:   DATAREG(dstreg) = outdata;
                   1045:   PC+= 4;
                   1046: }
                   1047: 
                   1048: void cpu_op_1430b(t_ipc *ipc) /* ADD */ {
                   1049:   /* mask f1ff, bits d0ba, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1050:   uint32 srcaddr = ipc->src;
                   1051:   uint32 srcdata = fetchlong(srcaddr);
                   1052:   int dstreg = (ipc->opcode >> 9) & 7;
                   1053:   uint32 dstdata = DATAREG(dstreg);
                   1054:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1055: 
                   1056:   DATAREG(dstreg) = outdata;
                   1057: 
                   1058:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                   1059:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   1060:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                   1061:   NFLAG = ((sint32)outdata) < 0;
                   1062:   ZFLAG = !outdata;
                   1063:   PC+= 4;
                   1064: }
                   1065: 
                   1066: void cpu_op_1431a(t_ipc *ipc) /* ADD */ {
                   1067:   /* mask f1ff, bits d0bb, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1068:   uint32 srcaddr = idxval_src(ipc);
                   1069:   uint32 srcdata = fetchlong(srcaddr);
                   1070:   int dstreg = (ipc->opcode >> 9) & 7;
                   1071:   uint32 dstdata = DATAREG(dstreg);
                   1072:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1073: 
                   1074:   DATAREG(dstreg) = outdata;
                   1075:   PC+= 4;
                   1076: }
                   1077: 
                   1078: void cpu_op_1431b(t_ipc *ipc) /* ADD */ {
                   1079:   /* mask f1ff, bits d0bb, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1080:   uint32 srcaddr = idxval_src(ipc);
                   1081:   uint32 srcdata = fetchlong(srcaddr);
                   1082:   int dstreg = (ipc->opcode >> 9) & 7;
                   1083:   uint32 dstdata = DATAREG(dstreg);
                   1084:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1085: 
                   1086:   DATAREG(dstreg) = outdata;
                   1087: 
                   1088:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                   1089:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   1090:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                   1091:   NFLAG = ((sint32)outdata) < 0;
                   1092:   ZFLAG = !outdata;
                   1093:   PC+= 4;
                   1094: }
                   1095: 
                   1096: void cpu_op_1432a(t_ipc *ipc) /* ADD */ {
                   1097:   /* mask f1ff, bits d0bc, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 13, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1098:   uint32 srcdata = ipc->src;
                   1099:   int dstreg = (ipc->opcode >> 9) & 7;
                   1100:   uint32 dstdata = DATAREG(dstreg);
                   1101:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1102: 
                   1103:   DATAREG(dstreg) = outdata;
                   1104:   PC+= 6;
                   1105: }
                   1106: 
                   1107: void cpu_op_1432b(t_ipc *ipc) /* ADD */ {
                   1108:   /* mask f1ff, bits d0bc, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 13, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1109:   uint32 srcdata = ipc->src;
                   1110:   int dstreg = (ipc->opcode >> 9) & 7;
                   1111:   uint32 dstdata = DATAREG(dstreg);
                   1112:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1113: 
                   1114:   DATAREG(dstreg) = outdata;
                   1115: 
                   1116:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                   1117:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   1118:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                   1119:   NFLAG = ((sint32)outdata) < 0;
                   1120:   ZFLAG = !outdata;
                   1121:   PC+= 6;
                   1122: }
                   1123: 
                   1124: void cpu_op_1433a(t_ipc *ipc) /* ADD */ {
                   1125:   /* mask f1f8, bits d110, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */
                   1126:   int srcreg = (ipc->opcode >> 9) & 7;
                   1127:   uint8 srcdata = DATAREG(srcreg);
                   1128:   int dstreg = (ipc->opcode >> 0) & 7;
                   1129:   uint32 dstaddr = ADDRREG(dstreg);
                   1130:   uint8 dstdata = fetchbyte(dstaddr);
                   1131:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1132: 
                   1133:   storebyte(dstaddr, outdata);
                   1134:   PC+= 2;
                   1135: }
                   1136: 
                   1137: void cpu_op_1433b(t_ipc *ipc) /* ADD */ {
                   1138:   /* mask f1f8, bits d110, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */
                   1139:   int srcreg = (ipc->opcode >> 9) & 7;
                   1140:   uint8 srcdata = DATAREG(srcreg);
                   1141:   int dstreg = (ipc->opcode >> 0) & 7;
                   1142:   uint32 dstaddr = ADDRREG(dstreg);
                   1143:   uint8 dstdata = fetchbyte(dstaddr);
                   1144:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1145: 
                   1146:   storebyte(dstaddr, outdata);
                   1147: 
                   1148:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                   1149:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                   1150:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                   1151:   NFLAG = ((sint8)outdata) < 0;
                   1152:   ZFLAG = !outdata;
                   1153:   PC+= 2;
                   1154: }
                   1155: 
                   1156: void cpu_op_1434a(t_ipc *ipc) /* ADD */ {
                   1157:   /* mask f1f8, bits d118, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */
                   1158:   int srcreg = (ipc->opcode >> 9) & 7;
                   1159:   uint8 srcdata = DATAREG(srcreg);
                   1160:   int dstreg = (ipc->opcode >> 0) & 7;
                   1161:   uint32 dstaddr = ADDRREG(dstreg);
                   1162:   uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0);
                   1163:   uint8 dstdata = fetchbyte(dstaddr);
                   1164:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1165: 
                   1166:   storebyte(dstaddr, outdata);
                   1167:   PC+= 2;
                   1168: }
                   1169: 
                   1170: void cpu_op_1434b(t_ipc *ipc) /* ADD */ {
                   1171:   /* mask f1f8, bits d118, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */
                   1172:   int srcreg = (ipc->opcode >> 9) & 7;
                   1173:   uint8 srcdata = DATAREG(srcreg);
                   1174:   int dstreg = (ipc->opcode >> 0) & 7;
                   1175:   uint32 dstaddr = ADDRREG(dstreg);
                   1176:   uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0);
                   1177:   uint8 dstdata = fetchbyte(dstaddr);
                   1178:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1179: 
                   1180:   storebyte(dstaddr, outdata);
                   1181: 
                   1182:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                   1183:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                   1184:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                   1185:   NFLAG = ((sint8)outdata) < 0;
                   1186:   ZFLAG = !outdata;
                   1187:   PC+= 2;
                   1188: }
                   1189: 
                   1190: void cpu_op_1435a(t_ipc *ipc) /* ADD */ {
                   1191:   /* mask f1f8, bits d120, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */
                   1192:   int srcreg = (ipc->opcode >> 9) & 7;
                   1193:   uint8 srcdata = DATAREG(srcreg);
                   1194:   int dstreg = (ipc->opcode >> 0) & 7;
                   1195:   uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1));
                   1196:   uint8 dstdata = fetchbyte(dstaddr);
                   1197:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1198: 
                   1199:   storebyte(dstaddr, outdata);
                   1200:   PC+= 2;
                   1201: }
                   1202: 
                   1203: void cpu_op_1435b(t_ipc *ipc) /* ADD */ {
                   1204:   /* mask f1f8, bits d120, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */
                   1205:   int srcreg = (ipc->opcode >> 9) & 7;
                   1206:   uint8 srcdata = DATAREG(srcreg);
                   1207:   int dstreg = (ipc->opcode >> 0) & 7;
                   1208:   uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1));
                   1209:   uint8 dstdata = fetchbyte(dstaddr);
                   1210:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1211: 
                   1212:   storebyte(dstaddr, outdata);
                   1213: 
                   1214:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                   1215:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                   1216:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                   1217:   NFLAG = ((sint8)outdata) < 0;
                   1218:   ZFLAG = !outdata;
                   1219:   PC+= 2;
                   1220: }
                   1221: 
                   1222: void cpu_op_1436a(t_ipc *ipc) /* ADD */ {
                   1223:   /* mask f1f8, bits d128, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */
                   1224:   int srcreg = (ipc->opcode >> 9) & 7;
                   1225:   uint8 srcdata = DATAREG(srcreg);
                   1226:   int dstreg = (ipc->opcode >> 0) & 7;
                   1227:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
                   1228:   uint8 dstdata = fetchbyte(dstaddr);
                   1229:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1230: 
                   1231:   storebyte(dstaddr, outdata);
                   1232:   PC+= 4;
                   1233: }
                   1234: 
                   1235: void cpu_op_1436b(t_ipc *ipc) /* ADD */ {
                   1236:   /* mask f1f8, bits d128, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */
                   1237:   int srcreg = (ipc->opcode >> 9) & 7;
                   1238:   uint8 srcdata = DATAREG(srcreg);
                   1239:   int dstreg = (ipc->opcode >> 0) & 7;
                   1240:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
                   1241:   uint8 dstdata = fetchbyte(dstaddr);
                   1242:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1243: 
                   1244:   storebyte(dstaddr, outdata);
                   1245: 
                   1246:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                   1247:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                   1248:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                   1249:   NFLAG = ((sint8)outdata) < 0;
                   1250:   ZFLAG = !outdata;
                   1251:   PC+= 4;
                   1252: }
                   1253: 
                   1254: void cpu_op_1437a(t_ipc *ipc) /* ADD */ {
                   1255:   /* mask f1f8, bits d130, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */
                   1256:   int srcreg = (ipc->opcode >> 9) & 7;
                   1257:   uint8 srcdata = DATAREG(srcreg);
                   1258:   int dstreg = (ipc->opcode >> 0) & 7;
                   1259:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
                   1260:   uint8 dstdata = fetchbyte(dstaddr);
                   1261:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1262: 
                   1263:   storebyte(dstaddr, outdata);
                   1264:   PC+= 4;
                   1265: }
                   1266: 
                   1267: void cpu_op_1437b(t_ipc *ipc) /* ADD */ {
                   1268:   /* mask f1f8, bits d130, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */
                   1269:   int srcreg = (ipc->opcode >> 9) & 7;
                   1270:   uint8 srcdata = DATAREG(srcreg);
                   1271:   int dstreg = (ipc->opcode >> 0) & 7;
                   1272:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
                   1273:   uint8 dstdata = fetchbyte(dstaddr);
                   1274:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1275: 
                   1276:   storebyte(dstaddr, outdata);
                   1277: 
                   1278:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                   1279:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                   1280:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                   1281:   NFLAG = ((sint8)outdata) < 0;
                   1282:   ZFLAG = !outdata;
                   1283:   PC+= 4;
                   1284: }
                   1285: 
                   1286: void cpu_op_1438a(t_ipc *ipc) /* ADD */ {
                   1287:   /* mask f1ff, bits d138, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */
                   1288:   int srcreg = (ipc->opcode >> 9) & 7;
                   1289:   uint8 srcdata = DATAREG(srcreg);
                   1290:   uint32 dstaddr = ipc->dst;
                   1291:   uint8 dstdata = fetchbyte(dstaddr);
                   1292:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1293: 
                   1294:   storebyte(dstaddr, outdata);
                   1295:   PC+= 4;
                   1296: }
                   1297: 
                   1298: void cpu_op_1438b(t_ipc *ipc) /* ADD */ {
                   1299:   /* mask f1ff, bits d138, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */
                   1300:   int srcreg = (ipc->opcode >> 9) & 7;
                   1301:   uint8 srcdata = DATAREG(srcreg);
                   1302:   uint32 dstaddr = ipc->dst;
                   1303:   uint8 dstdata = fetchbyte(dstaddr);
                   1304:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1305: 
                   1306:   storebyte(dstaddr, outdata);
                   1307: 
                   1308:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                   1309:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                   1310:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                   1311:   NFLAG = ((sint8)outdata) < 0;
                   1312:   ZFLAG = !outdata;
                   1313:   PC+= 4;
                   1314: }
                   1315: 
                   1316: void cpu_op_1439a(t_ipc *ipc) /* ADD */ {
                   1317:   /* mask f1ff, bits d139, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */
                   1318:   int srcreg = (ipc->opcode >> 9) & 7;
                   1319:   uint8 srcdata = DATAREG(srcreg);
                   1320:   uint32 dstaddr = ipc->dst;
                   1321:   uint8 dstdata = fetchbyte(dstaddr);
                   1322:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1323: 
                   1324:   storebyte(dstaddr, outdata);
                   1325:   PC+= 6;
                   1326: }
                   1327: 
                   1328: void cpu_op_1439b(t_ipc *ipc) /* ADD */ {
                   1329:   /* mask f1ff, bits d139, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 1, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */
                   1330:   int srcreg = (ipc->opcode >> 9) & 7;
                   1331:   uint8 srcdata = DATAREG(srcreg);
                   1332:   uint32 dstaddr = ipc->dst;
                   1333:   uint8 dstdata = fetchbyte(dstaddr);
                   1334:   uint8 outdata = (sint8)dstdata + (sint8)srcdata;
                   1335: 
                   1336:   storebyte(dstaddr, outdata);
                   1337: 
                   1338:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                   1339:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                   1340:   XFLAG = CFLAG = srcdata > (0xFFu - (uint8)dstdata);
                   1341:   NFLAG = ((sint8)outdata) < 0;
                   1342:   ZFLAG = !outdata;
                   1343:   PC+= 6;
                   1344: }
                   1345: 
                   1346: void cpu_op_1440a(t_ipc *ipc) /* ADD */ {
                   1347:   /* mask f1f8, bits d150, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */
                   1348:   int srcreg = (ipc->opcode >> 9) & 7;
                   1349:   uint16 srcdata = DATAREG(srcreg);
                   1350:   int dstreg = (ipc->opcode >> 0) & 7;
                   1351:   uint32 dstaddr = ADDRREG(dstreg);
                   1352:   uint16 dstdata = fetchword(dstaddr);
                   1353:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1354: 
                   1355:   storeword(dstaddr, outdata);
                   1356:   PC+= 2;
                   1357: }
                   1358: 
                   1359: void cpu_op_1440b(t_ipc *ipc) /* ADD */ {
                   1360:   /* mask f1f8, bits d150, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */
                   1361:   int srcreg = (ipc->opcode >> 9) & 7;
                   1362:   uint16 srcdata = DATAREG(srcreg);
                   1363:   int dstreg = (ipc->opcode >> 0) & 7;
                   1364:   uint32 dstaddr = ADDRREG(dstreg);
                   1365:   uint16 dstdata = fetchword(dstaddr);
                   1366:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1367: 
                   1368:   storeword(dstaddr, outdata);
                   1369: 
                   1370:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                   1371:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                   1372:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                   1373:   NFLAG = ((sint16)outdata) < 0;
                   1374:   ZFLAG = !outdata;
                   1375:   PC+= 2;
                   1376: }
                   1377: 
                   1378: void cpu_op_1441a(t_ipc *ipc) /* ADD */ {
                   1379:   /* mask f1f8, bits d158, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */
                   1380:   int srcreg = (ipc->opcode >> 9) & 7;
                   1381:   uint16 srcdata = DATAREG(srcreg);
                   1382:   int dstreg = (ipc->opcode >> 0) & 7;
                   1383:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
                   1384:   uint16 dstdata = fetchword(dstaddr);
                   1385:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1386: 
                   1387:   storeword(dstaddr, outdata);
                   1388:   PC+= 2;
                   1389: }
                   1390: 
                   1391: void cpu_op_1441b(t_ipc *ipc) /* ADD */ {
                   1392:   /* mask f1f8, bits d158, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */
                   1393:   int srcreg = (ipc->opcode >> 9) & 7;
                   1394:   uint16 srcdata = DATAREG(srcreg);
                   1395:   int dstreg = (ipc->opcode >> 0) & 7;
                   1396:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
                   1397:   uint16 dstdata = fetchword(dstaddr);
                   1398:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1399: 
                   1400:   storeword(dstaddr, outdata);
                   1401: 
                   1402:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                   1403:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                   1404:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                   1405:   NFLAG = ((sint16)outdata) < 0;
                   1406:   ZFLAG = !outdata;
                   1407:   PC+= 2;
                   1408: }
                   1409: 
                   1410: void cpu_op_1442a(t_ipc *ipc) /* ADD */ {
                   1411:   /* mask f1f8, bits d160, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */
                   1412:   int srcreg = (ipc->opcode >> 9) & 7;
                   1413:   uint16 srcdata = DATAREG(srcreg);
                   1414:   int dstreg = (ipc->opcode >> 0) & 7;
                   1415:   uint32 dstaddr = ADDRREG(dstreg)-=2;
                   1416:   uint16 dstdata = fetchword(dstaddr);
                   1417:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1418: 
                   1419:   storeword(dstaddr, outdata);
                   1420:   PC+= 2;
                   1421: }
                   1422: 
                   1423: void cpu_op_1442b(t_ipc *ipc) /* ADD */ {
                   1424:   /* mask f1f8, bits d160, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */
                   1425:   int srcreg = (ipc->opcode >> 9) & 7;
                   1426:   uint16 srcdata = DATAREG(srcreg);
                   1427:   int dstreg = (ipc->opcode >> 0) & 7;
                   1428:   uint32 dstaddr = ADDRREG(dstreg)-=2;
                   1429:   uint16 dstdata = fetchword(dstaddr);
                   1430:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1431: 
                   1432:   storeword(dstaddr, outdata);
                   1433: 
                   1434:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                   1435:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                   1436:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                   1437:   NFLAG = ((sint16)outdata) < 0;
                   1438:   ZFLAG = !outdata;
                   1439:   PC+= 2;
                   1440: }
                   1441: 
                   1442: void cpu_op_1443a(t_ipc *ipc) /* ADD */ {
                   1443:   /* mask f1f8, bits d168, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */
                   1444:   int srcreg = (ipc->opcode >> 9) & 7;
                   1445:   uint16 srcdata = DATAREG(srcreg);
                   1446:   int dstreg = (ipc->opcode >> 0) & 7;
                   1447:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
                   1448:   uint16 dstdata = fetchword(dstaddr);
                   1449:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1450: 
                   1451:   storeword(dstaddr, outdata);
                   1452:   PC+= 4;
                   1453: }
                   1454: 
                   1455: void cpu_op_1443b(t_ipc *ipc) /* ADD */ {
                   1456:   /* mask f1f8, bits d168, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */
                   1457:   int srcreg = (ipc->opcode >> 9) & 7;
                   1458:   uint16 srcdata = DATAREG(srcreg);
                   1459:   int dstreg = (ipc->opcode >> 0) & 7;
                   1460:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
                   1461:   uint16 dstdata = fetchword(dstaddr);
                   1462:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1463: 
                   1464:   storeword(dstaddr, outdata);
                   1465: 
                   1466:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                   1467:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                   1468:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                   1469:   NFLAG = ((sint16)outdata) < 0;
                   1470:   ZFLAG = !outdata;
                   1471:   PC+= 4;
                   1472: }
                   1473: 
                   1474: void cpu_op_1444a(t_ipc *ipc) /* ADD */ {
                   1475:   /* mask f1f8, bits d170, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */
                   1476:   int srcreg = (ipc->opcode >> 9) & 7;
                   1477:   uint16 srcdata = DATAREG(srcreg);
                   1478:   int dstreg = (ipc->opcode >> 0) & 7;
                   1479:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
                   1480:   uint16 dstdata = fetchword(dstaddr);
                   1481:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1482: 
                   1483:   storeword(dstaddr, outdata);
                   1484:   PC+= 4;
                   1485: }
                   1486: 
                   1487: void cpu_op_1444b(t_ipc *ipc) /* ADD */ {
                   1488:   /* mask f1f8, bits d170, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */
                   1489:   int srcreg = (ipc->opcode >> 9) & 7;
                   1490:   uint16 srcdata = DATAREG(srcreg);
                   1491:   int dstreg = (ipc->opcode >> 0) & 7;
                   1492:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
                   1493:   uint16 dstdata = fetchword(dstaddr);
                   1494:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1495: 
                   1496:   storeword(dstaddr, outdata);
                   1497: 
                   1498:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                   1499:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                   1500:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                   1501:   NFLAG = ((sint16)outdata) < 0;
                   1502:   ZFLAG = !outdata;
                   1503:   PC+= 4;
                   1504: }
                   1505: 
                   1506: void cpu_op_1445a(t_ipc *ipc) /* ADD */ {
                   1507:   /* mask f1ff, bits d178, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */
                   1508:   int srcreg = (ipc->opcode >> 9) & 7;
                   1509:   uint16 srcdata = DATAREG(srcreg);
                   1510:   uint32 dstaddr = ipc->dst;
                   1511:   uint16 dstdata = fetchword(dstaddr);
                   1512:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1513: 
                   1514:   storeword(dstaddr, outdata);
                   1515:   PC+= 4;
                   1516: }
                   1517: 
                   1518: void cpu_op_1445b(t_ipc *ipc) /* ADD */ {
                   1519:   /* mask f1ff, bits d178, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */
                   1520:   int srcreg = (ipc->opcode >> 9) & 7;
                   1521:   uint16 srcdata = DATAREG(srcreg);
                   1522:   uint32 dstaddr = ipc->dst;
                   1523:   uint16 dstdata = fetchword(dstaddr);
                   1524:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1525: 
                   1526:   storeword(dstaddr, outdata);
                   1527: 
                   1528:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                   1529:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                   1530:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                   1531:   NFLAG = ((sint16)outdata) < 0;
                   1532:   ZFLAG = !outdata;
                   1533:   PC+= 4;
                   1534: }
                   1535: 
                   1536: void cpu_op_1446a(t_ipc *ipc) /* ADD */ {
                   1537:   /* mask f1ff, bits d179, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */
                   1538:   int srcreg = (ipc->opcode >> 9) & 7;
                   1539:   uint16 srcdata = DATAREG(srcreg);
                   1540:   uint32 dstaddr = ipc->dst;
                   1541:   uint16 dstdata = fetchword(dstaddr);
                   1542:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1543: 
                   1544:   storeword(dstaddr, outdata);
                   1545:   PC+= 6;
                   1546: }
                   1547: 
                   1548: void cpu_op_1446b(t_ipc *ipc) /* ADD */ {
                   1549:   /* mask f1ff, bits d179, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 2, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */
                   1550:   int srcreg = (ipc->opcode >> 9) & 7;
                   1551:   uint16 srcdata = DATAREG(srcreg);
                   1552:   uint32 dstaddr = ipc->dst;
                   1553:   uint16 dstdata = fetchword(dstaddr);
                   1554:   uint16 outdata = (sint16)dstdata + (sint16)srcdata;
                   1555: 
                   1556:   storeword(dstaddr, outdata);
                   1557: 
                   1558:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                   1559:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                   1560:   XFLAG = CFLAG = srcdata > (0xFFFFu - (uint16)dstdata);
                   1561:   NFLAG = ((sint16)outdata) < 0;
                   1562:   ZFLAG = !outdata;
                   1563:   PC+= 6;
                   1564: }
                   1565: 
                   1566: void cpu_op_1447a(t_ipc *ipc) /* ADD */ {
                   1567:   /* mask f1f8, bits d190, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */
                   1568:   int srcreg = (ipc->opcode >> 9) & 7;
                   1569:   uint32 srcdata = DATAREG(srcreg);
                   1570:   int dstreg = (ipc->opcode >> 0) & 7;
                   1571:   uint32 dstaddr = ADDRREG(dstreg);
                   1572:   uint32 dstdata = fetchlong(dstaddr);
                   1573:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1574: 
                   1575:   storelong(dstaddr, outdata);
                   1576:   PC+= 2;
                   1577: }
                   1578: 
                   1579: void cpu_op_1447b(t_ipc *ipc) /* ADD */ {
                   1580:   /* mask f1f8, bits d190, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */
                   1581:   int srcreg = (ipc->opcode >> 9) & 7;
                   1582:   uint32 srcdata = DATAREG(srcreg);
                   1583:   int dstreg = (ipc->opcode >> 0) & 7;
                   1584:   uint32 dstaddr = ADDRREG(dstreg);
                   1585:   uint32 dstdata = fetchlong(dstaddr);
                   1586:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1587: 
                   1588:   storelong(dstaddr, outdata);
                   1589: 
                   1590:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                   1591:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   1592:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                   1593:   NFLAG = ((sint32)outdata) < 0;
                   1594:   ZFLAG = !outdata;
                   1595:   PC+= 2;
                   1596: }
                   1597: 
                   1598: void cpu_op_1448a(t_ipc *ipc) /* ADD */ {
                   1599:   /* mask f1f8, bits d198, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */
                   1600:   int srcreg = (ipc->opcode >> 9) & 7;
                   1601:   uint32 srcdata = DATAREG(srcreg);
                   1602:   int dstreg = (ipc->opcode >> 0) & 7;
                   1603:   uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4);
                   1604:   uint32 dstdata = fetchlong(dstaddr);
                   1605:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1606: 
                   1607:   storelong(dstaddr, outdata);
                   1608:   PC+= 2;
                   1609: }
                   1610: 
                   1611: void cpu_op_1448b(t_ipc *ipc) /* ADD */ {
                   1612:   /* mask f1f8, bits d198, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */
                   1613:   int srcreg = (ipc->opcode >> 9) & 7;
                   1614:   uint32 srcdata = DATAREG(srcreg);
                   1615:   int dstreg = (ipc->opcode >> 0) & 7;
                   1616:   uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4);
                   1617:   uint32 dstdata = fetchlong(dstaddr);
                   1618:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1619: 
                   1620:   storelong(dstaddr, outdata);
                   1621: 
                   1622:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                   1623:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   1624:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                   1625:   NFLAG = ((sint32)outdata) < 0;
                   1626:   ZFLAG = !outdata;
                   1627:   PC+= 2;
                   1628: }
                   1629: 
                   1630: void cpu_op_1449a(t_ipc *ipc) /* ADD */ {
                   1631:   /* mask f1f8, bits d1a0, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */
                   1632:   int srcreg = (ipc->opcode >> 9) & 7;
                   1633:   uint32 srcdata = DATAREG(srcreg);
                   1634:   int dstreg = (ipc->opcode >> 0) & 7;
                   1635:   uint32 dstaddr = ADDRREG(dstreg)-=4;
                   1636:   uint32 dstdata = fetchlong(dstaddr);
                   1637:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1638: 
                   1639:   storelong(dstaddr, outdata);
                   1640:   PC+= 2;
                   1641: }
                   1642: 
                   1643: void cpu_op_1449b(t_ipc *ipc) /* ADD */ {
                   1644:   /* mask f1f8, bits d1a0, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */
                   1645:   int srcreg = (ipc->opcode >> 9) & 7;
                   1646:   uint32 srcdata = DATAREG(srcreg);
                   1647:   int dstreg = (ipc->opcode >> 0) & 7;
                   1648:   uint32 dstaddr = ADDRREG(dstreg)-=4;
                   1649:   uint32 dstdata = fetchlong(dstaddr);
                   1650:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1651: 
                   1652:   storelong(dstaddr, outdata);
                   1653: 
                   1654:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                   1655:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   1656:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                   1657:   NFLAG = ((sint32)outdata) < 0;
                   1658:   ZFLAG = !outdata;
                   1659:   PC+= 2;
                   1660: }
                   1661: 
                   1662: void cpu_op_1450a(t_ipc *ipc) /* ADD */ {
                   1663:   /* mask f1f8, bits d1a8, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */
                   1664:   int srcreg = (ipc->opcode >> 9) & 7;
                   1665:   uint32 srcdata = DATAREG(srcreg);
                   1666:   int dstreg = (ipc->opcode >> 0) & 7;
                   1667:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
                   1668:   uint32 dstdata = fetchlong(dstaddr);
                   1669:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1670: 
                   1671:   storelong(dstaddr, outdata);
                   1672:   PC+= 4;
                   1673: }
                   1674: 
                   1675: void cpu_op_1450b(t_ipc *ipc) /* ADD */ {
                   1676:   /* mask f1f8, bits d1a8, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */
                   1677:   int srcreg = (ipc->opcode >> 9) & 7;
                   1678:   uint32 srcdata = DATAREG(srcreg);
                   1679:   int dstreg = (ipc->opcode >> 0) & 7;
                   1680:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
                   1681:   uint32 dstdata = fetchlong(dstaddr);
                   1682:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1683: 
                   1684:   storelong(dstaddr, outdata);
                   1685: 
                   1686:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                   1687:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   1688:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                   1689:   NFLAG = ((sint32)outdata) < 0;
                   1690:   ZFLAG = !outdata;
                   1691:   PC+= 4;
                   1692: }
                   1693: 
                   1694: void cpu_op_1451a(t_ipc *ipc) /* ADD */ {
                   1695:   /* mask f1f8, bits d1b0, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */
                   1696:   int srcreg = (ipc->opcode >> 9) & 7;
                   1697:   uint32 srcdata = DATAREG(srcreg);
                   1698:   int dstreg = (ipc->opcode >> 0) & 7;
                   1699:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
                   1700:   uint32 dstdata = fetchlong(dstaddr);
                   1701:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1702: 
                   1703:   storelong(dstaddr, outdata);
                   1704:   PC+= 4;
                   1705: }
                   1706: 
                   1707: void cpu_op_1451b(t_ipc *ipc) /* ADD */ {
                   1708:   /* mask f1f8, bits d1b0, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */
                   1709:   int srcreg = (ipc->opcode >> 9) & 7;
                   1710:   uint32 srcdata = DATAREG(srcreg);
                   1711:   int dstreg = (ipc->opcode >> 0) & 7;
                   1712:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
                   1713:   uint32 dstdata = fetchlong(dstaddr);
                   1714:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1715: 
                   1716:   storelong(dstaddr, outdata);
                   1717: 
                   1718:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                   1719:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   1720:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                   1721:   NFLAG = ((sint32)outdata) < 0;
                   1722:   ZFLAG = !outdata;
                   1723:   PC+= 4;
                   1724: }
                   1725: 
                   1726: void cpu_op_1452a(t_ipc *ipc) /* ADD */ {
                   1727:   /* mask f1ff, bits d1b8, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */
                   1728:   int srcreg = (ipc->opcode >> 9) & 7;
                   1729:   uint32 srcdata = DATAREG(srcreg);
                   1730:   uint32 dstaddr = ipc->dst;
                   1731:   uint32 dstdata = fetchlong(dstaddr);
                   1732:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1733: 
                   1734:   storelong(dstaddr, outdata);
                   1735:   PC+= 4;
                   1736: }
                   1737: 
                   1738: void cpu_op_1452b(t_ipc *ipc) /* ADD */ {
                   1739:   /* mask f1ff, bits d1b8, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */
                   1740:   int srcreg = (ipc->opcode >> 9) & 7;
                   1741:   uint32 srcdata = DATAREG(srcreg);
                   1742:   uint32 dstaddr = ipc->dst;
                   1743:   uint32 dstdata = fetchlong(dstaddr);
                   1744:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1745: 
                   1746:   storelong(dstaddr, outdata);
                   1747: 
                   1748:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                   1749:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   1750:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                   1751:   NFLAG = ((sint32)outdata) < 0;
                   1752:   ZFLAG = !outdata;
                   1753:   PC+= 4;
                   1754: }
                   1755: 
                   1756: void cpu_op_1453a(t_ipc *ipc) /* ADD */ {
                   1757:   /* mask f1ff, bits d1b9, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */
                   1758:   int srcreg = (ipc->opcode >> 9) & 7;
                   1759:   uint32 srcdata = DATAREG(srcreg);
                   1760:   uint32 dstaddr = ipc->dst;
                   1761:   uint32 dstdata = fetchlong(dstaddr);
                   1762:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1763: 
                   1764:   storelong(dstaddr, outdata);
                   1765:   PC+= 6;
                   1766: }
                   1767: 
                   1768: void cpu_op_1453b(t_ipc *ipc) /* ADD */ {
                   1769:   /* mask f1ff, bits d1b9, mnemonic 10, priv 0, endblk 0, imm_notzero 0, used 0     set -1, size 3, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */
                   1770:   int srcreg = (ipc->opcode >> 9) & 7;
                   1771:   uint32 srcdata = DATAREG(srcreg);
                   1772:   uint32 dstaddr = ipc->dst;
                   1773:   uint32 dstdata = fetchlong(dstaddr);
                   1774:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1775: 
                   1776:   storelong(dstaddr, outdata);
                   1777: 
                   1778:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                   1779:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   1780:   XFLAG = CFLAG = srcdata > (uint32)~(uint32)dstdata;
                   1781:   NFLAG = ((sint32)outdata) < 0;
                   1782:   ZFLAG = !outdata;
                   1783:   PC+= 6;
                   1784: }
                   1785: 
                   1786: void cpu_op_1454a(t_ipc *ipc) /* ADDA */ {
                   1787:   /* mask f1f8, bits d0c0, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 2, stype 0, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1788:   int srcreg = (ipc->opcode >> 0) & 7;
                   1789:   uint16 srcdata = DATAREG(srcreg);
                   1790:   int dstreg = (ipc->opcode >> 9) & 7;
                   1791:   uint32 dstdata = ADDRREG(dstreg);
                   1792:   uint32 outdata = (sint32)dstdata + (sint16)srcdata;
                   1793: 
                   1794:   ADDRREG(dstreg) = outdata;
                   1795:   PC+= 2;
                   1796: }
                   1797: 
                   1798: void cpu_op_1455a(t_ipc *ipc) /* ADDA */ {
                   1799:   /* mask f1f8, bits d0c8, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 2, stype 1, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1800:   int srcreg = (ipc->opcode >> 0) & 7;
                   1801:   uint16 srcdata = ADDRREG(srcreg);
                   1802:   int dstreg = (ipc->opcode >> 9) & 7;
                   1803:   uint32 dstdata = ADDRREG(dstreg);
                   1804:   uint32 outdata = (sint32)dstdata + (sint16)srcdata;
                   1805: 
                   1806:   ADDRREG(dstreg) = outdata;
                   1807:   PC+= 2;
                   1808: }
                   1809: 
                   1810: void cpu_op_1456a(t_ipc *ipc) /* ADDA */ {
                   1811:   /* mask f1f8, bits d0d0, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 2, stype 2, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1812:   int srcreg = (ipc->opcode >> 0) & 7;
                   1813:   uint32 srcaddr = ADDRREG(srcreg);
                   1814:   uint16 srcdata = fetchword(srcaddr);
                   1815:   int dstreg = (ipc->opcode >> 9) & 7;
                   1816:   uint32 dstdata = ADDRREG(dstreg);
                   1817:   uint32 outdata = (sint32)dstdata + (sint16)srcdata;
                   1818: 
                   1819:   ADDRREG(dstreg) = outdata;
                   1820:   PC+= 2;
                   1821: }
                   1822: 
                   1823: void cpu_op_1457a(t_ipc *ipc) /* ADDA */ {
                   1824:   /* mask f1f8, bits d0d8, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 2, stype 3, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1825:   int srcreg = (ipc->opcode >> 0) & 7;
                   1826:   uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
                   1827:   uint16 srcdata = fetchword(srcaddr);
                   1828:   int dstreg = (ipc->opcode >> 9) & 7;
                   1829:   uint32 dstdata = ADDRREG(dstreg);
                   1830:   uint32 outdata = (sint32)dstdata + (sint16)srcdata;
                   1831: 
                   1832:   ADDRREG(dstreg) = outdata;
                   1833:   PC+= 2;
                   1834: }
                   1835: 
                   1836: void cpu_op_1458a(t_ipc *ipc) /* ADDA */ {
                   1837:   /* mask f1f8, bits d0e0, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 2, stype 4, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1838:   int srcreg = (ipc->opcode >> 0) & 7;
                   1839:   uint32 srcaddr = ADDRREG(srcreg)-=2;
                   1840:   uint16 srcdata = fetchword(srcaddr);
                   1841:   int dstreg = (ipc->opcode >> 9) & 7;
                   1842:   uint32 dstdata = ADDRREG(dstreg);
                   1843:   uint32 outdata = (sint32)dstdata + (sint16)srcdata;
                   1844: 
                   1845:   ADDRREG(dstreg) = outdata;
                   1846:   PC+= 2;
                   1847: }
                   1848: 
                   1849: void cpu_op_1459a(t_ipc *ipc) /* ADDA */ {
                   1850:   /* mask f1f8, bits d0e8, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 2, stype 5, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1851:   int srcreg = (ipc->opcode >> 0) & 7;
                   1852:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                   1853:   uint16 srcdata = fetchword(srcaddr);
                   1854:   int dstreg = (ipc->opcode >> 9) & 7;
                   1855:   uint32 dstdata = ADDRREG(dstreg);
                   1856:   uint32 outdata = (sint32)dstdata + (sint16)srcdata;
                   1857: 
                   1858:   ADDRREG(dstreg) = outdata;
                   1859:   PC+= 4;
                   1860: }
                   1861: 
                   1862: void cpu_op_1460a(t_ipc *ipc) /* ADDA */ {
                   1863:   /* mask f1f8, bits d0f0, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 2, stype 6, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1864:   int srcreg = (ipc->opcode >> 0) & 7;
                   1865:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                   1866:   uint16 srcdata = fetchword(srcaddr);
                   1867:   int dstreg = (ipc->opcode >> 9) & 7;
                   1868:   uint32 dstdata = ADDRREG(dstreg);
                   1869:   uint32 outdata = (sint32)dstdata + (sint16)srcdata;
                   1870: 
                   1871:   ADDRREG(dstreg) = outdata;
                   1872:   PC+= 4;
                   1873: }
                   1874: 
                   1875: void cpu_op_1461a(t_ipc *ipc) /* ADDA */ {
                   1876:   /* mask f1ff, bits d0f8, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 2, stype 7, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1877:   uint32 srcaddr = ipc->src;
                   1878:   uint16 srcdata = fetchword(srcaddr);
                   1879:   int dstreg = (ipc->opcode >> 9) & 7;
                   1880:   uint32 dstdata = ADDRREG(dstreg);
                   1881:   uint32 outdata = (sint32)dstdata + (sint16)srcdata;
                   1882: 
                   1883:   ADDRREG(dstreg) = outdata;
                   1884:   PC+= 4;
                   1885: }
                   1886: 
                   1887: void cpu_op_1462a(t_ipc *ipc) /* ADDA */ {
                   1888:   /* mask f1ff, bits d0f9, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 2, stype 8, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1889:   uint32 srcaddr = ipc->src;
                   1890:   uint16 srcdata = fetchword(srcaddr);
                   1891:   int dstreg = (ipc->opcode >> 9) & 7;
                   1892:   uint32 dstdata = ADDRREG(dstreg);
                   1893:   uint32 outdata = (sint32)dstdata + (sint16)srcdata;
                   1894: 
                   1895:   ADDRREG(dstreg) = outdata;
                   1896:   PC+= 6;
                   1897: }
                   1898: 
                   1899: void cpu_op_1463a(t_ipc *ipc) /* ADDA */ {
                   1900:   /* mask f1ff, bits d0fa, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 2, stype 9, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1901:   uint32 srcaddr = ipc->src;
                   1902:   uint16 srcdata = fetchword(srcaddr);
                   1903:   int dstreg = (ipc->opcode >> 9) & 7;
                   1904:   uint32 dstdata = ADDRREG(dstreg);
                   1905:   uint32 outdata = (sint32)dstdata + (sint16)srcdata;
                   1906: 
                   1907:   ADDRREG(dstreg) = outdata;
                   1908:   PC+= 4;
                   1909: }
                   1910: 
                   1911: void cpu_op_1464a(t_ipc *ipc) /* ADDA */ {
                   1912:   /* mask f1ff, bits d0fb, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 2, stype 10, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1913:   uint32 srcaddr = idxval_src(ipc);
                   1914:   uint16 srcdata = fetchword(srcaddr);
                   1915:   int dstreg = (ipc->opcode >> 9) & 7;
                   1916:   uint32 dstdata = ADDRREG(dstreg);
                   1917:   uint32 outdata = (sint32)dstdata + (sint16)srcdata;
                   1918: 
                   1919:   ADDRREG(dstreg) = outdata;
                   1920:   PC+= 4;
                   1921: }
                   1922: 
                   1923: void cpu_op_1465a(t_ipc *ipc) /* ADDA */ {
                   1924:   /* mask f1ff, bits d0fc, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 2, stype 12, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1925:   uint16 srcdata = ipc->src;
                   1926:   int dstreg = (ipc->opcode >> 9) & 7;
                   1927:   uint32 dstdata = ADDRREG(dstreg);
                   1928:   uint32 outdata = (sint32)dstdata + (sint16)srcdata;
                   1929: 
                   1930:   ADDRREG(dstreg) = outdata;
                   1931:   PC+= 4;
                   1932: }
                   1933: 
                   1934: void cpu_op_1466a(t_ipc *ipc) /* ADDA */ {
                   1935:   /* mask f1f8, bits d1c0, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 3, stype 0, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1936:   int srcreg = (ipc->opcode >> 0) & 7;
                   1937:   uint32 srcdata = DATAREG(srcreg);
                   1938:   int dstreg = (ipc->opcode >> 9) & 7;
                   1939:   uint32 dstdata = ADDRREG(dstreg);
                   1940:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1941: 
                   1942:   ADDRREG(dstreg) = outdata;
                   1943:   PC+= 2;
                   1944: }
                   1945: 
                   1946: void cpu_op_1467a(t_ipc *ipc) /* ADDA */ {
                   1947:   /* mask f1f8, bits d1c8, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 3, stype 1, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1948:   int srcreg = (ipc->opcode >> 0) & 7;
                   1949:   uint32 srcdata = ADDRREG(srcreg);
                   1950:   int dstreg = (ipc->opcode >> 9) & 7;
                   1951:   uint32 dstdata = ADDRREG(dstreg);
                   1952:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1953: 
                   1954:   ADDRREG(dstreg) = outdata;
                   1955:   PC+= 2;
                   1956: }
                   1957: 
                   1958: void cpu_op_1468a(t_ipc *ipc) /* ADDA */ {
                   1959:   /* mask f1f8, bits d1d0, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 3, stype 2, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1960:   int srcreg = (ipc->opcode >> 0) & 7;
                   1961:   uint32 srcaddr = ADDRREG(srcreg);
                   1962:   uint32 srcdata = fetchlong(srcaddr);
                   1963:   int dstreg = (ipc->opcode >> 9) & 7;
                   1964:   uint32 dstdata = ADDRREG(dstreg);
                   1965:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1966: 
                   1967:   ADDRREG(dstreg) = outdata;
                   1968:   PC+= 2;
                   1969: }
                   1970: 
                   1971: void cpu_op_1469a(t_ipc *ipc) /* ADDA */ {
                   1972:   /* mask f1f8, bits d1d8, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 3, stype 3, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1973:   int srcreg = (ipc->opcode >> 0) & 7;
                   1974:   uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4);
                   1975:   uint32 srcdata = fetchlong(srcaddr);
                   1976:   int dstreg = (ipc->opcode >> 9) & 7;
                   1977:   uint32 dstdata = ADDRREG(dstreg);
                   1978:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1979: 
                   1980:   ADDRREG(dstreg) = outdata;
                   1981:   PC+= 2;
                   1982: }
                   1983: 
                   1984: void cpu_op_1470a(t_ipc *ipc) /* ADDA */ {
                   1985:   /* mask f1f8, bits d1e0, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 3, stype 4, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1986:   int srcreg = (ipc->opcode >> 0) & 7;
                   1987:   uint32 srcaddr = ADDRREG(srcreg)-=4;
                   1988:   uint32 srcdata = fetchlong(srcaddr);
                   1989:   int dstreg = (ipc->opcode >> 9) & 7;
                   1990:   uint32 dstdata = ADDRREG(dstreg);
                   1991:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   1992: 
                   1993:   ADDRREG(dstreg) = outdata;
                   1994:   PC+= 2;
                   1995: }
                   1996: 
                   1997: void cpu_op_1471a(t_ipc *ipc) /* ADDA */ {
                   1998:   /* mask f1f8, bits d1e8, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 3, stype 5, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   1999:   int srcreg = (ipc->opcode >> 0) & 7;
                   2000:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                   2001:   uint32 srcdata = fetchlong(srcaddr);
                   2002:   int dstreg = (ipc->opcode >> 9) & 7;
                   2003:   uint32 dstdata = ADDRREG(dstreg);
                   2004:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   2005: 
                   2006:   ADDRREG(dstreg) = outdata;
                   2007:   PC+= 4;
                   2008: }
                   2009: 
                   2010: void cpu_op_1472a(t_ipc *ipc) /* ADDA */ {
                   2011:   /* mask f1f8, bits d1f0, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 3, stype 6, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   2012:   int srcreg = (ipc->opcode >> 0) & 7;
                   2013:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                   2014:   uint32 srcdata = fetchlong(srcaddr);
                   2015:   int dstreg = (ipc->opcode >> 9) & 7;
                   2016:   uint32 dstdata = ADDRREG(dstreg);
                   2017:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   2018: 
                   2019:   ADDRREG(dstreg) = outdata;
                   2020:   PC+= 4;
                   2021: }
                   2022: 
                   2023: void cpu_op_1473a(t_ipc *ipc) /* ADDA */ {
                   2024:   /* mask f1ff, bits d1f8, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 3, stype 7, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   2025:   uint32 srcaddr = ipc->src;
                   2026:   uint32 srcdata = fetchlong(srcaddr);
                   2027:   int dstreg = (ipc->opcode >> 9) & 7;
                   2028:   uint32 dstdata = ADDRREG(dstreg);
                   2029:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   2030: 
                   2031:   ADDRREG(dstreg) = outdata;
                   2032:   PC+= 4;
                   2033: }
                   2034: 
                   2035: void cpu_op_1474a(t_ipc *ipc) /* ADDA */ {
                   2036:   /* mask f1ff, bits d1f9, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 3, stype 8, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   2037:   uint32 srcaddr = ipc->src;
                   2038:   uint32 srcdata = fetchlong(srcaddr);
                   2039:   int dstreg = (ipc->opcode >> 9) & 7;
                   2040:   uint32 dstdata = ADDRREG(dstreg);
                   2041:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   2042: 
                   2043:   ADDRREG(dstreg) = outdata;
                   2044:   PC+= 6;
                   2045: }
                   2046: 
                   2047: void cpu_op_1475a(t_ipc *ipc) /* ADDA */ {
                   2048:   /* mask f1ff, bits d1fa, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 3, stype 9, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   2049:   uint32 srcaddr = ipc->src;
                   2050:   uint32 srcdata = fetchlong(srcaddr);
                   2051:   int dstreg = (ipc->opcode >> 9) & 7;
                   2052:   uint32 dstdata = ADDRREG(dstreg);
                   2053:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   2054: 
                   2055:   ADDRREG(dstreg) = outdata;
                   2056:   PC+= 4;
                   2057: }
                   2058: 
                   2059: void cpu_op_1476a(t_ipc *ipc) /* ADDA */ {
                   2060:   /* mask f1ff, bits d1fb, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 3, stype 10, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   2061:   uint32 srcaddr = idxval_src(ipc);
                   2062:   uint32 srcdata = fetchlong(srcaddr);
                   2063:   int dstreg = (ipc->opcode >> 9) & 7;
                   2064:   uint32 dstdata = ADDRREG(dstreg);
                   2065:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   2066: 
                   2067:   ADDRREG(dstreg) = outdata;
                   2068:   PC+= 4;
                   2069: }
                   2070: 
                   2071: void cpu_op_1477a(t_ipc *ipc) /* ADDA */ {
                   2072:   /* mask f1ff, bits d1fc, mnemonic 11, priv 0, endblk 0, imm_notzero 0, used 0     set 0, size 3, stype 13, dtype 1, sbitpos 0, dbitpos 9, immvalue 0 */
                   2073:   uint32 srcdata = ipc->src;
                   2074:   int dstreg = (ipc->opcode >> 9) & 7;
                   2075:   uint32 dstdata = ADDRREG(dstreg);
                   2076:   uint32 outdata = (sint32)dstdata + (sint32)srcdata;
                   2077: 
                   2078:   ADDRREG(dstreg) = outdata;
                   2079:   PC+= 6;
                   2080: }
                   2081: 
                   2082: void cpu_op_1478a(t_ipc *ipc) /* ADDX */ {
                   2083:   /* mask f1f8, bits d100, mnemonic 12, priv 0, endblk 0, imm_notzero 0, used 5     set -1, size 1, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2084:   int srcreg = (ipc->opcode >> 0) & 7;
                   2085:   uint8 srcdata = DATAREG(srcreg);
                   2086:   int dstreg = (ipc->opcode >> 9) & 7;
                   2087:   uint8 dstdata = DATAREG(dstreg);
                   2088:   uint8 outdata = (sint8)dstdata + (sint8)srcdata + XFLAG;
                   2089: 
                   2090:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                   2091:   PC+= 2;
                   2092: }
                   2093: 
                   2094: void cpu_op_1478b(t_ipc *ipc) /* ADDX */ {
                   2095:   /* mask f1f8, bits d100, mnemonic 12, priv 0, endblk 0, imm_notzero 0, used 5     set -1, size 1, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2096:   int srcreg = (ipc->opcode >> 0) & 7;
                   2097:   uint8 srcdata = DATAREG(srcreg);
                   2098:   int dstreg = (ipc->opcode >> 9) & 7;
                   2099:   uint8 dstdata = DATAREG(dstreg);
                   2100:   uint8 outdata = (sint8)dstdata + (sint8)srcdata + XFLAG;
                   2101: 
                   2102:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                   2103: 
                   2104:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                   2105:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                   2106:   {
                   2107:     int Sm = (sint8)srcdata < 0;
                   2108:     int Dm = (sint8)dstdata < 0;
                   2109:     int Rm = (sint8)outdata < 0;
                   2110:     XFLAG = CFLAG = (Sm && Dm) || (!Rm && (Dm || Sm));
                   2111:   }
                   2112:   NFLAG = ((sint8)outdata) < 0;
                   2113:   if (outdata) ZFLAG = 0;
                   2114:   PC+= 2;
                   2115: }
                   2116: 
                   2117: void cpu_op_1479a(t_ipc *ipc) /* ADDX */ {
                   2118:   /* mask f1f8, bits d140, mnemonic 12, priv 0, endblk 0, imm_notzero 0, used 5     set -1, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2119:   int srcreg = (ipc->opcode >> 0) & 7;
                   2120:   uint16 srcdata = DATAREG(srcreg);
                   2121:   int dstreg = (ipc->opcode >> 9) & 7;
                   2122:   uint16 dstdata = DATAREG(dstreg);
                   2123:   uint16 outdata = (sint16)dstdata + (sint16)srcdata+ XFLAG;
                   2124: 
                   2125:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                   2126:   PC+= 2;
                   2127: }
                   2128: 
                   2129: void cpu_op_1479b(t_ipc *ipc) /* ADDX */ {
                   2130:   /* mask f1f8, bits d140, mnemonic 12, priv 0, endblk 0, imm_notzero 0, used 5     set -1, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2131:   int srcreg = (ipc->opcode >> 0) & 7;
                   2132:   uint16 srcdata = DATAREG(srcreg);
                   2133:   int dstreg = (ipc->opcode >> 9) & 7;
                   2134:   uint16 dstdata = DATAREG(dstreg);
                   2135:   uint16 outdata = (sint16)dstdata + (sint16)srcdata+ XFLAG;
                   2136: 
                   2137:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                   2138: 
                   2139:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                   2140:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                   2141:   {
                   2142:     int Sm = (sint16)srcdata < 0;
                   2143:     int Dm = (sint16)dstdata < 0;
                   2144:     int Rm = (sint16)outdata < 0;
                   2145:     XFLAG = CFLAG = (Sm && Dm) || (!Rm && (Dm || Sm));
                   2146:   }
                   2147:   NFLAG = ((sint16)outdata) < 0;
                   2148:   if (outdata) ZFLAG = 0;
                   2149:   PC+= 2;
                   2150: }
                   2151: 
                   2152: void cpu_op_1480a(t_ipc *ipc) /* ADDX */ {
                   2153:   /* mask f1f8, bits d180, mnemonic 12, priv 0, endblk 0, imm_notzero 0, used 5     set -1, size 3, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2154:   int srcreg = (ipc->opcode >> 0) & 7;
                   2155:   uint32 srcdata = DATAREG(srcreg);
                   2156:   int dstreg = (ipc->opcode >> 9) & 7;
                   2157:   uint32 dstdata = DATAREG(dstreg);
                   2158:   uint32 outdata = (sint32)dstdata + (sint32)srcdata+ XFLAG;
                   2159: 
                   2160:   DATAREG(dstreg) = outdata;
                   2161:   PC+= 2;
                   2162: }
                   2163: 
                   2164: void cpu_op_1480b(t_ipc *ipc) /* ADDX */ {
                   2165:   /* mask f1f8, bits d180, mnemonic 12, priv 0, endblk 0, imm_notzero 0, used 5     set -1, size 3, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2166:   int srcreg = (ipc->opcode >> 0) & 7;
                   2167:   uint32 srcdata = DATAREG(srcreg);
                   2168:   int dstreg = (ipc->opcode >> 9) & 7;
                   2169:   uint32 dstdata = DATAREG(dstreg);
                   2170:   uint32 outdata = (sint32)dstdata + (sint32)srcdata+ XFLAG;
                   2171: 
                   2172:   DATAREG(dstreg) = outdata;
                   2173: 
                   2174:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                   2175:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   2176:   {
                   2177:     int Sm = (sint32)srcdata < 0;
                   2178:     int Dm = (sint32)dstdata < 0;
                   2179:     int Rm = (sint32)outdata < 0;
                   2180:     XFLAG = CFLAG = (Sm && Dm) || (!Rm && (Dm || Sm));
                   2181:   }
                   2182:   NFLAG = ((sint32)outdata) < 0;
                   2183:   if (outdata) ZFLAG = 0;
                   2184:   PC+= 2;
                   2185: }
                   2186: 
                   2187: void cpu_op_1481a(t_ipc *ipc) /* ADDX */ {
                   2188:   /* mask f1f8, bits d108, mnemonic 12, priv 0, endblk 0, imm_notzero 0, used 5     set -1, size 1, stype 4, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
                   2189:   int srcreg = (ipc->opcode >> 0) & 7;
                   2190:   uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1));
                   2191:   uint8 srcdata = fetchbyte(srcaddr);
                   2192:   int dstreg = (ipc->opcode >> 9) & 7;
                   2193:   uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1));
                   2194:   uint8 dstdata = fetchbyte(dstaddr);
                   2195:   uint8 outdata = (sint8)dstdata + (sint8)srcdata + XFLAG;
                   2196: 
                   2197:   storebyte(dstaddr, outdata);
                   2198:   PC+= 2;
                   2199: }
                   2200: 
                   2201: void cpu_op_1481b(t_ipc *ipc) /* ADDX */ {
                   2202:   /* mask f1f8, bits d108, mnemonic 12, priv 0, endblk 0, imm_notzero 0, used 5     set -1, size 1, stype 4, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
                   2203:   int srcreg = (ipc->opcode >> 0) & 7;
                   2204:   uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1));
                   2205:   uint8 srcdata = fetchbyte(srcaddr);
                   2206:   int dstreg = (ipc->opcode >> 9) & 7;
                   2207:   uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1));
                   2208:   uint8 dstdata = fetchbyte(dstaddr);
                   2209:   uint8 outdata = (sint8)dstdata + (sint8)srcdata + XFLAG;
                   2210: 
                   2211:   storebyte(dstaddr, outdata);
                   2212: 
                   2213:   VFLAG = (((sint8)srcdata < 0) == ((sint8)dstdata < 0)) &&
                   2214:     (((sint8)dstdata < 0) != ((sint8)outdata < 0));
                   2215:   {
                   2216:     int Sm = (sint8)srcdata < 0;
                   2217:     int Dm = (sint8)dstdata < 0;
                   2218:     int Rm = (sint8)outdata < 0;
                   2219:     XFLAG = CFLAG = (Sm && Dm) || (!Rm && (Dm || Sm));
                   2220:   }
                   2221:   NFLAG = ((sint8)outdata) < 0;
                   2222:   if (outdata) ZFLAG = 0;
                   2223:   PC+= 2;
                   2224: }
                   2225: 
                   2226: void cpu_op_1482a(t_ipc *ipc) /* ADDX */ {
                   2227:   /* mask f1f8, bits d148, mnemonic 12, priv 0, endblk 0, imm_notzero 0, used 5     set -1, size 2, stype 4, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
                   2228:   int srcreg = (ipc->opcode >> 0) & 7;
                   2229:   uint32 srcaddr = ADDRREG(srcreg)-=2;
                   2230:   uint16 srcdata = fetchword(srcaddr);
                   2231:   int dstreg = (ipc->opcode >> 9) & 7;
                   2232:   uint32 dstaddr = ADDRREG(dstreg)-=2;
                   2233:   uint16 dstdata = fetchword(dstaddr);
                   2234:   uint16 outdata = (sint16)dstdata + (sint16)srcdata+ XFLAG;
                   2235: 
                   2236:   storeword(dstaddr, outdata);
                   2237:   PC+= 2;
                   2238: }
                   2239: 
                   2240: void cpu_op_1482b(t_ipc *ipc) /* ADDX */ {
                   2241:   /* mask f1f8, bits d148, mnemonic 12, priv 0, endblk 0, imm_notzero 0, used 5     set -1, size 2, stype 4, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
                   2242:   int srcreg = (ipc->opcode >> 0) & 7;
                   2243:   uint32 srcaddr = ADDRREG(srcreg)-=2;
                   2244:   uint16 srcdata = fetchword(srcaddr);
                   2245:   int dstreg = (ipc->opcode >> 9) & 7;
                   2246:   uint32 dstaddr = ADDRREG(dstreg)-=2;
                   2247:   uint16 dstdata = fetchword(dstaddr);
                   2248:   uint16 outdata = (sint16)dstdata + (sint16)srcdata+ XFLAG;
                   2249: 
                   2250:   storeword(dstaddr, outdata);
                   2251: 
                   2252:   VFLAG = (((sint16)srcdata < 0) == ((sint16)dstdata < 0)) &&
                   2253:     (((sint16)dstdata < 0) != ((sint16)outdata < 0));
                   2254:   {
                   2255:     int Sm = (sint16)srcdata < 0;
                   2256:     int Dm = (sint16)dstdata < 0;
                   2257:     int Rm = (sint16)outdata < 0;
                   2258:     XFLAG = CFLAG = (Sm && Dm) || (!Rm && (Dm || Sm));
                   2259:   }
                   2260:   NFLAG = ((sint16)outdata) < 0;
                   2261:   if (outdata) ZFLAG = 0;
                   2262:   PC+= 2;
                   2263: }
                   2264: 
                   2265: void cpu_op_1483a(t_ipc *ipc) /* ADDX */ {
                   2266:   /* mask f1f8, bits d188, mnemonic 12, priv 0, endblk 0, imm_notzero 0, used 5     set -1, size 3, stype 4, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
                   2267:   int srcreg = (ipc->opcode >> 0) & 7;
                   2268:   uint32 srcaddr = ADDRREG(srcreg)-=4;
                   2269:   uint32 srcdata = fetchlong(srcaddr);
                   2270:   int dstreg = (ipc->opcode >> 9) & 7;
                   2271:   uint32 dstaddr = ADDRREG(dstreg)-=4;
                   2272:   uint32 dstdata = fetchlong(dstaddr);
                   2273:   uint32 outdata = (sint32)dstdata + (sint32)srcdata+ XFLAG;
                   2274: 
                   2275:   storelong(dstaddr, outdata);
                   2276:   PC+= 2;
                   2277: }
                   2278: 
                   2279: void cpu_op_1483b(t_ipc *ipc) /* ADDX */ {
                   2280:   /* mask f1f8, bits d188, mnemonic 12, priv 0, endblk 0, imm_notzero 0, used 5     set -1, size 3, stype 4, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
                   2281:   int srcreg = (ipc->opcode >> 0) & 7;
                   2282:   uint32 srcaddr = ADDRREG(srcreg)-=4;
                   2283:   uint32 srcdata = fetchlong(srcaddr);
                   2284:   int dstreg = (ipc->opcode >> 9) & 7;
                   2285:   uint32 dstaddr = ADDRREG(dstreg)-=4;
                   2286:   uint32 dstdata = fetchlong(dstaddr);
                   2287:   uint32 outdata = (sint32)dstdata + (sint32)srcdata+ XFLAG;
                   2288: 
                   2289:   storelong(dstaddr, outdata);
                   2290: 
                   2291:   VFLAG = (((sint32)srcdata < 0) == ((sint32)dstdata < 0)) &&
                   2292:     (((sint32)dstdata < 0) != ((sint32)outdata < 0));
                   2293:   {
                   2294:     int Sm = (sint32)srcdata < 0;
                   2295:     int Dm = (sint32)dstdata < 0;
                   2296:     int Rm = (sint32)outdata < 0;
                   2297:     XFLAG = CFLAG = (Sm && Dm) || (!Rm && (Dm || Sm));
                   2298:   }
                   2299:   NFLAG = ((sint32)outdata) < 0;
                   2300:   if (outdata) ZFLAG = 0;
                   2301:   PC+= 2;
                   2302: }
                   2303: 

unix.superglobalmegacorp.com

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