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

1.1       root        1: /*****************************************************************************/
                      2: /*     Generator - Sega Genesis emulation - (c) James Ponder 1997-1998       */
                      3: /*****************************************************************************/
                      4: /*                                                                           */
                      5: /* cpu68k-8.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_1064a(t_ipc *ipc) /* OR */ {
                     19:   /* mask f1f8, bits 8000, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, 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 = dstdata;
                     25: 
                     26:   outdata|= srcdata;
                     27:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                     28:   PC+= 2;
                     29: }
                     30: 
                     31: void cpu_op_1064b(t_ipc *ipc) /* OR */ {
                     32:   /* mask f1f8, bits 8000, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                     33:   int srcreg = (ipc->opcode >> 0) & 7;
                     34:   uint8 srcdata = DATAREG(srcreg);
                     35:   int dstreg = (ipc->opcode >> 9) & 7;
                     36:   uint8 dstdata = DATAREG(dstreg);
                     37:   uint8 outdata = dstdata;
                     38: 
                     39:   outdata|= srcdata;
                     40:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                     41: 
                     42:   NFLAG = ((sint8)outdata) < 0;
                     43:   ZFLAG = !outdata;
                     44:   VFLAG = 0;
                     45:   CFLAG = 0;
                     46:   PC+= 2;
                     47: }
                     48: 
                     49: void cpu_op_1065a(t_ipc *ipc) /* OR */ {
                     50:   /* mask f1f8, bits 8010, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                     51:   int srcreg = (ipc->opcode >> 0) & 7;
                     52:   uint32 srcaddr = ADDRREG(srcreg);
                     53:   uint8 srcdata = fetchbyte(srcaddr);
                     54:   int dstreg = (ipc->opcode >> 9) & 7;
                     55:   uint8 dstdata = DATAREG(dstreg);
                     56:   uint8 outdata = dstdata;
                     57: 
                     58:   outdata|= srcdata;
                     59:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                     60:   PC+= 2;
                     61: }
                     62: 
                     63: void cpu_op_1065b(t_ipc *ipc) /* OR */ {
                     64:   /* mask f1f8, bits 8010, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                     65:   int srcreg = (ipc->opcode >> 0) & 7;
                     66:   uint32 srcaddr = ADDRREG(srcreg);
                     67:   uint8 srcdata = fetchbyte(srcaddr);
                     68:   int dstreg = (ipc->opcode >> 9) & 7;
                     69:   uint8 dstdata = DATAREG(dstreg);
                     70:   uint8 outdata = dstdata;
                     71: 
                     72:   outdata|= srcdata;
                     73:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                     74: 
                     75:   NFLAG = ((sint8)outdata) < 0;
                     76:   ZFLAG = !outdata;
                     77:   VFLAG = 0;
                     78:   CFLAG = 0;
                     79:   PC+= 2;
                     80: }
                     81: 
                     82: void cpu_op_1066a(t_ipc *ipc) /* OR */ {
                     83:   /* mask f1f8, bits 8018, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                     84:   int srcreg = (ipc->opcode >> 0) & 7;
                     85:   uint32 srcaddr = ADDRREG(srcreg);
                     86:   uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0);
                     87:   uint8 srcdata = fetchbyte(srcaddr);
                     88:   int dstreg = (ipc->opcode >> 9) & 7;
                     89:   uint8 dstdata = DATAREG(dstreg);
                     90:   uint8 outdata = dstdata;
                     91: 
                     92:   outdata|= srcdata;
                     93:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                     94:   PC+= 2;
                     95: }
                     96: 
                     97: void cpu_op_1066b(t_ipc *ipc) /* OR */ {
                     98:   /* mask f1f8, bits 8018, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                     99:   int srcreg = (ipc->opcode >> 0) & 7;
                    100:   uint32 srcaddr = ADDRREG(srcreg);
                    101:   uint32 srcaddr_tmp = (ADDRREG(srcreg)+= (srcreg == 7 ? 2 : 1), 0);
                    102:   uint8 srcdata = fetchbyte(srcaddr);
                    103:   int dstreg = (ipc->opcode >> 9) & 7;
                    104:   uint8 dstdata = DATAREG(dstreg);
                    105:   uint8 outdata = dstdata;
                    106: 
                    107:   outdata|= srcdata;
                    108:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    109: 
                    110:   NFLAG = ((sint8)outdata) < 0;
                    111:   ZFLAG = !outdata;
                    112:   VFLAG = 0;
                    113:   CFLAG = 0;
                    114:   PC+= 2;
                    115: }
                    116: 
                    117: void cpu_op_1067a(t_ipc *ipc) /* OR */ {
                    118:   /* mask f1f8, bits 8020, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    119:   int srcreg = (ipc->opcode >> 0) & 7;
                    120:   uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1));
                    121:   uint8 srcdata = fetchbyte(srcaddr);
                    122:   int dstreg = (ipc->opcode >> 9) & 7;
                    123:   uint8 dstdata = DATAREG(dstreg);
                    124:   uint8 outdata = dstdata;
                    125: 
                    126:   outdata|= srcdata;
                    127:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    128:   PC+= 2;
                    129: }
                    130: 
                    131: void cpu_op_1067b(t_ipc *ipc) /* OR */ {
                    132:   /* mask f1f8, bits 8020, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    133:   int srcreg = (ipc->opcode >> 0) & 7;
                    134:   uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1));
                    135:   uint8 srcdata = fetchbyte(srcaddr);
                    136:   int dstreg = (ipc->opcode >> 9) & 7;
                    137:   uint8 dstdata = DATAREG(dstreg);
                    138:   uint8 outdata = dstdata;
                    139: 
                    140:   outdata|= srcdata;
                    141:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    142: 
                    143:   NFLAG = ((sint8)outdata) < 0;
                    144:   ZFLAG = !outdata;
                    145:   VFLAG = 0;
                    146:   CFLAG = 0;
                    147:   PC+= 2;
                    148: }
                    149: 
                    150: void cpu_op_1068a(t_ipc *ipc) /* OR */ {
                    151:   /* mask f1f8, bits 8028, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    152:   int srcreg = (ipc->opcode >> 0) & 7;
                    153:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                    154:   uint8 srcdata = fetchbyte(srcaddr);
                    155:   int dstreg = (ipc->opcode >> 9) & 7;
                    156:   uint8 dstdata = DATAREG(dstreg);
                    157:   uint8 outdata = dstdata;
                    158: 
                    159:   outdata|= srcdata;
                    160:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    161:   PC+= 4;
                    162: }
                    163: 
                    164: void cpu_op_1068b(t_ipc *ipc) /* OR */ {
                    165:   /* mask f1f8, bits 8028, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    166:   int srcreg = (ipc->opcode >> 0) & 7;
                    167:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                    168:   uint8 srcdata = fetchbyte(srcaddr);
                    169:   int dstreg = (ipc->opcode >> 9) & 7;
                    170:   uint8 dstdata = DATAREG(dstreg);
                    171:   uint8 outdata = dstdata;
                    172: 
                    173:   outdata|= srcdata;
                    174:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    175: 
                    176:   NFLAG = ((sint8)outdata) < 0;
                    177:   ZFLAG = !outdata;
                    178:   VFLAG = 0;
                    179:   CFLAG = 0;
                    180:   PC+= 4;
                    181: }
                    182: 
                    183: void cpu_op_1069a(t_ipc *ipc) /* OR */ {
                    184:   /* mask f1f8, bits 8030, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    185:   int srcreg = (ipc->opcode >> 0) & 7;
                    186:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                    187:   uint8 srcdata = fetchbyte(srcaddr);
                    188:   int dstreg = (ipc->opcode >> 9) & 7;
                    189:   uint8 dstdata = DATAREG(dstreg);
                    190:   uint8 outdata = dstdata;
                    191: 
                    192:   outdata|= srcdata;
                    193:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    194:   PC+= 4;
                    195: }
                    196: 
                    197: void cpu_op_1069b(t_ipc *ipc) /* OR */ {
                    198:   /* mask f1f8, bits 8030, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    199:   int srcreg = (ipc->opcode >> 0) & 7;
                    200:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                    201:   uint8 srcdata = fetchbyte(srcaddr);
                    202:   int dstreg = (ipc->opcode >> 9) & 7;
                    203:   uint8 dstdata = DATAREG(dstreg);
                    204:   uint8 outdata = dstdata;
                    205: 
                    206:   outdata|= srcdata;
                    207:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    208: 
                    209:   NFLAG = ((sint8)outdata) < 0;
                    210:   ZFLAG = !outdata;
                    211:   VFLAG = 0;
                    212:   CFLAG = 0;
                    213:   PC+= 4;
                    214: }
                    215: 
                    216: void cpu_op_1070a(t_ipc *ipc) /* OR */ {
                    217:   /* mask f1ff, bits 8038, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    218:   uint32 srcaddr = ipc->src;
                    219:   uint8 srcdata = fetchbyte(srcaddr);
                    220:   int dstreg = (ipc->opcode >> 9) & 7;
                    221:   uint8 dstdata = DATAREG(dstreg);
                    222:   uint8 outdata = dstdata;
                    223: 
                    224:   outdata|= srcdata;
                    225:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    226:   PC+= 4;
                    227: }
                    228: 
                    229: void cpu_op_1070b(t_ipc *ipc) /* OR */ {
                    230:   /* mask f1ff, bits 8038, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    231:   uint32 srcaddr = ipc->src;
                    232:   uint8 srcdata = fetchbyte(srcaddr);
                    233:   int dstreg = (ipc->opcode >> 9) & 7;
                    234:   uint8 dstdata = DATAREG(dstreg);
                    235:   uint8 outdata = dstdata;
                    236: 
                    237:   outdata|= srcdata;
                    238:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    239: 
                    240:   NFLAG = ((sint8)outdata) < 0;
                    241:   ZFLAG = !outdata;
                    242:   VFLAG = 0;
                    243:   CFLAG = 0;
                    244:   PC+= 4;
                    245: }
                    246: 
                    247: void cpu_op_1071a(t_ipc *ipc) /* OR */ {
                    248:   /* mask f1ff, bits 8039, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    249:   uint32 srcaddr = ipc->src;
                    250:   uint8 srcdata = fetchbyte(srcaddr);
                    251:   int dstreg = (ipc->opcode >> 9) & 7;
                    252:   uint8 dstdata = DATAREG(dstreg);
                    253:   uint8 outdata = dstdata;
                    254: 
                    255:   outdata|= srcdata;
                    256:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    257:   PC+= 6;
                    258: }
                    259: 
                    260: void cpu_op_1071b(t_ipc *ipc) /* OR */ {
                    261:   /* mask f1ff, bits 8039, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    262:   uint32 srcaddr = ipc->src;
                    263:   uint8 srcdata = fetchbyte(srcaddr);
                    264:   int dstreg = (ipc->opcode >> 9) & 7;
                    265:   uint8 dstdata = DATAREG(dstreg);
                    266:   uint8 outdata = dstdata;
                    267: 
                    268:   outdata|= srcdata;
                    269:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    270: 
                    271:   NFLAG = ((sint8)outdata) < 0;
                    272:   ZFLAG = !outdata;
                    273:   VFLAG = 0;
                    274:   CFLAG = 0;
                    275:   PC+= 6;
                    276: }
                    277: 
                    278: void cpu_op_1072a(t_ipc *ipc) /* OR */ {
                    279:   /* mask f1ff, bits 803a, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    280:   uint32 srcaddr = ipc->src;
                    281:   uint8 srcdata = fetchbyte(srcaddr);
                    282:   int dstreg = (ipc->opcode >> 9) & 7;
                    283:   uint8 dstdata = DATAREG(dstreg);
                    284:   uint8 outdata = dstdata;
                    285: 
                    286:   outdata|= srcdata;
                    287:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    288:   PC+= 4;
                    289: }
                    290: 
                    291: void cpu_op_1072b(t_ipc *ipc) /* OR */ {
                    292:   /* mask f1ff, bits 803a, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    293:   uint32 srcaddr = ipc->src;
                    294:   uint8 srcdata = fetchbyte(srcaddr);
                    295:   int dstreg = (ipc->opcode >> 9) & 7;
                    296:   uint8 dstdata = DATAREG(dstreg);
                    297:   uint8 outdata = dstdata;
                    298: 
                    299:   outdata|= srcdata;
                    300:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    301: 
                    302:   NFLAG = ((sint8)outdata) < 0;
                    303:   ZFLAG = !outdata;
                    304:   VFLAG = 0;
                    305:   CFLAG = 0;
                    306:   PC+= 4;
                    307: }
                    308: 
                    309: void cpu_op_1073a(t_ipc *ipc) /* OR */ {
                    310:   /* mask f1ff, bits 803b, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    311:   uint32 srcaddr = idxval_src(ipc);
                    312:   uint8 srcdata = fetchbyte(srcaddr);
                    313:   int dstreg = (ipc->opcode >> 9) & 7;
                    314:   uint8 dstdata = DATAREG(dstreg);
                    315:   uint8 outdata = dstdata;
                    316: 
                    317:   outdata|= srcdata;
                    318:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    319:   PC+= 4;
                    320: }
                    321: 
                    322: void cpu_op_1073b(t_ipc *ipc) /* OR */ {
                    323:   /* mask f1ff, bits 803b, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    324:   uint32 srcaddr = idxval_src(ipc);
                    325:   uint8 srcdata = fetchbyte(srcaddr);
                    326:   int dstreg = (ipc->opcode >> 9) & 7;
                    327:   uint8 dstdata = DATAREG(dstreg);
                    328:   uint8 outdata = dstdata;
                    329: 
                    330:   outdata|= srcdata;
                    331:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    332: 
                    333:   NFLAG = ((sint8)outdata) < 0;
                    334:   ZFLAG = !outdata;
                    335:   VFLAG = 0;
                    336:   CFLAG = 0;
                    337:   PC+= 4;
                    338: }
                    339: 
                    340: void cpu_op_1074a(t_ipc *ipc) /* OR */ {
                    341:   /* mask f1ff, bits 803c, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 11, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    342:   uint8 srcdata = ipc->src;
                    343:   int dstreg = (ipc->opcode >> 9) & 7;
                    344:   uint8 dstdata = DATAREG(dstreg);
                    345:   uint8 outdata = dstdata;
                    346: 
                    347:   outdata|= srcdata;
                    348:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    349:   PC+= 4;
                    350: }
                    351: 
                    352: void cpu_op_1074b(t_ipc *ipc) /* OR */ {
                    353:   /* mask f1ff, bits 803c, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 11, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    354:   uint8 srcdata = ipc->src;
                    355:   int dstreg = (ipc->opcode >> 9) & 7;
                    356:   uint8 dstdata = DATAREG(dstreg);
                    357:   uint8 outdata = dstdata;
                    358: 
                    359:   outdata|= srcdata;
                    360:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                    361: 
                    362:   NFLAG = ((sint8)outdata) < 0;
                    363:   ZFLAG = !outdata;
                    364:   VFLAG = 0;
                    365:   CFLAG = 0;
                    366:   PC+= 4;
                    367: }
                    368: 
                    369: void cpu_op_1075a(t_ipc *ipc) /* OR */ {
                    370:   /* mask f1f8, bits 8040, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    371:   int srcreg = (ipc->opcode >> 0) & 7;
                    372:   uint16 srcdata = DATAREG(srcreg);
                    373:   int dstreg = (ipc->opcode >> 9) & 7;
                    374:   uint16 dstdata = DATAREG(dstreg);
                    375:   uint16 outdata = dstdata;
                    376: 
                    377:   outdata|= srcdata;
                    378:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    379:   PC+= 2;
                    380: }
                    381: 
                    382: void cpu_op_1075b(t_ipc *ipc) /* OR */ {
                    383:   /* mask f1f8, bits 8040, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    384:   int srcreg = (ipc->opcode >> 0) & 7;
                    385:   uint16 srcdata = DATAREG(srcreg);
                    386:   int dstreg = (ipc->opcode >> 9) & 7;
                    387:   uint16 dstdata = DATAREG(dstreg);
                    388:   uint16 outdata = dstdata;
                    389: 
                    390:   outdata|= srcdata;
                    391:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    392: 
                    393:   NFLAG = ((sint16)outdata) < 0;
                    394:   ZFLAG = !outdata;
                    395:   VFLAG = 0;
                    396:   CFLAG = 0;
                    397:   PC+= 2;
                    398: }
                    399: 
                    400: void cpu_op_1076a(t_ipc *ipc) /* OR */ {
                    401:   /* mask f1f8, bits 8050, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    402:   int srcreg = (ipc->opcode >> 0) & 7;
                    403:   uint32 srcaddr = ADDRREG(srcreg);
                    404:   uint16 srcdata = fetchword(srcaddr);
                    405:   int dstreg = (ipc->opcode >> 9) & 7;
                    406:   uint16 dstdata = DATAREG(dstreg);
                    407:   uint16 outdata = dstdata;
                    408: 
                    409:   outdata|= srcdata;
                    410:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    411:   PC+= 2;
                    412: }
                    413: 
                    414: void cpu_op_1076b(t_ipc *ipc) /* OR */ {
                    415:   /* mask f1f8, bits 8050, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    416:   int srcreg = (ipc->opcode >> 0) & 7;
                    417:   uint32 srcaddr = ADDRREG(srcreg);
                    418:   uint16 srcdata = fetchword(srcaddr);
                    419:   int dstreg = (ipc->opcode >> 9) & 7;
                    420:   uint16 dstdata = DATAREG(dstreg);
                    421:   uint16 outdata = dstdata;
                    422: 
                    423:   outdata|= srcdata;
                    424:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    425: 
                    426:   NFLAG = ((sint16)outdata) < 0;
                    427:   ZFLAG = !outdata;
                    428:   VFLAG = 0;
                    429:   CFLAG = 0;
                    430:   PC+= 2;
                    431: }
                    432: 
                    433: void cpu_op_1077a(t_ipc *ipc) /* OR */ {
                    434:   /* mask f1f8, bits 8058, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    435:   int srcreg = (ipc->opcode >> 0) & 7;
                    436:   uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
                    437:   uint16 srcdata = fetchword(srcaddr);
                    438:   int dstreg = (ipc->opcode >> 9) & 7;
                    439:   uint16 dstdata = DATAREG(dstreg);
                    440:   uint16 outdata = dstdata;
                    441: 
                    442:   outdata|= srcdata;
                    443:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    444:   PC+= 2;
                    445: }
                    446: 
                    447: void cpu_op_1077b(t_ipc *ipc) /* OR */ {
                    448:   /* mask f1f8, bits 8058, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    449:   int srcreg = (ipc->opcode >> 0) & 7;
                    450:   uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
                    451:   uint16 srcdata = fetchword(srcaddr);
                    452:   int dstreg = (ipc->opcode >> 9) & 7;
                    453:   uint16 dstdata = DATAREG(dstreg);
                    454:   uint16 outdata = dstdata;
                    455: 
                    456:   outdata|= srcdata;
                    457:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    458: 
                    459:   NFLAG = ((sint16)outdata) < 0;
                    460:   ZFLAG = !outdata;
                    461:   VFLAG = 0;
                    462:   CFLAG = 0;
                    463:   PC+= 2;
                    464: }
                    465: 
                    466: void cpu_op_1078a(t_ipc *ipc) /* OR */ {
                    467:   /* mask f1f8, bits 8060, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    468:   int srcreg = (ipc->opcode >> 0) & 7;
                    469:   uint32 srcaddr = ADDRREG(srcreg)-=2;
                    470:   uint16 srcdata = fetchword(srcaddr);
                    471:   int dstreg = (ipc->opcode >> 9) & 7;
                    472:   uint16 dstdata = DATAREG(dstreg);
                    473:   uint16 outdata = dstdata;
                    474: 
                    475:   outdata|= srcdata;
                    476:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    477:   PC+= 2;
                    478: }
                    479: 
                    480: void cpu_op_1078b(t_ipc *ipc) /* OR */ {
                    481:   /* mask f1f8, bits 8060, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    482:   int srcreg = (ipc->opcode >> 0) & 7;
                    483:   uint32 srcaddr = ADDRREG(srcreg)-=2;
                    484:   uint16 srcdata = fetchword(srcaddr);
                    485:   int dstreg = (ipc->opcode >> 9) & 7;
                    486:   uint16 dstdata = DATAREG(dstreg);
                    487:   uint16 outdata = dstdata;
                    488: 
                    489:   outdata|= srcdata;
                    490:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    491: 
                    492:   NFLAG = ((sint16)outdata) < 0;
                    493:   ZFLAG = !outdata;
                    494:   VFLAG = 0;
                    495:   CFLAG = 0;
                    496:   PC+= 2;
                    497: }
                    498: 
                    499: void cpu_op_1079a(t_ipc *ipc) /* OR */ {
                    500:   /* mask f1f8, bits 8068, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    501:   int srcreg = (ipc->opcode >> 0) & 7;
                    502:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                    503:   uint16 srcdata = fetchword(srcaddr);
                    504:   int dstreg = (ipc->opcode >> 9) & 7;
                    505:   uint16 dstdata = DATAREG(dstreg);
                    506:   uint16 outdata = dstdata;
                    507: 
                    508:   outdata|= srcdata;
                    509:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    510:   PC+= 4;
                    511: }
                    512: 
                    513: void cpu_op_1079b(t_ipc *ipc) /* OR */ {
                    514:   /* mask f1f8, bits 8068, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    515:   int srcreg = (ipc->opcode >> 0) & 7;
                    516:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                    517:   uint16 srcdata = fetchword(srcaddr);
                    518:   int dstreg = (ipc->opcode >> 9) & 7;
                    519:   uint16 dstdata = DATAREG(dstreg);
                    520:   uint16 outdata = dstdata;
                    521: 
                    522:   outdata|= srcdata;
                    523:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    524: 
                    525:   NFLAG = ((sint16)outdata) < 0;
                    526:   ZFLAG = !outdata;
                    527:   VFLAG = 0;
                    528:   CFLAG = 0;
                    529:   PC+= 4;
                    530: }
                    531: 
                    532: void cpu_op_1080a(t_ipc *ipc) /* OR */ {
                    533:   /* mask f1f8, bits 8070, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    534:   int srcreg = (ipc->opcode >> 0) & 7;
                    535:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                    536:   uint16 srcdata = fetchword(srcaddr);
                    537:   int dstreg = (ipc->opcode >> 9) & 7;
                    538:   uint16 dstdata = DATAREG(dstreg);
                    539:   uint16 outdata = dstdata;
                    540: 
                    541:   outdata|= srcdata;
                    542:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    543:   PC+= 4;
                    544: }
                    545: 
                    546: void cpu_op_1080b(t_ipc *ipc) /* OR */ {
                    547:   /* mask f1f8, bits 8070, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    548:   int srcreg = (ipc->opcode >> 0) & 7;
                    549:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                    550:   uint16 srcdata = fetchword(srcaddr);
                    551:   int dstreg = (ipc->opcode >> 9) & 7;
                    552:   uint16 dstdata = DATAREG(dstreg);
                    553:   uint16 outdata = dstdata;
                    554: 
                    555:   outdata|= srcdata;
                    556:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    557: 
                    558:   NFLAG = ((sint16)outdata) < 0;
                    559:   ZFLAG = !outdata;
                    560:   VFLAG = 0;
                    561:   CFLAG = 0;
                    562:   PC+= 4;
                    563: }
                    564: 
                    565: void cpu_op_1081a(t_ipc *ipc) /* OR */ {
                    566:   /* mask f1ff, bits 8078, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    567:   uint32 srcaddr = ipc->src;
                    568:   uint16 srcdata = fetchword(srcaddr);
                    569:   int dstreg = (ipc->opcode >> 9) & 7;
                    570:   uint16 dstdata = DATAREG(dstreg);
                    571:   uint16 outdata = dstdata;
                    572: 
                    573:   outdata|= srcdata;
                    574:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    575:   PC+= 4;
                    576: }
                    577: 
                    578: void cpu_op_1081b(t_ipc *ipc) /* OR */ {
                    579:   /* mask f1ff, bits 8078, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    580:   uint32 srcaddr = ipc->src;
                    581:   uint16 srcdata = fetchword(srcaddr);
                    582:   int dstreg = (ipc->opcode >> 9) & 7;
                    583:   uint16 dstdata = DATAREG(dstreg);
                    584:   uint16 outdata = dstdata;
                    585: 
                    586:   outdata|= srcdata;
                    587:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    588: 
                    589:   NFLAG = ((sint16)outdata) < 0;
                    590:   ZFLAG = !outdata;
                    591:   VFLAG = 0;
                    592:   CFLAG = 0;
                    593:   PC+= 4;
                    594: }
                    595: 
                    596: void cpu_op_1082a(t_ipc *ipc) /* OR */ {
                    597:   /* mask f1ff, bits 8079, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    598:   uint32 srcaddr = ipc->src;
                    599:   uint16 srcdata = fetchword(srcaddr);
                    600:   int dstreg = (ipc->opcode >> 9) & 7;
                    601:   uint16 dstdata = DATAREG(dstreg);
                    602:   uint16 outdata = dstdata;
                    603: 
                    604:   outdata|= srcdata;
                    605:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    606:   PC+= 6;
                    607: }
                    608: 
                    609: void cpu_op_1082b(t_ipc *ipc) /* OR */ {
                    610:   /* mask f1ff, bits 8079, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    611:   uint32 srcaddr = ipc->src;
                    612:   uint16 srcdata = fetchword(srcaddr);
                    613:   int dstreg = (ipc->opcode >> 9) & 7;
                    614:   uint16 dstdata = DATAREG(dstreg);
                    615:   uint16 outdata = dstdata;
                    616: 
                    617:   outdata|= srcdata;
                    618:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    619: 
                    620:   NFLAG = ((sint16)outdata) < 0;
                    621:   ZFLAG = !outdata;
                    622:   VFLAG = 0;
                    623:   CFLAG = 0;
                    624:   PC+= 6;
                    625: }
                    626: 
                    627: void cpu_op_1083a(t_ipc *ipc) /* OR */ {
                    628:   /* mask f1ff, bits 807a, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    629:   uint32 srcaddr = ipc->src;
                    630:   uint16 srcdata = fetchword(srcaddr);
                    631:   int dstreg = (ipc->opcode >> 9) & 7;
                    632:   uint16 dstdata = DATAREG(dstreg);
                    633:   uint16 outdata = dstdata;
                    634: 
                    635:   outdata|= srcdata;
                    636:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    637:   PC+= 4;
                    638: }
                    639: 
                    640: void cpu_op_1083b(t_ipc *ipc) /* OR */ {
                    641:   /* mask f1ff, bits 807a, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    642:   uint32 srcaddr = ipc->src;
                    643:   uint16 srcdata = fetchword(srcaddr);
                    644:   int dstreg = (ipc->opcode >> 9) & 7;
                    645:   uint16 dstdata = DATAREG(dstreg);
                    646:   uint16 outdata = dstdata;
                    647: 
                    648:   outdata|= srcdata;
                    649:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    650: 
                    651:   NFLAG = ((sint16)outdata) < 0;
                    652:   ZFLAG = !outdata;
                    653:   VFLAG = 0;
                    654:   CFLAG = 0;
                    655:   PC+= 4;
                    656: }
                    657: 
                    658: void cpu_op_1084a(t_ipc *ipc) /* OR */ {
                    659:   /* mask f1ff, bits 807b, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    660:   uint32 srcaddr = idxval_src(ipc);
                    661:   uint16 srcdata = fetchword(srcaddr);
                    662:   int dstreg = (ipc->opcode >> 9) & 7;
                    663:   uint16 dstdata = DATAREG(dstreg);
                    664:   uint16 outdata = dstdata;
                    665: 
                    666:   outdata|= srcdata;
                    667:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    668:   PC+= 4;
                    669: }
                    670: 
                    671: void cpu_op_1084b(t_ipc *ipc) /* OR */ {
                    672:   /* mask f1ff, bits 807b, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    673:   uint32 srcaddr = idxval_src(ipc);
                    674:   uint16 srcdata = fetchword(srcaddr);
                    675:   int dstreg = (ipc->opcode >> 9) & 7;
                    676:   uint16 dstdata = DATAREG(dstreg);
                    677:   uint16 outdata = dstdata;
                    678: 
                    679:   outdata|= srcdata;
                    680:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    681: 
                    682:   NFLAG = ((sint16)outdata) < 0;
                    683:   ZFLAG = !outdata;
                    684:   VFLAG = 0;
                    685:   CFLAG = 0;
                    686:   PC+= 4;
                    687: }
                    688: 
                    689: void cpu_op_1085a(t_ipc *ipc) /* OR */ {
                    690:   /* mask f1ff, bits 807c, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    691:   uint16 srcdata = ipc->src;
                    692:   int dstreg = (ipc->opcode >> 9) & 7;
                    693:   uint16 dstdata = DATAREG(dstreg);
                    694:   uint16 outdata = dstdata;
                    695: 
                    696:   outdata|= srcdata;
                    697:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    698:   PC+= 4;
                    699: }
                    700: 
                    701: void cpu_op_1085b(t_ipc *ipc) /* OR */ {
                    702:   /* mask f1ff, bits 807c, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    703:   uint16 srcdata = ipc->src;
                    704:   int dstreg = (ipc->opcode >> 9) & 7;
                    705:   uint16 dstdata = DATAREG(dstreg);
                    706:   uint16 outdata = dstdata;
                    707: 
                    708:   outdata|= srcdata;
                    709:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xffff) | outdata;
                    710: 
                    711:   NFLAG = ((sint16)outdata) < 0;
                    712:   ZFLAG = !outdata;
                    713:   VFLAG = 0;
                    714:   CFLAG = 0;
                    715:   PC+= 4;
                    716: }
                    717: 
                    718: void cpu_op_1086a(t_ipc *ipc) /* OR */ {
                    719:   /* mask f1f8, bits 8080, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    720:   int srcreg = (ipc->opcode >> 0) & 7;
                    721:   uint32 srcdata = DATAREG(srcreg);
                    722:   int dstreg = (ipc->opcode >> 9) & 7;
                    723:   uint32 dstdata = DATAREG(dstreg);
                    724:   uint32 outdata = dstdata;
                    725: 
                    726:   outdata|= srcdata;
                    727:   DATAREG(dstreg) = outdata;
                    728:   PC+= 2;
                    729: }
                    730: 
                    731: void cpu_op_1086b(t_ipc *ipc) /* OR */ {
                    732:   /* mask f1f8, bits 8080, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    733:   int srcreg = (ipc->opcode >> 0) & 7;
                    734:   uint32 srcdata = DATAREG(srcreg);
                    735:   int dstreg = (ipc->opcode >> 9) & 7;
                    736:   uint32 dstdata = DATAREG(dstreg);
                    737:   uint32 outdata = dstdata;
                    738: 
                    739:   outdata|= srcdata;
                    740:   DATAREG(dstreg) = outdata;
                    741: 
                    742:   NFLAG = ((sint32)outdata) < 0;
                    743:   ZFLAG = !outdata;
                    744:   VFLAG = 0;
                    745:   CFLAG = 0;
                    746:   PC+= 2;
                    747: }
                    748: 
                    749: void cpu_op_1087a(t_ipc *ipc) /* OR */ {
                    750:   /* mask f1f8, bits 8090, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    751:   int srcreg = (ipc->opcode >> 0) & 7;
                    752:   uint32 srcaddr = ADDRREG(srcreg);
                    753:   uint32 srcdata = fetchlong(srcaddr);
                    754:   int dstreg = (ipc->opcode >> 9) & 7;
                    755:   uint32 dstdata = DATAREG(dstreg);
                    756:   uint32 outdata = dstdata;
                    757: 
                    758:   outdata|= srcdata;
                    759:   DATAREG(dstreg) = outdata;
                    760:   PC+= 2;
                    761: }
                    762: 
                    763: void cpu_op_1087b(t_ipc *ipc) /* OR */ {
                    764:   /* mask f1f8, bits 8090, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    765:   int srcreg = (ipc->opcode >> 0) & 7;
                    766:   uint32 srcaddr = ADDRREG(srcreg);
                    767:   uint32 srcdata = fetchlong(srcaddr);
                    768:   int dstreg = (ipc->opcode >> 9) & 7;
                    769:   uint32 dstdata = DATAREG(dstreg);
                    770:   uint32 outdata = dstdata;
                    771: 
                    772:   outdata|= srcdata;
                    773:   DATAREG(dstreg) = outdata;
                    774: 
                    775:   NFLAG = ((sint32)outdata) < 0;
                    776:   ZFLAG = !outdata;
                    777:   VFLAG = 0;
                    778:   CFLAG = 0;
                    779:   PC+= 2;
                    780: }
                    781: 
                    782: void cpu_op_1088a(t_ipc *ipc) /* OR */ {
                    783:   /* mask f1f8, bits 8098, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    784:   int srcreg = (ipc->opcode >> 0) & 7;
                    785:   uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4);
                    786:   uint32 srcdata = fetchlong(srcaddr);
                    787:   int dstreg = (ipc->opcode >> 9) & 7;
                    788:   uint32 dstdata = DATAREG(dstreg);
                    789:   uint32 outdata = dstdata;
                    790: 
                    791:   outdata|= srcdata;
                    792:   DATAREG(dstreg) = outdata;
                    793:   PC+= 2;
                    794: }
                    795: 
                    796: void cpu_op_1088b(t_ipc *ipc) /* OR */ {
                    797:   /* mask f1f8, bits 8098, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    798:   int srcreg = (ipc->opcode >> 0) & 7;
                    799:   uint32 srcaddr = (ADDRREG(srcreg)+=4, ADDRREG(srcreg)-4);
                    800:   uint32 srcdata = fetchlong(srcaddr);
                    801:   int dstreg = (ipc->opcode >> 9) & 7;
                    802:   uint32 dstdata = DATAREG(dstreg);
                    803:   uint32 outdata = dstdata;
                    804: 
                    805:   outdata|= srcdata;
                    806:   DATAREG(dstreg) = outdata;
                    807: 
                    808:   NFLAG = ((sint32)outdata) < 0;
                    809:   ZFLAG = !outdata;
                    810:   VFLAG = 0;
                    811:   CFLAG = 0;
                    812:   PC+= 2;
                    813: }
                    814: 
                    815: void cpu_op_1089a(t_ipc *ipc) /* OR */ {
                    816:   /* mask f1f8, bits 80a0, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    817:   int srcreg = (ipc->opcode >> 0) & 7;
                    818:   uint32 srcaddr = ADDRREG(srcreg)-=4;
                    819:   uint32 srcdata = fetchlong(srcaddr);
                    820:   int dstreg = (ipc->opcode >> 9) & 7;
                    821:   uint32 dstdata = DATAREG(dstreg);
                    822:   uint32 outdata = dstdata;
                    823: 
                    824:   outdata|= srcdata;
                    825:   DATAREG(dstreg) = outdata;
                    826:   PC+= 2;
                    827: }
                    828: 
                    829: void cpu_op_1089b(t_ipc *ipc) /* OR */ {
                    830:   /* mask f1f8, bits 80a0, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    831:   int srcreg = (ipc->opcode >> 0) & 7;
                    832:   uint32 srcaddr = ADDRREG(srcreg)-=4;
                    833:   uint32 srcdata = fetchlong(srcaddr);
                    834:   int dstreg = (ipc->opcode >> 9) & 7;
                    835:   uint32 dstdata = DATAREG(dstreg);
                    836:   uint32 outdata = dstdata;
                    837: 
                    838:   outdata|= srcdata;
                    839:   DATAREG(dstreg) = outdata;
                    840: 
                    841:   NFLAG = ((sint32)outdata) < 0;
                    842:   ZFLAG = !outdata;
                    843:   VFLAG = 0;
                    844:   CFLAG = 0;
                    845:   PC+= 2;
                    846: }
                    847: 
                    848: void cpu_op_1090a(t_ipc *ipc) /* OR */ {
                    849:   /* mask f1f8, bits 80a8, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    850:   int srcreg = (ipc->opcode >> 0) & 7;
                    851:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                    852:   uint32 srcdata = fetchlong(srcaddr);
                    853:   int dstreg = (ipc->opcode >> 9) & 7;
                    854:   uint32 dstdata = DATAREG(dstreg);
                    855:   uint32 outdata = dstdata;
                    856: 
                    857:   outdata|= srcdata;
                    858:   DATAREG(dstreg) = outdata;
                    859:   PC+= 4;
                    860: }
                    861: 
                    862: void cpu_op_1090b(t_ipc *ipc) /* OR */ {
                    863:   /* mask f1f8, bits 80a8, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    864:   int srcreg = (ipc->opcode >> 0) & 7;
                    865:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                    866:   uint32 srcdata = fetchlong(srcaddr);
                    867:   int dstreg = (ipc->opcode >> 9) & 7;
                    868:   uint32 dstdata = DATAREG(dstreg);
                    869:   uint32 outdata = dstdata;
                    870: 
                    871:   outdata|= srcdata;
                    872:   DATAREG(dstreg) = outdata;
                    873: 
                    874:   NFLAG = ((sint32)outdata) < 0;
                    875:   ZFLAG = !outdata;
                    876:   VFLAG = 0;
                    877:   CFLAG = 0;
                    878:   PC+= 4;
                    879: }
                    880: 
                    881: void cpu_op_1091a(t_ipc *ipc) /* OR */ {
                    882:   /* mask f1f8, bits 80b0, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    883:   int srcreg = (ipc->opcode >> 0) & 7;
                    884:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                    885:   uint32 srcdata = fetchlong(srcaddr);
                    886:   int dstreg = (ipc->opcode >> 9) & 7;
                    887:   uint32 dstdata = DATAREG(dstreg);
                    888:   uint32 outdata = dstdata;
                    889: 
                    890:   outdata|= srcdata;
                    891:   DATAREG(dstreg) = outdata;
                    892:   PC+= 4;
                    893: }
                    894: 
                    895: void cpu_op_1091b(t_ipc *ipc) /* OR */ {
                    896:   /* mask f1f8, bits 80b0, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    897:   int srcreg = (ipc->opcode >> 0) & 7;
                    898:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                    899:   uint32 srcdata = fetchlong(srcaddr);
                    900:   int dstreg = (ipc->opcode >> 9) & 7;
                    901:   uint32 dstdata = DATAREG(dstreg);
                    902:   uint32 outdata = dstdata;
                    903: 
                    904:   outdata|= srcdata;
                    905:   DATAREG(dstreg) = outdata;
                    906: 
                    907:   NFLAG = ((sint32)outdata) < 0;
                    908:   ZFLAG = !outdata;
                    909:   VFLAG = 0;
                    910:   CFLAG = 0;
                    911:   PC+= 4;
                    912: }
                    913: 
                    914: void cpu_op_1092a(t_ipc *ipc) /* OR */ {
                    915:   /* mask f1ff, bits 80b8, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    916:   uint32 srcaddr = ipc->src;
                    917:   uint32 srcdata = fetchlong(srcaddr);
                    918:   int dstreg = (ipc->opcode >> 9) & 7;
                    919:   uint32 dstdata = DATAREG(dstreg);
                    920:   uint32 outdata = dstdata;
                    921: 
                    922:   outdata|= srcdata;
                    923:   DATAREG(dstreg) = outdata;
                    924:   PC+= 4;
                    925: }
                    926: 
                    927: void cpu_op_1092b(t_ipc *ipc) /* OR */ {
                    928:   /* mask f1ff, bits 80b8, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    929:   uint32 srcaddr = ipc->src;
                    930:   uint32 srcdata = fetchlong(srcaddr);
                    931:   int dstreg = (ipc->opcode >> 9) & 7;
                    932:   uint32 dstdata = DATAREG(dstreg);
                    933:   uint32 outdata = dstdata;
                    934: 
                    935:   outdata|= srcdata;
                    936:   DATAREG(dstreg) = outdata;
                    937: 
                    938:   NFLAG = ((sint32)outdata) < 0;
                    939:   ZFLAG = !outdata;
                    940:   VFLAG = 0;
                    941:   CFLAG = 0;
                    942:   PC+= 4;
                    943: }
                    944: 
                    945: void cpu_op_1093a(t_ipc *ipc) /* OR */ {
                    946:   /* mask f1ff, bits 80b9, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    947:   uint32 srcaddr = ipc->src;
                    948:   uint32 srcdata = fetchlong(srcaddr);
                    949:   int dstreg = (ipc->opcode >> 9) & 7;
                    950:   uint32 dstdata = DATAREG(dstreg);
                    951:   uint32 outdata = dstdata;
                    952: 
                    953:   outdata|= srcdata;
                    954:   DATAREG(dstreg) = outdata;
                    955:   PC+= 6;
                    956: }
                    957: 
                    958: void cpu_op_1093b(t_ipc *ipc) /* OR */ {
                    959:   /* mask f1ff, bits 80b9, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    960:   uint32 srcaddr = ipc->src;
                    961:   uint32 srcdata = fetchlong(srcaddr);
                    962:   int dstreg = (ipc->opcode >> 9) & 7;
                    963:   uint32 dstdata = DATAREG(dstreg);
                    964:   uint32 outdata = dstdata;
                    965: 
                    966:   outdata|= srcdata;
                    967:   DATAREG(dstreg) = outdata;
                    968: 
                    969:   NFLAG = ((sint32)outdata) < 0;
                    970:   ZFLAG = !outdata;
                    971:   VFLAG = 0;
                    972:   CFLAG = 0;
                    973:   PC+= 6;
                    974: }
                    975: 
                    976: void cpu_op_1094a(t_ipc *ipc) /* OR */ {
                    977:   /* mask f1ff, bits 80ba, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 9, 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 = dstdata;
                    983: 
                    984:   outdata|= srcdata;
                    985:   DATAREG(dstreg) = outdata;
                    986:   PC+= 4;
                    987: }
                    988: 
                    989: void cpu_op_1094b(t_ipc *ipc) /* OR */ {
                    990:   /* mask f1ff, bits 80ba, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                    991:   uint32 srcaddr = ipc->src;
                    992:   uint32 srcdata = fetchlong(srcaddr);
                    993:   int dstreg = (ipc->opcode >> 9) & 7;
                    994:   uint32 dstdata = DATAREG(dstreg);
                    995:   uint32 outdata = dstdata;
                    996: 
                    997:   outdata|= srcdata;
                    998:   DATAREG(dstreg) = outdata;
                    999: 
                   1000:   NFLAG = ((sint32)outdata) < 0;
                   1001:   ZFLAG = !outdata;
                   1002:   VFLAG = 0;
                   1003:   CFLAG = 0;
                   1004:   PC+= 4;
                   1005: }
                   1006: 
                   1007: void cpu_op_1095a(t_ipc *ipc) /* OR */ {
                   1008:   /* mask f1ff, bits 80bb, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1009:   uint32 srcaddr = idxval_src(ipc);
                   1010:   uint32 srcdata = fetchlong(srcaddr);
                   1011:   int dstreg = (ipc->opcode >> 9) & 7;
                   1012:   uint32 dstdata = DATAREG(dstreg);
                   1013:   uint32 outdata = dstdata;
                   1014: 
                   1015:   outdata|= srcdata;
                   1016:   DATAREG(dstreg) = outdata;
                   1017:   PC+= 4;
                   1018: }
                   1019: 
                   1020: void cpu_op_1095b(t_ipc *ipc) /* OR */ {
                   1021:   /* mask f1ff, bits 80bb, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1022:   uint32 srcaddr = idxval_src(ipc);
                   1023:   uint32 srcdata = fetchlong(srcaddr);
                   1024:   int dstreg = (ipc->opcode >> 9) & 7;
                   1025:   uint32 dstdata = DATAREG(dstreg);
                   1026:   uint32 outdata = dstdata;
                   1027: 
                   1028:   outdata|= srcdata;
                   1029:   DATAREG(dstreg) = outdata;
                   1030: 
                   1031:   NFLAG = ((sint32)outdata) < 0;
                   1032:   ZFLAG = !outdata;
                   1033:   VFLAG = 0;
                   1034:   CFLAG = 0;
                   1035:   PC+= 4;
                   1036: }
                   1037: 
                   1038: void cpu_op_1096a(t_ipc *ipc) /* OR */ {
                   1039:   /* mask f1ff, bits 80bc, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 13, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1040:   uint32 srcdata = ipc->src;
                   1041:   int dstreg = (ipc->opcode >> 9) & 7;
                   1042:   uint32 dstdata = DATAREG(dstreg);
                   1043:   uint32 outdata = dstdata;
                   1044: 
                   1045:   outdata|= srcdata;
                   1046:   DATAREG(dstreg) = outdata;
                   1047:   PC+= 6;
                   1048: }
                   1049: 
                   1050: void cpu_op_1096b(t_ipc *ipc) /* OR */ {
                   1051:   /* mask f1ff, bits 80bc, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 13, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1052:   uint32 srcdata = ipc->src;
                   1053:   int dstreg = (ipc->opcode >> 9) & 7;
                   1054:   uint32 dstdata = DATAREG(dstreg);
                   1055:   uint32 outdata = dstdata;
                   1056: 
                   1057:   outdata|= srcdata;
                   1058:   DATAREG(dstreg) = outdata;
                   1059: 
                   1060:   NFLAG = ((sint32)outdata) < 0;
                   1061:   ZFLAG = !outdata;
                   1062:   VFLAG = 0;
                   1063:   CFLAG = 0;
                   1064:   PC+= 6;
                   1065: }
                   1066: 
                   1067: void cpu_op_1097a(t_ipc *ipc) /* OR */ {
                   1068:   /* mask f1f8, bits 8110, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */
                   1069:   int srcreg = (ipc->opcode >> 9) & 7;
                   1070:   uint8 srcdata = DATAREG(srcreg);
                   1071:   int dstreg = (ipc->opcode >> 0) & 7;
                   1072:   uint32 dstaddr = ADDRREG(dstreg);
                   1073:   uint8 dstdata = fetchbyte(dstaddr);
                   1074:   uint8 outdata = dstdata;
                   1075: 
                   1076:   outdata|= srcdata;
                   1077:   storebyte(dstaddr, outdata);
                   1078:   PC+= 2;
                   1079: }
                   1080: 
                   1081: void cpu_op_1097b(t_ipc *ipc) /* OR */ {
                   1082:   /* mask f1f8, bits 8110, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */
                   1083:   int srcreg = (ipc->opcode >> 9) & 7;
                   1084:   uint8 srcdata = DATAREG(srcreg);
                   1085:   int dstreg = (ipc->opcode >> 0) & 7;
                   1086:   uint32 dstaddr = ADDRREG(dstreg);
                   1087:   uint8 dstdata = fetchbyte(dstaddr);
                   1088:   uint8 outdata = dstdata;
                   1089: 
                   1090:   outdata|= srcdata;
                   1091:   storebyte(dstaddr, outdata);
                   1092: 
                   1093:   NFLAG = ((sint8)outdata) < 0;
                   1094:   ZFLAG = !outdata;
                   1095:   VFLAG = 0;
                   1096:   CFLAG = 0;
                   1097:   PC+= 2;
                   1098: }
                   1099: 
                   1100: void cpu_op_1098a(t_ipc *ipc) /* OR */ {
                   1101:   /* mask f1f8, bits 8118, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */
                   1102:   int srcreg = (ipc->opcode >> 9) & 7;
                   1103:   uint8 srcdata = DATAREG(srcreg);
                   1104:   int dstreg = (ipc->opcode >> 0) & 7;
                   1105:   uint32 dstaddr = ADDRREG(dstreg);
                   1106:   uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0);
                   1107:   uint8 dstdata = fetchbyte(dstaddr);
                   1108:   uint8 outdata = dstdata;
                   1109: 
                   1110:   outdata|= srcdata;
                   1111:   storebyte(dstaddr, outdata);
                   1112:   PC+= 2;
                   1113: }
                   1114: 
                   1115: void cpu_op_1098b(t_ipc *ipc) /* OR */ {
                   1116:   /* mask f1f8, bits 8118, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */
                   1117:   int srcreg = (ipc->opcode >> 9) & 7;
                   1118:   uint8 srcdata = DATAREG(srcreg);
                   1119:   int dstreg = (ipc->opcode >> 0) & 7;
                   1120:   uint32 dstaddr = ADDRREG(dstreg);
                   1121:   uint32 dstaddr_tmp = (ADDRREG(dstreg)+= (dstreg == 7 ? 2 : 1), 0);
                   1122:   uint8 dstdata = fetchbyte(dstaddr);
                   1123:   uint8 outdata = dstdata;
                   1124: 
                   1125:   outdata|= srcdata;
                   1126:   storebyte(dstaddr, outdata);
                   1127: 
                   1128:   NFLAG = ((sint8)outdata) < 0;
                   1129:   ZFLAG = !outdata;
                   1130:   VFLAG = 0;
                   1131:   CFLAG = 0;
                   1132:   PC+= 2;
                   1133: }
                   1134: 
                   1135: void cpu_op_1099a(t_ipc *ipc) /* OR */ {
                   1136:   /* mask f1f8, bits 8120, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */
                   1137:   int srcreg = (ipc->opcode >> 9) & 7;
                   1138:   uint8 srcdata = DATAREG(srcreg);
                   1139:   int dstreg = (ipc->opcode >> 0) & 7;
                   1140:   uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1));
                   1141:   uint8 dstdata = fetchbyte(dstaddr);
                   1142:   uint8 outdata = dstdata;
                   1143: 
                   1144:   outdata|= srcdata;
                   1145:   storebyte(dstaddr, outdata);
                   1146:   PC+= 2;
                   1147: }
                   1148: 
                   1149: void cpu_op_1099b(t_ipc *ipc) /* OR */ {
                   1150:   /* mask f1f8, bits 8120, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */
                   1151:   int srcreg = (ipc->opcode >> 9) & 7;
                   1152:   uint8 srcdata = DATAREG(srcreg);
                   1153:   int dstreg = (ipc->opcode >> 0) & 7;
                   1154:   uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1));
                   1155:   uint8 dstdata = fetchbyte(dstaddr);
                   1156:   uint8 outdata = dstdata;
                   1157: 
                   1158:   outdata|= srcdata;
                   1159:   storebyte(dstaddr, outdata);
                   1160: 
                   1161:   NFLAG = ((sint8)outdata) < 0;
                   1162:   ZFLAG = !outdata;
                   1163:   VFLAG = 0;
                   1164:   CFLAG = 0;
                   1165:   PC+= 2;
                   1166: }
                   1167: 
                   1168: void cpu_op_1100a(t_ipc *ipc) /* OR */ {
                   1169:   /* mask f1f8, bits 8128, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */
                   1170:   int srcreg = (ipc->opcode >> 9) & 7;
                   1171:   uint8 srcdata = DATAREG(srcreg);
                   1172:   int dstreg = (ipc->opcode >> 0) & 7;
                   1173:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
                   1174:   uint8 dstdata = fetchbyte(dstaddr);
                   1175:   uint8 outdata = dstdata;
                   1176: 
                   1177:   outdata|= srcdata;
                   1178:   storebyte(dstaddr, outdata);
                   1179:   PC+= 4;
                   1180: }
                   1181: 
                   1182: void cpu_op_1100b(t_ipc *ipc) /* OR */ {
                   1183:   /* mask f1f8, bits 8128, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */
                   1184:   int srcreg = (ipc->opcode >> 9) & 7;
                   1185:   uint8 srcdata = DATAREG(srcreg);
                   1186:   int dstreg = (ipc->opcode >> 0) & 7;
                   1187:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
                   1188:   uint8 dstdata = fetchbyte(dstaddr);
                   1189:   uint8 outdata = dstdata;
                   1190: 
                   1191:   outdata|= srcdata;
                   1192:   storebyte(dstaddr, outdata);
                   1193: 
                   1194:   NFLAG = ((sint8)outdata) < 0;
                   1195:   ZFLAG = !outdata;
                   1196:   VFLAG = 0;
                   1197:   CFLAG = 0;
                   1198:   PC+= 4;
                   1199: }
                   1200: 
                   1201: void cpu_op_1101a(t_ipc *ipc) /* OR */ {
                   1202:   /* mask f1f8, bits 8130, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */
                   1203:   int srcreg = (ipc->opcode >> 9) & 7;
                   1204:   uint8 srcdata = DATAREG(srcreg);
                   1205:   int dstreg = (ipc->opcode >> 0) & 7;
                   1206:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
                   1207:   uint8 dstdata = fetchbyte(dstaddr);
                   1208:   uint8 outdata = dstdata;
                   1209: 
                   1210:   outdata|= srcdata;
                   1211:   storebyte(dstaddr, outdata);
                   1212:   PC+= 4;
                   1213: }
                   1214: 
                   1215: void cpu_op_1101b(t_ipc *ipc) /* OR */ {
                   1216:   /* mask f1f8, bits 8130, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */
                   1217:   int srcreg = (ipc->opcode >> 9) & 7;
                   1218:   uint8 srcdata = DATAREG(srcreg);
                   1219:   int dstreg = (ipc->opcode >> 0) & 7;
                   1220:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
                   1221:   uint8 dstdata = fetchbyte(dstaddr);
                   1222:   uint8 outdata = dstdata;
                   1223: 
                   1224:   outdata|= srcdata;
                   1225:   storebyte(dstaddr, outdata);
                   1226: 
                   1227:   NFLAG = ((sint8)outdata) < 0;
                   1228:   ZFLAG = !outdata;
                   1229:   VFLAG = 0;
                   1230:   CFLAG = 0;
                   1231:   PC+= 4;
                   1232: }
                   1233: 
                   1234: void cpu_op_1102a(t_ipc *ipc) /* OR */ {
                   1235:   /* mask f1ff, bits 8138, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */
                   1236:   int srcreg = (ipc->opcode >> 9) & 7;
                   1237:   uint8 srcdata = DATAREG(srcreg);
                   1238:   uint32 dstaddr = ipc->dst;
                   1239:   uint8 dstdata = fetchbyte(dstaddr);
                   1240:   uint8 outdata = dstdata;
                   1241: 
                   1242:   outdata|= srcdata;
                   1243:   storebyte(dstaddr, outdata);
                   1244:   PC+= 4;
                   1245: }
                   1246: 
                   1247: void cpu_op_1102b(t_ipc *ipc) /* OR */ {
                   1248:   /* mask f1ff, bits 8138, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */
                   1249:   int srcreg = (ipc->opcode >> 9) & 7;
                   1250:   uint8 srcdata = DATAREG(srcreg);
                   1251:   uint32 dstaddr = ipc->dst;
                   1252:   uint8 dstdata = fetchbyte(dstaddr);
                   1253:   uint8 outdata = dstdata;
                   1254: 
                   1255:   outdata|= srcdata;
                   1256:   storebyte(dstaddr, outdata);
                   1257: 
                   1258:   NFLAG = ((sint8)outdata) < 0;
                   1259:   ZFLAG = !outdata;
                   1260:   VFLAG = 0;
                   1261:   CFLAG = 0;
                   1262:   PC+= 4;
                   1263: }
                   1264: 
                   1265: void cpu_op_1103a(t_ipc *ipc) /* OR */ {
                   1266:   /* mask f1ff, bits 8139, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */
                   1267:   int srcreg = (ipc->opcode >> 9) & 7;
                   1268:   uint8 srcdata = DATAREG(srcreg);
                   1269:   uint32 dstaddr = ipc->dst;
                   1270:   uint8 dstdata = fetchbyte(dstaddr);
                   1271:   uint8 outdata = dstdata;
                   1272: 
                   1273:   outdata|= srcdata;
                   1274:   storebyte(dstaddr, outdata);
                   1275:   PC+= 6;
                   1276: }
                   1277: 
                   1278: void cpu_op_1103b(t_ipc *ipc) /* OR */ {
                   1279:   /* mask f1ff, bits 8139, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 1, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */
                   1280:   int srcreg = (ipc->opcode >> 9) & 7;
                   1281:   uint8 srcdata = DATAREG(srcreg);
                   1282:   uint32 dstaddr = ipc->dst;
                   1283:   uint8 dstdata = fetchbyte(dstaddr);
                   1284:   uint8 outdata = dstdata;
                   1285: 
                   1286:   outdata|= srcdata;
                   1287:   storebyte(dstaddr, outdata);
                   1288: 
                   1289:   NFLAG = ((sint8)outdata) < 0;
                   1290:   ZFLAG = !outdata;
                   1291:   VFLAG = 0;
                   1292:   CFLAG = 0;
                   1293:   PC+= 6;
                   1294: }
                   1295: 
                   1296: void cpu_op_1104a(t_ipc *ipc) /* OR */ {
                   1297:   /* mask f1f8, bits 8150, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */
                   1298:   int srcreg = (ipc->opcode >> 9) & 7;
                   1299:   uint16 srcdata = DATAREG(srcreg);
                   1300:   int dstreg = (ipc->opcode >> 0) & 7;
                   1301:   uint32 dstaddr = ADDRREG(dstreg);
                   1302:   uint16 dstdata = fetchword(dstaddr);
                   1303:   uint16 outdata = dstdata;
                   1304: 
                   1305:   outdata|= srcdata;
                   1306:   storeword(dstaddr, outdata);
                   1307:   PC+= 2;
                   1308: }
                   1309: 
                   1310: void cpu_op_1104b(t_ipc *ipc) /* OR */ {
                   1311:   /* mask f1f8, bits 8150, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */
                   1312:   int srcreg = (ipc->opcode >> 9) & 7;
                   1313:   uint16 srcdata = DATAREG(srcreg);
                   1314:   int dstreg = (ipc->opcode >> 0) & 7;
                   1315:   uint32 dstaddr = ADDRREG(dstreg);
                   1316:   uint16 dstdata = fetchword(dstaddr);
                   1317:   uint16 outdata = dstdata;
                   1318: 
                   1319:   outdata|= srcdata;
                   1320:   storeword(dstaddr, outdata);
                   1321: 
                   1322:   NFLAG = ((sint16)outdata) < 0;
                   1323:   ZFLAG = !outdata;
                   1324:   VFLAG = 0;
                   1325:   CFLAG = 0;
                   1326:   PC+= 2;
                   1327: }
                   1328: 
                   1329: void cpu_op_1105a(t_ipc *ipc) /* OR */ {
                   1330:   /* mask f1f8, bits 8158, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */
                   1331:   int srcreg = (ipc->opcode >> 9) & 7;
                   1332:   uint16 srcdata = DATAREG(srcreg);
                   1333:   int dstreg = (ipc->opcode >> 0) & 7;
                   1334:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
                   1335:   uint16 dstdata = fetchword(dstaddr);
                   1336:   uint16 outdata = dstdata;
                   1337: 
                   1338:   outdata|= srcdata;
                   1339:   storeword(dstaddr, outdata);
                   1340:   PC+= 2;
                   1341: }
                   1342: 
                   1343: void cpu_op_1105b(t_ipc *ipc) /* OR */ {
                   1344:   /* mask f1f8, bits 8158, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */
                   1345:   int srcreg = (ipc->opcode >> 9) & 7;
                   1346:   uint16 srcdata = DATAREG(srcreg);
                   1347:   int dstreg = (ipc->opcode >> 0) & 7;
                   1348:   uint32 dstaddr = (ADDRREG(dstreg)+=2, ADDRREG(dstreg)-2);
                   1349:   uint16 dstdata = fetchword(dstaddr);
                   1350:   uint16 outdata = dstdata;
                   1351: 
                   1352:   outdata|= srcdata;
                   1353:   storeword(dstaddr, outdata);
                   1354: 
                   1355:   NFLAG = ((sint16)outdata) < 0;
                   1356:   ZFLAG = !outdata;
                   1357:   VFLAG = 0;
                   1358:   CFLAG = 0;
                   1359:   PC+= 2;
                   1360: }
                   1361: 
                   1362: void cpu_op_1106a(t_ipc *ipc) /* OR */ {
                   1363:   /* mask f1f8, bits 8160, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */
                   1364:   int srcreg = (ipc->opcode >> 9) & 7;
                   1365:   uint16 srcdata = DATAREG(srcreg);
                   1366:   int dstreg = (ipc->opcode >> 0) & 7;
                   1367:   uint32 dstaddr = ADDRREG(dstreg)-=2;
                   1368:   uint16 dstdata = fetchword(dstaddr);
                   1369:   uint16 outdata = dstdata;
                   1370: 
                   1371:   outdata|= srcdata;
                   1372:   storeword(dstaddr, outdata);
                   1373:   PC+= 2;
                   1374: }
                   1375: 
                   1376: void cpu_op_1106b(t_ipc *ipc) /* OR */ {
                   1377:   /* mask f1f8, bits 8160, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */
                   1378:   int srcreg = (ipc->opcode >> 9) & 7;
                   1379:   uint16 srcdata = DATAREG(srcreg);
                   1380:   int dstreg = (ipc->opcode >> 0) & 7;
                   1381:   uint32 dstaddr = ADDRREG(dstreg)-=2;
                   1382:   uint16 dstdata = fetchword(dstaddr);
                   1383:   uint16 outdata = dstdata;
                   1384: 
                   1385:   outdata|= srcdata;
                   1386:   storeword(dstaddr, outdata);
                   1387: 
                   1388:   NFLAG = ((sint16)outdata) < 0;
                   1389:   ZFLAG = !outdata;
                   1390:   VFLAG = 0;
                   1391:   CFLAG = 0;
                   1392:   PC+= 2;
                   1393: }
                   1394: 
                   1395: void cpu_op_1107a(t_ipc *ipc) /* OR */ {
                   1396:   /* mask f1f8, bits 8168, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */
                   1397:   int srcreg = (ipc->opcode >> 9) & 7;
                   1398:   uint16 srcdata = DATAREG(srcreg);
                   1399:   int dstreg = (ipc->opcode >> 0) & 7;
                   1400:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
                   1401:   uint16 dstdata = fetchword(dstaddr);
                   1402:   uint16 outdata = dstdata;
                   1403: 
                   1404:   outdata|= srcdata;
                   1405:   storeword(dstaddr, outdata);
                   1406:   PC+= 4;
                   1407: }
                   1408: 
                   1409: void cpu_op_1107b(t_ipc *ipc) /* OR */ {
                   1410:   /* mask f1f8, bits 8168, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */
                   1411:   int srcreg = (ipc->opcode >> 9) & 7;
                   1412:   uint16 srcdata = DATAREG(srcreg);
                   1413:   int dstreg = (ipc->opcode >> 0) & 7;
                   1414:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
                   1415:   uint16 dstdata = fetchword(dstaddr);
                   1416:   uint16 outdata = dstdata;
                   1417: 
                   1418:   outdata|= srcdata;
                   1419:   storeword(dstaddr, outdata);
                   1420: 
                   1421:   NFLAG = ((sint16)outdata) < 0;
                   1422:   ZFLAG = !outdata;
                   1423:   VFLAG = 0;
                   1424:   CFLAG = 0;
                   1425:   PC+= 4;
                   1426: }
                   1427: 
                   1428: void cpu_op_1108a(t_ipc *ipc) /* OR */ {
                   1429:   /* mask f1f8, bits 8170, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */
                   1430:   int srcreg = (ipc->opcode >> 9) & 7;
                   1431:   uint16 srcdata = DATAREG(srcreg);
                   1432:   int dstreg = (ipc->opcode >> 0) & 7;
                   1433:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
                   1434:   uint16 dstdata = fetchword(dstaddr);
                   1435:   uint16 outdata = dstdata;
                   1436: 
                   1437:   outdata|= srcdata;
                   1438:   storeword(dstaddr, outdata);
                   1439:   PC+= 4;
                   1440: }
                   1441: 
                   1442: void cpu_op_1108b(t_ipc *ipc) /* OR */ {
                   1443:   /* mask f1f8, bits 8170, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 6, 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) + idxval_dst(ipc);
                   1448:   uint16 dstdata = fetchword(dstaddr);
                   1449:   uint16 outdata = dstdata;
                   1450: 
                   1451:   outdata|= srcdata;
                   1452:   storeword(dstaddr, outdata);
                   1453: 
                   1454:   NFLAG = ((sint16)outdata) < 0;
                   1455:   ZFLAG = !outdata;
                   1456:   VFLAG = 0;
                   1457:   CFLAG = 0;
                   1458:   PC+= 4;
                   1459: }
                   1460: 
                   1461: void cpu_op_1109a(t_ipc *ipc) /* OR */ {
                   1462:   /* mask f1ff, bits 8178, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */
                   1463:   int srcreg = (ipc->opcode >> 9) & 7;
                   1464:   uint16 srcdata = DATAREG(srcreg);
                   1465:   uint32 dstaddr = ipc->dst;
                   1466:   uint16 dstdata = fetchword(dstaddr);
                   1467:   uint16 outdata = dstdata;
                   1468: 
                   1469:   outdata|= srcdata;
                   1470:   storeword(dstaddr, outdata);
                   1471:   PC+= 4;
                   1472: }
                   1473: 
                   1474: void cpu_op_1109b(t_ipc *ipc) /* OR */ {
                   1475:   /* mask f1ff, bits 8178, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */
                   1476:   int srcreg = (ipc->opcode >> 9) & 7;
                   1477:   uint16 srcdata = DATAREG(srcreg);
                   1478:   uint32 dstaddr = ipc->dst;
                   1479:   uint16 dstdata = fetchword(dstaddr);
                   1480:   uint16 outdata = dstdata;
                   1481: 
                   1482:   outdata|= srcdata;
                   1483:   storeword(dstaddr, outdata);
                   1484: 
                   1485:   NFLAG = ((sint16)outdata) < 0;
                   1486:   ZFLAG = !outdata;
                   1487:   VFLAG = 0;
                   1488:   CFLAG = 0;
                   1489:   PC+= 4;
                   1490: }
                   1491: 
                   1492: void cpu_op_1110a(t_ipc *ipc) /* OR */ {
                   1493:   /* mask f1ff, bits 8179, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */
                   1494:   int srcreg = (ipc->opcode >> 9) & 7;
                   1495:   uint16 srcdata = DATAREG(srcreg);
                   1496:   uint32 dstaddr = ipc->dst;
                   1497:   uint16 dstdata = fetchword(dstaddr);
                   1498:   uint16 outdata = dstdata;
                   1499: 
                   1500:   outdata|= srcdata;
                   1501:   storeword(dstaddr, outdata);
                   1502:   PC+= 6;
                   1503: }
                   1504: 
                   1505: void cpu_op_1110b(t_ipc *ipc) /* OR */ {
                   1506:   /* mask f1ff, bits 8179, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */
                   1507:   int srcreg = (ipc->opcode >> 9) & 7;
                   1508:   uint16 srcdata = DATAREG(srcreg);
                   1509:   uint32 dstaddr = ipc->dst;
                   1510:   uint16 dstdata = fetchword(dstaddr);
                   1511:   uint16 outdata = dstdata;
                   1512: 
                   1513:   outdata|= srcdata;
                   1514:   storeword(dstaddr, outdata);
                   1515: 
                   1516:   NFLAG = ((sint16)outdata) < 0;
                   1517:   ZFLAG = !outdata;
                   1518:   VFLAG = 0;
                   1519:   CFLAG = 0;
                   1520:   PC+= 6;
                   1521: }
                   1522: 
                   1523: void cpu_op_1111a(t_ipc *ipc) /* OR */ {
                   1524:   /* mask f1f8, bits 8190, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */
                   1525:   int srcreg = (ipc->opcode >> 9) & 7;
                   1526:   uint32 srcdata = DATAREG(srcreg);
                   1527:   int dstreg = (ipc->opcode >> 0) & 7;
                   1528:   uint32 dstaddr = ADDRREG(dstreg);
                   1529:   uint32 dstdata = fetchlong(dstaddr);
                   1530:   uint32 outdata = dstdata;
                   1531: 
                   1532:   outdata|= srcdata;
                   1533:   storelong(dstaddr, outdata);
                   1534:   PC+= 2;
                   1535: }
                   1536: 
                   1537: void cpu_op_1111b(t_ipc *ipc) /* OR */ {
                   1538:   /* mask f1f8, bits 8190, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 2, sbitpos 9, dbitpos 0, immvalue 0 */
                   1539:   int srcreg = (ipc->opcode >> 9) & 7;
                   1540:   uint32 srcdata = DATAREG(srcreg);
                   1541:   int dstreg = (ipc->opcode >> 0) & 7;
                   1542:   uint32 dstaddr = ADDRREG(dstreg);
                   1543:   uint32 dstdata = fetchlong(dstaddr);
                   1544:   uint32 outdata = dstdata;
                   1545: 
                   1546:   outdata|= srcdata;
                   1547:   storelong(dstaddr, outdata);
                   1548: 
                   1549:   NFLAG = ((sint32)outdata) < 0;
                   1550:   ZFLAG = !outdata;
                   1551:   VFLAG = 0;
                   1552:   CFLAG = 0;
                   1553:   PC+= 2;
                   1554: }
                   1555: 
                   1556: void cpu_op_1112a(t_ipc *ipc) /* OR */ {
                   1557:   /* mask f1f8, bits 8198, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */
                   1558:   int srcreg = (ipc->opcode >> 9) & 7;
                   1559:   uint32 srcdata = DATAREG(srcreg);
                   1560:   int dstreg = (ipc->opcode >> 0) & 7;
                   1561:   uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4);
                   1562:   uint32 dstdata = fetchlong(dstaddr);
                   1563:   uint32 outdata = dstdata;
                   1564: 
                   1565:   outdata|= srcdata;
                   1566:   storelong(dstaddr, outdata);
                   1567:   PC+= 2;
                   1568: }
                   1569: 
                   1570: void cpu_op_1112b(t_ipc *ipc) /* OR */ {
                   1571:   /* mask f1f8, bits 8198, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 3, sbitpos 9, dbitpos 0, immvalue 0 */
                   1572:   int srcreg = (ipc->opcode >> 9) & 7;
                   1573:   uint32 srcdata = DATAREG(srcreg);
                   1574:   int dstreg = (ipc->opcode >> 0) & 7;
                   1575:   uint32 dstaddr = (ADDRREG(dstreg)+=4, ADDRREG(dstreg)-4);
                   1576:   uint32 dstdata = fetchlong(dstaddr);
                   1577:   uint32 outdata = dstdata;
                   1578: 
                   1579:   outdata|= srcdata;
                   1580:   storelong(dstaddr, outdata);
                   1581: 
                   1582:   NFLAG = ((sint32)outdata) < 0;
                   1583:   ZFLAG = !outdata;
                   1584:   VFLAG = 0;
                   1585:   CFLAG = 0;
                   1586:   PC+= 2;
                   1587: }
                   1588: 
                   1589: void cpu_op_1113a(t_ipc *ipc) /* OR */ {
                   1590:   /* mask f1f8, bits 81a0, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */
                   1591:   int srcreg = (ipc->opcode >> 9) & 7;
                   1592:   uint32 srcdata = DATAREG(srcreg);
                   1593:   int dstreg = (ipc->opcode >> 0) & 7;
                   1594:   uint32 dstaddr = ADDRREG(dstreg)-=4;
                   1595:   uint32 dstdata = fetchlong(dstaddr);
                   1596:   uint32 outdata = dstdata;
                   1597: 
                   1598:   outdata|= srcdata;
                   1599:   storelong(dstaddr, outdata);
                   1600:   PC+= 2;
                   1601: }
                   1602: 
                   1603: void cpu_op_1113b(t_ipc *ipc) /* OR */ {
                   1604:   /* mask f1f8, bits 81a0, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 4, sbitpos 9, dbitpos 0, immvalue 0 */
                   1605:   int srcreg = (ipc->opcode >> 9) & 7;
                   1606:   uint32 srcdata = DATAREG(srcreg);
                   1607:   int dstreg = (ipc->opcode >> 0) & 7;
                   1608:   uint32 dstaddr = ADDRREG(dstreg)-=4;
                   1609:   uint32 dstdata = fetchlong(dstaddr);
                   1610:   uint32 outdata = dstdata;
                   1611: 
                   1612:   outdata|= srcdata;
                   1613:   storelong(dstaddr, outdata);
                   1614: 
                   1615:   NFLAG = ((sint32)outdata) < 0;
                   1616:   ZFLAG = !outdata;
                   1617:   VFLAG = 0;
                   1618:   CFLAG = 0;
                   1619:   PC+= 2;
                   1620: }
                   1621: 
                   1622: void cpu_op_1114a(t_ipc *ipc) /* OR */ {
                   1623:   /* mask f1f8, bits 81a8, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */
                   1624:   int srcreg = (ipc->opcode >> 9) & 7;
                   1625:   uint32 srcdata = DATAREG(srcreg);
                   1626:   int dstreg = (ipc->opcode >> 0) & 7;
                   1627:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
                   1628:   uint32 dstdata = fetchlong(dstaddr);
                   1629:   uint32 outdata = dstdata;
                   1630: 
                   1631:   outdata|= srcdata;
                   1632:   storelong(dstaddr, outdata);
                   1633:   PC+= 4;
                   1634: }
                   1635: 
                   1636: void cpu_op_1114b(t_ipc *ipc) /* OR */ {
                   1637:   /* mask f1f8, bits 81a8, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 5, sbitpos 9, dbitpos 0, immvalue 0 */
                   1638:   int srcreg = (ipc->opcode >> 9) & 7;
                   1639:   uint32 srcdata = DATAREG(srcreg);
                   1640:   int dstreg = (ipc->opcode >> 0) & 7;
                   1641:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + (sint32)(sint16)ipc->dst;
                   1642:   uint32 dstdata = fetchlong(dstaddr);
                   1643:   uint32 outdata = dstdata;
                   1644: 
                   1645:   outdata|= srcdata;
                   1646:   storelong(dstaddr, outdata);
                   1647: 
                   1648:   NFLAG = ((sint32)outdata) < 0;
                   1649:   ZFLAG = !outdata;
                   1650:   VFLAG = 0;
                   1651:   CFLAG = 0;
                   1652:   PC+= 4;
                   1653: }
                   1654: 
                   1655: void cpu_op_1115a(t_ipc *ipc) /* OR */ {
                   1656:   /* mask f1f8, bits 81b0, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */
                   1657:   int srcreg = (ipc->opcode >> 9) & 7;
                   1658:   uint32 srcdata = DATAREG(srcreg);
                   1659:   int dstreg = (ipc->opcode >> 0) & 7;
                   1660:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
                   1661:   uint32 dstdata = fetchlong(dstaddr);
                   1662:   uint32 outdata = dstdata;
                   1663: 
                   1664:   outdata|= srcdata;
                   1665:   storelong(dstaddr, outdata);
                   1666:   PC+= 4;
                   1667: }
                   1668: 
                   1669: void cpu_op_1115b(t_ipc *ipc) /* OR */ {
                   1670:   /* mask f1f8, bits 81b0, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 6, sbitpos 9, dbitpos 0, immvalue 0 */
                   1671:   int srcreg = (ipc->opcode >> 9) & 7;
                   1672:   uint32 srcdata = DATAREG(srcreg);
                   1673:   int dstreg = (ipc->opcode >> 0) & 7;
                   1674:   uint32 dstaddr = (sint32)ADDRREG(dstreg) + idxval_dst(ipc);
                   1675:   uint32 dstdata = fetchlong(dstaddr);
                   1676:   uint32 outdata = dstdata;
                   1677: 
                   1678:   outdata|= srcdata;
                   1679:   storelong(dstaddr, outdata);
                   1680: 
                   1681:   NFLAG = ((sint32)outdata) < 0;
                   1682:   ZFLAG = !outdata;
                   1683:   VFLAG = 0;
                   1684:   CFLAG = 0;
                   1685:   PC+= 4;
                   1686: }
                   1687: 
                   1688: void cpu_op_1116a(t_ipc *ipc) /* OR */ {
                   1689:   /* mask f1ff, bits 81b8, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */
                   1690:   int srcreg = (ipc->opcode >> 9) & 7;
                   1691:   uint32 srcdata = DATAREG(srcreg);
                   1692:   uint32 dstaddr = ipc->dst;
                   1693:   uint32 dstdata = fetchlong(dstaddr);
                   1694:   uint32 outdata = dstdata;
                   1695: 
                   1696:   outdata|= srcdata;
                   1697:   storelong(dstaddr, outdata);
                   1698:   PC+= 4;
                   1699: }
                   1700: 
                   1701: void cpu_op_1116b(t_ipc *ipc) /* OR */ {
                   1702:   /* mask f1ff, bits 81b8, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 7, sbitpos 9, dbitpos 0, immvalue 0 */
                   1703:   int srcreg = (ipc->opcode >> 9) & 7;
                   1704:   uint32 srcdata = DATAREG(srcreg);
                   1705:   uint32 dstaddr = ipc->dst;
                   1706:   uint32 dstdata = fetchlong(dstaddr);
                   1707:   uint32 outdata = dstdata;
                   1708: 
                   1709:   outdata|= srcdata;
                   1710:   storelong(dstaddr, outdata);
                   1711: 
                   1712:   NFLAG = ((sint32)outdata) < 0;
                   1713:   ZFLAG = !outdata;
                   1714:   VFLAG = 0;
                   1715:   CFLAG = 0;
                   1716:   PC+= 4;
                   1717: }
                   1718: 
                   1719: void cpu_op_1117a(t_ipc *ipc) /* OR */ {
                   1720:   /* mask f1ff, bits 81b9, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */
                   1721:   int srcreg = (ipc->opcode >> 9) & 7;
                   1722:   uint32 srcdata = DATAREG(srcreg);
                   1723:   uint32 dstaddr = ipc->dst;
                   1724:   uint32 dstdata = fetchlong(dstaddr);
                   1725:   uint32 outdata = dstdata;
                   1726: 
                   1727:   outdata|= srcdata;
                   1728:   storelong(dstaddr, outdata);
                   1729:   PC+= 6;
                   1730: }
                   1731: 
                   1732: void cpu_op_1117b(t_ipc *ipc) /* OR */ {
                   1733:   /* mask f1ff, bits 81b9, mnemonic 1, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 3, stype 0, dtype 8, sbitpos 9, dbitpos 0, immvalue 0 */
                   1734:   int srcreg = (ipc->opcode >> 9) & 7;
                   1735:   uint32 srcdata = DATAREG(srcreg);
                   1736:   uint32 dstaddr = ipc->dst;
                   1737:   uint32 dstdata = fetchlong(dstaddr);
                   1738:   uint32 outdata = dstdata;
                   1739: 
                   1740:   outdata|= srcdata;
                   1741:   storelong(dstaddr, outdata);
                   1742: 
                   1743:   NFLAG = ((sint32)outdata) < 0;
                   1744:   ZFLAG = !outdata;
                   1745:   VFLAG = 0;
                   1746:   CFLAG = 0;
                   1747:   PC+= 6;
                   1748: }
                   1749: 
                   1750: void cpu_op_1118a(t_ipc *ipc) /* DIVU */ {
                   1751:   /* mask f1f8, bits 80c0, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1752:   int srcreg = (ipc->opcode >> 0) & 7;
                   1753:   uint16 srcdata = DATAREG(srcreg);
                   1754:   int dstreg = (ipc->opcode >> 9) & 7;
                   1755:   uint32 dstdata = DATAREG(dstreg);
                   1756:   uint32 quotient;
                   1757: 
                   1758:   if (srcdata == 0) {
1.1.1.2 ! root     1759:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     1760:     return;
                   1761:   }
                   1762:   quotient = dstdata / srcdata;
                   1763:   if ((quotient & 0xffff0000) == 0) {
                   1764:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   1765:   }
                   1766:   PC+= 2;
                   1767: }
                   1768: 
                   1769: void cpu_op_1118b(t_ipc *ipc) /* DIVU */ {
                   1770:   /* mask f1f8, bits 80c0, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1771:   int srcreg = (ipc->opcode >> 0) & 7;
                   1772:   uint16 srcdata = DATAREG(srcreg);
                   1773:   int dstreg = (ipc->opcode >> 9) & 7;
                   1774:   uint32 dstdata = DATAREG(dstreg);
                   1775:   uint32 quotient;
                   1776: 
                   1777:   if (srcdata == 0) {
1.1.1.2 ! root     1778:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     1779:     return;
                   1780:   }
                   1781:   quotient = dstdata / srcdata;
                   1782:   if ((quotient & 0xffff0000) == 0) {
                   1783:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   1784:     VFLAG = 0;
                   1785:     NFLAG = ((sint16)quotient) < 0;
                   1786:   ZFLAG = !((uint16)quotient);
                   1787:   } else {
                   1788:     VFLAG = 1;
                   1789:     NFLAG = 1;
                   1790:   }
                   1791:   CFLAG = 0;
                   1792:   PC+= 2;
                   1793: }
                   1794: 
                   1795: void cpu_op_1119a(t_ipc *ipc) /* DIVU */ {
                   1796:   /* mask f1f8, bits 80d0, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1797:   int srcreg = (ipc->opcode >> 0) & 7;
                   1798:   uint32 srcaddr = ADDRREG(srcreg);
                   1799:   uint16 srcdata = fetchword(srcaddr);
                   1800:   int dstreg = (ipc->opcode >> 9) & 7;
                   1801:   uint32 dstdata = DATAREG(dstreg);
                   1802:   uint32 quotient;
                   1803: 
                   1804:   if (srcdata == 0) {
1.1.1.2 ! root     1805:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     1806:     return;
                   1807:   }
                   1808:   quotient = dstdata / srcdata;
                   1809:   if ((quotient & 0xffff0000) == 0) {
                   1810:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   1811:   }
                   1812:   PC+= 2;
                   1813: }
                   1814: 
                   1815: void cpu_op_1119b(t_ipc *ipc) /* DIVU */ {
                   1816:   /* mask f1f8, bits 80d0, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1817:   int srcreg = (ipc->opcode >> 0) & 7;
                   1818:   uint32 srcaddr = ADDRREG(srcreg);
                   1819:   uint16 srcdata = fetchword(srcaddr);
                   1820:   int dstreg = (ipc->opcode >> 9) & 7;
                   1821:   uint32 dstdata = DATAREG(dstreg);
                   1822:   uint32 quotient;
                   1823: 
                   1824:   if (srcdata == 0) {
1.1.1.2 ! root     1825:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     1826:     return;
                   1827:   }
                   1828:   quotient = dstdata / srcdata;
                   1829:   if ((quotient & 0xffff0000) == 0) {
                   1830:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   1831:     VFLAG = 0;
                   1832:     NFLAG = ((sint16)quotient) < 0;
                   1833:   ZFLAG = !((uint16)quotient);
                   1834:   } else {
                   1835:     VFLAG = 1;
                   1836:     NFLAG = 1;
                   1837:   }
                   1838:   CFLAG = 0;
                   1839:   PC+= 2;
                   1840: }
                   1841: 
                   1842: void cpu_op_1120a(t_ipc *ipc) /* DIVU */ {
                   1843:   /* mask f1f8, bits 80d8, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1844:   int srcreg = (ipc->opcode >> 0) & 7;
                   1845:   uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
                   1846:   uint16 srcdata = fetchword(srcaddr);
                   1847:   int dstreg = (ipc->opcode >> 9) & 7;
                   1848:   uint32 dstdata = DATAREG(dstreg);
                   1849:   uint32 quotient;
                   1850: 
                   1851:   if (srcdata == 0) {
1.1.1.2 ! root     1852:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     1853:     return;
                   1854:   }
                   1855:   quotient = dstdata / srcdata;
                   1856:   if ((quotient & 0xffff0000) == 0) {
                   1857:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   1858:   }
                   1859:   PC+= 2;
                   1860: }
                   1861: 
                   1862: void cpu_op_1120b(t_ipc *ipc) /* DIVU */ {
                   1863:   /* mask f1f8, bits 80d8, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1864:   int srcreg = (ipc->opcode >> 0) & 7;
                   1865:   uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
                   1866:   uint16 srcdata = fetchword(srcaddr);
                   1867:   int dstreg = (ipc->opcode >> 9) & 7;
                   1868:   uint32 dstdata = DATAREG(dstreg);
                   1869:   uint32 quotient;
                   1870: 
                   1871:   if (srcdata == 0) {
1.1.1.2 ! root     1872:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     1873:     return;
                   1874:   }
                   1875:   quotient = dstdata / srcdata;
                   1876:   if ((quotient & 0xffff0000) == 0) {
                   1877:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   1878:     VFLAG = 0;
                   1879:     NFLAG = ((sint16)quotient) < 0;
                   1880:   ZFLAG = !((uint16)quotient);
                   1881:   } else {
                   1882:     VFLAG = 1;
                   1883:     NFLAG = 1;
                   1884:   }
                   1885:   CFLAG = 0;
                   1886:   PC+= 2;
                   1887: }
                   1888: 
                   1889: void cpu_op_1121a(t_ipc *ipc) /* DIVU */ {
                   1890:   /* mask f1f8, bits 80e0, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1891:   int srcreg = (ipc->opcode >> 0) & 7;
                   1892:   uint32 srcaddr = ADDRREG(srcreg)-=2;
                   1893:   uint16 srcdata = fetchword(srcaddr);
                   1894:   int dstreg = (ipc->opcode >> 9) & 7;
                   1895:   uint32 dstdata = DATAREG(dstreg);
                   1896:   uint32 quotient;
                   1897: 
                   1898:   if (srcdata == 0) {
1.1.1.2 ! root     1899:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     1900:     return;
                   1901:   }
                   1902:   quotient = dstdata / srcdata;
                   1903:   if ((quotient & 0xffff0000) == 0) {
                   1904:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   1905:   }
                   1906:   PC+= 2;
                   1907: }
                   1908: 
                   1909: void cpu_op_1121b(t_ipc *ipc) /* DIVU */ {
                   1910:   /* mask f1f8, bits 80e0, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1911:   int srcreg = (ipc->opcode >> 0) & 7;
                   1912:   uint32 srcaddr = ADDRREG(srcreg)-=2;
                   1913:   uint16 srcdata = fetchword(srcaddr);
                   1914:   int dstreg = (ipc->opcode >> 9) & 7;
                   1915:   uint32 dstdata = DATAREG(dstreg);
                   1916:   uint32 quotient;
                   1917: 
                   1918:   if (srcdata == 0) {
1.1.1.2 ! root     1919:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     1920:     return;
                   1921:   }
                   1922:   quotient = dstdata / srcdata;
                   1923:   if ((quotient & 0xffff0000) == 0) {
                   1924:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   1925:     VFLAG = 0;
                   1926:     NFLAG = ((sint16)quotient) < 0;
                   1927:   ZFLAG = !((uint16)quotient);
                   1928:   } else {
                   1929:     VFLAG = 1;
                   1930:     NFLAG = 1;
                   1931:   }
                   1932:   CFLAG = 0;
                   1933:   PC+= 2;
                   1934: }
                   1935: 
                   1936: void cpu_op_1122a(t_ipc *ipc) /* DIVU */ {
                   1937:   /* mask f1f8, bits 80e8, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1938:   int srcreg = (ipc->opcode >> 0) & 7;
                   1939:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                   1940:   uint16 srcdata = fetchword(srcaddr);
                   1941:   int dstreg = (ipc->opcode >> 9) & 7;
                   1942:   uint32 dstdata = DATAREG(dstreg);
                   1943:   uint32 quotient;
                   1944: 
                   1945:   if (srcdata == 0) {
1.1.1.2 ! root     1946:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     1947:     return;
                   1948:   }
                   1949:   quotient = dstdata / srcdata;
                   1950:   if ((quotient & 0xffff0000) == 0) {
                   1951:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   1952:   }
                   1953:   PC+= 4;
                   1954: }
                   1955: 
                   1956: void cpu_op_1122b(t_ipc *ipc) /* DIVU */ {
                   1957:   /* mask f1f8, bits 80e8, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1958:   int srcreg = (ipc->opcode >> 0) & 7;
                   1959:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                   1960:   uint16 srcdata = fetchword(srcaddr);
                   1961:   int dstreg = (ipc->opcode >> 9) & 7;
                   1962:   uint32 dstdata = DATAREG(dstreg);
                   1963:   uint32 quotient;
                   1964: 
                   1965:   if (srcdata == 0) {
1.1.1.2 ! root     1966:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     1967:     return;
                   1968:   }
                   1969:   quotient = dstdata / srcdata;
                   1970:   if ((quotient & 0xffff0000) == 0) {
                   1971:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   1972:     VFLAG = 0;
                   1973:     NFLAG = ((sint16)quotient) < 0;
                   1974:   ZFLAG = !((uint16)quotient);
                   1975:   } else {
                   1976:     VFLAG = 1;
                   1977:     NFLAG = 1;
                   1978:   }
                   1979:   CFLAG = 0;
                   1980:   PC+= 4;
                   1981: }
                   1982: 
                   1983: void cpu_op_1123a(t_ipc *ipc) /* DIVU */ {
                   1984:   /* mask f1f8, bits 80f0, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   1985:   int srcreg = (ipc->opcode >> 0) & 7;
                   1986:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                   1987:   uint16 srcdata = fetchword(srcaddr);
                   1988:   int dstreg = (ipc->opcode >> 9) & 7;
                   1989:   uint32 dstdata = DATAREG(dstreg);
                   1990:   uint32 quotient;
                   1991: 
                   1992:   if (srcdata == 0) {
1.1.1.2 ! root     1993:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     1994:     return;
                   1995:   }
                   1996:   quotient = dstdata / srcdata;
                   1997:   if ((quotient & 0xffff0000) == 0) {
                   1998:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   1999:   }
                   2000:   PC+= 4;
                   2001: }
                   2002: 
                   2003: void cpu_op_1123b(t_ipc *ipc) /* DIVU */ {
                   2004:   /* mask f1f8, bits 80f0, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2005:   int srcreg = (ipc->opcode >> 0) & 7;
                   2006:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                   2007:   uint16 srcdata = fetchword(srcaddr);
                   2008:   int dstreg = (ipc->opcode >> 9) & 7;
                   2009:   uint32 dstdata = DATAREG(dstreg);
                   2010:   uint32 quotient;
                   2011: 
                   2012:   if (srcdata == 0) {
1.1.1.2 ! root     2013:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2014:     return;
                   2015:   }
                   2016:   quotient = dstdata / srcdata;
                   2017:   if ((quotient & 0xffff0000) == 0) {
                   2018:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   2019:     VFLAG = 0;
                   2020:     NFLAG = ((sint16)quotient) < 0;
                   2021:   ZFLAG = !((uint16)quotient);
                   2022:   } else {
                   2023:     VFLAG = 1;
                   2024:     NFLAG = 1;
                   2025:   }
                   2026:   CFLAG = 0;
                   2027:   PC+= 4;
                   2028: }
                   2029: 
                   2030: void cpu_op_1124a(t_ipc *ipc) /* DIVU */ {
                   2031:   /* mask f1ff, bits 80f8, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2032:   uint32 srcaddr = ipc->src;
                   2033:   uint16 srcdata = fetchword(srcaddr);
                   2034:   int dstreg = (ipc->opcode >> 9) & 7;
                   2035:   uint32 dstdata = DATAREG(dstreg);
                   2036:   uint32 quotient;
                   2037: 
                   2038:   if (srcdata == 0) {
1.1.1.2 ! root     2039:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2040:     return;
                   2041:   }
                   2042:   quotient = dstdata / srcdata;
                   2043:   if ((quotient & 0xffff0000) == 0) {
                   2044:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   2045:   }
                   2046:   PC+= 4;
                   2047: }
                   2048: 
                   2049: void cpu_op_1124b(t_ipc *ipc) /* DIVU */ {
                   2050:   /* mask f1ff, bits 80f8, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2051:   uint32 srcaddr = ipc->src;
                   2052:   uint16 srcdata = fetchword(srcaddr);
                   2053:   int dstreg = (ipc->opcode >> 9) & 7;
                   2054:   uint32 dstdata = DATAREG(dstreg);
                   2055:   uint32 quotient;
                   2056: 
                   2057:   if (srcdata == 0) {
1.1.1.2 ! root     2058:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2059:     return;
                   2060:   }
                   2061:   quotient = dstdata / srcdata;
                   2062:   if ((quotient & 0xffff0000) == 0) {
                   2063:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   2064:     VFLAG = 0;
                   2065:     NFLAG = ((sint16)quotient) < 0;
                   2066:   ZFLAG = !((uint16)quotient);
                   2067:   } else {
                   2068:     VFLAG = 1;
                   2069:     NFLAG = 1;
                   2070:   }
                   2071:   CFLAG = 0;
                   2072:   PC+= 4;
                   2073: }
                   2074: 
                   2075: void cpu_op_1125a(t_ipc *ipc) /* DIVU */ {
                   2076:   /* mask f1ff, bits 80f9, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2077:   uint32 srcaddr = ipc->src;
                   2078:   uint16 srcdata = fetchword(srcaddr);
                   2079:   int dstreg = (ipc->opcode >> 9) & 7;
                   2080:   uint32 dstdata = DATAREG(dstreg);
                   2081:   uint32 quotient;
                   2082: 
                   2083:   if (srcdata == 0) {
1.1.1.2 ! root     2084:     reg68k_internal_vector(V_ZERO, PC+6);
1.1       root     2085:     return;
                   2086:   }
                   2087:   quotient = dstdata / srcdata;
                   2088:   if ((quotient & 0xffff0000) == 0) {
                   2089:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   2090:   }
                   2091:   PC+= 6;
                   2092: }
                   2093: 
                   2094: void cpu_op_1125b(t_ipc *ipc) /* DIVU */ {
                   2095:   /* mask f1ff, bits 80f9, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2096:   uint32 srcaddr = ipc->src;
                   2097:   uint16 srcdata = fetchword(srcaddr);
                   2098:   int dstreg = (ipc->opcode >> 9) & 7;
                   2099:   uint32 dstdata = DATAREG(dstreg);
                   2100:   uint32 quotient;
                   2101: 
                   2102:   if (srcdata == 0) {
1.1.1.2 ! root     2103:     reg68k_internal_vector(V_ZERO, PC+6);
1.1       root     2104:     return;
                   2105:   }
                   2106:   quotient = dstdata / srcdata;
                   2107:   if ((quotient & 0xffff0000) == 0) {
                   2108:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   2109:     VFLAG = 0;
                   2110:     NFLAG = ((sint16)quotient) < 0;
                   2111:   ZFLAG = !((uint16)quotient);
                   2112:   } else {
                   2113:     VFLAG = 1;
                   2114:     NFLAG = 1;
                   2115:   }
                   2116:   CFLAG = 0;
                   2117:   PC+= 6;
                   2118: }
                   2119: 
                   2120: void cpu_op_1126a(t_ipc *ipc) /* DIVU */ {
                   2121:   /* mask f1ff, bits 80fa, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2122:   uint32 srcaddr = ipc->src;
                   2123:   uint16 srcdata = fetchword(srcaddr);
                   2124:   int dstreg = (ipc->opcode >> 9) & 7;
                   2125:   uint32 dstdata = DATAREG(dstreg);
                   2126:   uint32 quotient;
                   2127: 
                   2128:   if (srcdata == 0) {
1.1.1.2 ! root     2129:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2130:     return;
                   2131:   }
                   2132:   quotient = dstdata / srcdata;
                   2133:   if ((quotient & 0xffff0000) == 0) {
                   2134:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   2135:   }
                   2136:   PC+= 4;
                   2137: }
                   2138: 
                   2139: void cpu_op_1126b(t_ipc *ipc) /* DIVU */ {
                   2140:   /* mask f1ff, bits 80fa, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2141:   uint32 srcaddr = ipc->src;
                   2142:   uint16 srcdata = fetchword(srcaddr);
                   2143:   int dstreg = (ipc->opcode >> 9) & 7;
                   2144:   uint32 dstdata = DATAREG(dstreg);
                   2145:   uint32 quotient;
                   2146: 
                   2147:   if (srcdata == 0) {
1.1.1.2 ! root     2148:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2149:     return;
                   2150:   }
                   2151:   quotient = dstdata / srcdata;
                   2152:   if ((quotient & 0xffff0000) == 0) {
                   2153:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   2154:     VFLAG = 0;
                   2155:     NFLAG = ((sint16)quotient) < 0;
                   2156:   ZFLAG = !((uint16)quotient);
                   2157:   } else {
                   2158:     VFLAG = 1;
                   2159:     NFLAG = 1;
                   2160:   }
                   2161:   CFLAG = 0;
                   2162:   PC+= 4;
                   2163: }
                   2164: 
                   2165: void cpu_op_1127a(t_ipc *ipc) /* DIVU */ {
                   2166:   /* mask f1ff, bits 80fb, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2167:   uint32 srcaddr = idxval_src(ipc);
                   2168:   uint16 srcdata = fetchword(srcaddr);
                   2169:   int dstreg = (ipc->opcode >> 9) & 7;
                   2170:   uint32 dstdata = DATAREG(dstreg);
                   2171:   uint32 quotient;
                   2172: 
                   2173:   if (srcdata == 0) {
1.1.1.2 ! root     2174:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2175:     return;
                   2176:   }
                   2177:   quotient = dstdata / srcdata;
                   2178:   if ((quotient & 0xffff0000) == 0) {
                   2179:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   2180:   }
                   2181:   PC+= 4;
                   2182: }
                   2183: 
                   2184: void cpu_op_1127b(t_ipc *ipc) /* DIVU */ {
                   2185:   /* mask f1ff, bits 80fb, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2186:   uint32 srcaddr = idxval_src(ipc);
                   2187:   uint16 srcdata = fetchword(srcaddr);
                   2188:   int dstreg = (ipc->opcode >> 9) & 7;
                   2189:   uint32 dstdata = DATAREG(dstreg);
                   2190:   uint32 quotient;
                   2191: 
                   2192:   if (srcdata == 0) {
1.1.1.2 ! root     2193:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2194:     return;
                   2195:   }
                   2196:   quotient = dstdata / srcdata;
                   2197:   if ((quotient & 0xffff0000) == 0) {
                   2198:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   2199:     VFLAG = 0;
                   2200:     NFLAG = ((sint16)quotient) < 0;
                   2201:   ZFLAG = !((uint16)quotient);
                   2202:   } else {
                   2203:     VFLAG = 1;
                   2204:     NFLAG = 1;
                   2205:   }
                   2206:   CFLAG = 0;
                   2207:   PC+= 4;
                   2208: }
                   2209: 
                   2210: void cpu_op_1128a(t_ipc *ipc) /* DIVU */ {
                   2211:   /* mask f1ff, bits 80fc, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2212:   uint16 srcdata = ipc->src;
                   2213:   int dstreg = (ipc->opcode >> 9) & 7;
                   2214:   uint32 dstdata = DATAREG(dstreg);
                   2215:   uint32 quotient;
                   2216: 
                   2217:   if (srcdata == 0) {
1.1.1.2 ! root     2218:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2219:     return;
                   2220:   }
                   2221:   quotient = dstdata / srcdata;
                   2222:   if ((quotient & 0xffff0000) == 0) {
                   2223:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   2224:   }
                   2225:   PC+= 4;
                   2226: }
                   2227: 
                   2228: void cpu_op_1128b(t_ipc *ipc) /* DIVU */ {
                   2229:   /* mask f1ff, bits 80fc, mnemonic 64, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2230:   uint16 srcdata = ipc->src;
                   2231:   int dstreg = (ipc->opcode >> 9) & 7;
                   2232:   uint32 dstdata = DATAREG(dstreg);
                   2233:   uint32 quotient;
                   2234: 
                   2235:   if (srcdata == 0) {
1.1.1.2 ! root     2236:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2237:     return;
                   2238:   }
                   2239:   quotient = dstdata / srcdata;
                   2240:   if ((quotient & 0xffff0000) == 0) {
                   2241:     DATAREG(dstreg) = quotient | (((uint16)(dstdata % srcdata))<<16);
                   2242:     VFLAG = 0;
                   2243:     NFLAG = ((sint16)quotient) < 0;
                   2244:   ZFLAG = !((uint16)quotient);
                   2245:   } else {
                   2246:     VFLAG = 1;
                   2247:     NFLAG = 1;
                   2248:   }
                   2249:   CFLAG = 0;
                   2250:   PC+= 4;
                   2251: }
                   2252: 
                   2253: void cpu_op_1129a(t_ipc *ipc) /* DIVS */ {
                   2254:   /* mask f1f8, bits 81c0, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2255:   int srcreg = (ipc->opcode >> 0) & 7;
                   2256:   uint16 srcdata = DATAREG(srcreg);
                   2257:   int dstreg = (ipc->opcode >> 9) & 7;
                   2258:   sint32 dstdata = DATAREG(dstreg);
                   2259:   sint32 quotient;
                   2260:   sint16 remainder;
                   2261: 
                   2262:   if (srcdata == 0) {
1.1.1.2 ! root     2263:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     2264:     return;
                   2265:   }
                   2266:   quotient = dstdata / (sint16)srcdata;
                   2267:   remainder = dstdata % (sint16)srcdata;
                   2268:   if (((quotient & 0xffff8000) == 0) ||
                   2269:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2270:     if ((quotient < 0) != (remainder < 0))
                   2271:       remainder = -remainder;
                   2272:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2273:   }
                   2274:   PC+= 2;
                   2275: }
                   2276: 
                   2277: void cpu_op_1129b(t_ipc *ipc) /* DIVS */ {
                   2278:   /* mask f1f8, bits 81c0, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2279:   int srcreg = (ipc->opcode >> 0) & 7;
                   2280:   uint16 srcdata = DATAREG(srcreg);
                   2281:   int dstreg = (ipc->opcode >> 9) & 7;
                   2282:   sint32 dstdata = DATAREG(dstreg);
                   2283:   sint32 quotient;
                   2284:   sint16 remainder;
                   2285: 
                   2286:   if (srcdata == 0) {
1.1.1.2 ! root     2287:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     2288:     return;
                   2289:   }
                   2290:   quotient = dstdata / (sint16)srcdata;
                   2291:   remainder = dstdata % (sint16)srcdata;
                   2292:   if (((quotient & 0xffff8000) == 0) ||
                   2293:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2294:     if ((quotient < 0) != (remainder < 0))
                   2295:       remainder = -remainder;
                   2296:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2297:     VFLAG = 0;
                   2298:     NFLAG = ((sint16)quotient) < 0;
                   2299:     ZFLAG = !((uint16)quotient);
                   2300:   } else {
                   2301:     VFLAG = 1;
                   2302:     NFLAG = 1;
                   2303:   }
                   2304:   CFLAG = 0;
                   2305:   PC+= 2;
                   2306: }
                   2307: 
                   2308: void cpu_op_1130a(t_ipc *ipc) /* DIVS */ {
                   2309:   /* mask f1f8, bits 81d0, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2310:   int srcreg = (ipc->opcode >> 0) & 7;
                   2311:   uint32 srcaddr = ADDRREG(srcreg);
                   2312:   uint16 srcdata = fetchword(srcaddr);
                   2313:   int dstreg = (ipc->opcode >> 9) & 7;
                   2314:   sint32 dstdata = DATAREG(dstreg);
                   2315:   sint32 quotient;
                   2316:   sint16 remainder;
                   2317: 
                   2318:   if (srcdata == 0) {
1.1.1.2 ! root     2319:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     2320:     return;
                   2321:   }
                   2322:   quotient = dstdata / (sint16)srcdata;
                   2323:   remainder = dstdata % (sint16)srcdata;
                   2324:   if (((quotient & 0xffff8000) == 0) ||
                   2325:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2326:     if ((quotient < 0) != (remainder < 0))
                   2327:       remainder = -remainder;
                   2328:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2329:   }
                   2330:   PC+= 2;
                   2331: }
                   2332: 
                   2333: void cpu_op_1130b(t_ipc *ipc) /* DIVS */ {
                   2334:   /* mask f1f8, bits 81d0, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 2, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2335:   int srcreg = (ipc->opcode >> 0) & 7;
                   2336:   uint32 srcaddr = ADDRREG(srcreg);
                   2337:   uint16 srcdata = fetchword(srcaddr);
                   2338:   int dstreg = (ipc->opcode >> 9) & 7;
                   2339:   sint32 dstdata = DATAREG(dstreg);
                   2340:   sint32 quotient;
                   2341:   sint16 remainder;
                   2342: 
                   2343:   if (srcdata == 0) {
1.1.1.2 ! root     2344:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     2345:     return;
                   2346:   }
                   2347:   quotient = dstdata / (sint16)srcdata;
                   2348:   remainder = dstdata % (sint16)srcdata;
                   2349:   if (((quotient & 0xffff8000) == 0) ||
                   2350:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2351:     if ((quotient < 0) != (remainder < 0))
                   2352:       remainder = -remainder;
                   2353:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2354:     VFLAG = 0;
                   2355:     NFLAG = ((sint16)quotient) < 0;
                   2356:     ZFLAG = !((uint16)quotient);
                   2357:   } else {
                   2358:     VFLAG = 1;
                   2359:     NFLAG = 1;
                   2360:   }
                   2361:   CFLAG = 0;
                   2362:   PC+= 2;
                   2363: }
                   2364: 
                   2365: void cpu_op_1131a(t_ipc *ipc) /* DIVS */ {
                   2366:   /* mask f1f8, bits 81d8, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2367:   int srcreg = (ipc->opcode >> 0) & 7;
                   2368:   uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
                   2369:   uint16 srcdata = fetchword(srcaddr);
                   2370:   int dstreg = (ipc->opcode >> 9) & 7;
                   2371:   sint32 dstdata = DATAREG(dstreg);
                   2372:   sint32 quotient;
                   2373:   sint16 remainder;
                   2374: 
                   2375:   if (srcdata == 0) {
1.1.1.2 ! root     2376:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     2377:     return;
                   2378:   }
                   2379:   quotient = dstdata / (sint16)srcdata;
                   2380:   remainder = dstdata % (sint16)srcdata;
                   2381:   if (((quotient & 0xffff8000) == 0) ||
                   2382:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2383:     if ((quotient < 0) != (remainder < 0))
                   2384:       remainder = -remainder;
                   2385:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2386:   }
                   2387:   PC+= 2;
                   2388: }
                   2389: 
                   2390: void cpu_op_1131b(t_ipc *ipc) /* DIVS */ {
                   2391:   /* mask f1f8, bits 81d8, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 3, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2392:   int srcreg = (ipc->opcode >> 0) & 7;
                   2393:   uint32 srcaddr = (ADDRREG(srcreg)+=2, ADDRREG(srcreg)-2);
                   2394:   uint16 srcdata = fetchword(srcaddr);
                   2395:   int dstreg = (ipc->opcode >> 9) & 7;
                   2396:   sint32 dstdata = DATAREG(dstreg);
                   2397:   sint32 quotient;
                   2398:   sint16 remainder;
                   2399: 
                   2400:   if (srcdata == 0) {
1.1.1.2 ! root     2401:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     2402:     return;
                   2403:   }
                   2404:   quotient = dstdata / (sint16)srcdata;
                   2405:   remainder = dstdata % (sint16)srcdata;
                   2406:   if (((quotient & 0xffff8000) == 0) ||
                   2407:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2408:     if ((quotient < 0) != (remainder < 0))
                   2409:       remainder = -remainder;
                   2410:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2411:     VFLAG = 0;
                   2412:     NFLAG = ((sint16)quotient) < 0;
                   2413:     ZFLAG = !((uint16)quotient);
                   2414:   } else {
                   2415:     VFLAG = 1;
                   2416:     NFLAG = 1;
                   2417:   }
                   2418:   CFLAG = 0;
                   2419:   PC+= 2;
                   2420: }
                   2421: 
                   2422: void cpu_op_1132a(t_ipc *ipc) /* DIVS */ {
                   2423:   /* mask f1f8, bits 81e0, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2424:   int srcreg = (ipc->opcode >> 0) & 7;
                   2425:   uint32 srcaddr = ADDRREG(srcreg)-=2;
                   2426:   uint16 srcdata = fetchword(srcaddr);
                   2427:   int dstreg = (ipc->opcode >> 9) & 7;
                   2428:   sint32 dstdata = DATAREG(dstreg);
                   2429:   sint32 quotient;
                   2430:   sint16 remainder;
                   2431: 
                   2432:   if (srcdata == 0) {
1.1.1.2 ! root     2433:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     2434:     return;
                   2435:   }
                   2436:   quotient = dstdata / (sint16)srcdata;
                   2437:   remainder = dstdata % (sint16)srcdata;
                   2438:   if (((quotient & 0xffff8000) == 0) ||
                   2439:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2440:     if ((quotient < 0) != (remainder < 0))
                   2441:       remainder = -remainder;
                   2442:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2443:   }
                   2444:   PC+= 2;
                   2445: }
                   2446: 
                   2447: void cpu_op_1132b(t_ipc *ipc) /* DIVS */ {
                   2448:   /* mask f1f8, bits 81e0, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 4, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2449:   int srcreg = (ipc->opcode >> 0) & 7;
                   2450:   uint32 srcaddr = ADDRREG(srcreg)-=2;
                   2451:   uint16 srcdata = fetchword(srcaddr);
                   2452:   int dstreg = (ipc->opcode >> 9) & 7;
                   2453:   sint32 dstdata = DATAREG(dstreg);
                   2454:   sint32 quotient;
                   2455:   sint16 remainder;
                   2456: 
                   2457:   if (srcdata == 0) {
1.1.1.2 ! root     2458:     reg68k_internal_vector(V_ZERO, PC+2);
1.1       root     2459:     return;
                   2460:   }
                   2461:   quotient = dstdata / (sint16)srcdata;
                   2462:   remainder = dstdata % (sint16)srcdata;
                   2463:   if (((quotient & 0xffff8000) == 0) ||
                   2464:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2465:     if ((quotient < 0) != (remainder < 0))
                   2466:       remainder = -remainder;
                   2467:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2468:     VFLAG = 0;
                   2469:     NFLAG = ((sint16)quotient) < 0;
                   2470:     ZFLAG = !((uint16)quotient);
                   2471:   } else {
                   2472:     VFLAG = 1;
                   2473:     NFLAG = 1;
                   2474:   }
                   2475:   CFLAG = 0;
                   2476:   PC+= 2;
                   2477: }
                   2478: 
                   2479: void cpu_op_1133a(t_ipc *ipc) /* DIVS */ {
                   2480:   /* mask f1f8, bits 81e8, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2481:   int srcreg = (ipc->opcode >> 0) & 7;
                   2482:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                   2483:   uint16 srcdata = fetchword(srcaddr);
                   2484:   int dstreg = (ipc->opcode >> 9) & 7;
                   2485:   sint32 dstdata = DATAREG(dstreg);
                   2486:   sint32 quotient;
                   2487:   sint16 remainder;
                   2488: 
                   2489:   if (srcdata == 0) {
1.1.1.2 ! root     2490:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2491:     return;
                   2492:   }
                   2493:   quotient = dstdata / (sint16)srcdata;
                   2494:   remainder = dstdata % (sint16)srcdata;
                   2495:   if (((quotient & 0xffff8000) == 0) ||
                   2496:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2497:     if ((quotient < 0) != (remainder < 0))
                   2498:       remainder = -remainder;
                   2499:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2500:   }
                   2501:   PC+= 4;
                   2502: }
                   2503: 
                   2504: void cpu_op_1133b(t_ipc *ipc) /* DIVS */ {
                   2505:   /* mask f1f8, bits 81e8, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 5, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2506:   int srcreg = (ipc->opcode >> 0) & 7;
                   2507:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + (sint32)(sint16)ipc->src;
                   2508:   uint16 srcdata = fetchword(srcaddr);
                   2509:   int dstreg = (ipc->opcode >> 9) & 7;
                   2510:   sint32 dstdata = DATAREG(dstreg);
                   2511:   sint32 quotient;
                   2512:   sint16 remainder;
                   2513: 
                   2514:   if (srcdata == 0) {
1.1.1.2 ! root     2515:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2516:     return;
                   2517:   }
                   2518:   quotient = dstdata / (sint16)srcdata;
                   2519:   remainder = dstdata % (sint16)srcdata;
                   2520:   if (((quotient & 0xffff8000) == 0) ||
                   2521:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2522:     if ((quotient < 0) != (remainder < 0))
                   2523:       remainder = -remainder;
                   2524:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2525:     VFLAG = 0;
                   2526:     NFLAG = ((sint16)quotient) < 0;
                   2527:     ZFLAG = !((uint16)quotient);
                   2528:   } else {
                   2529:     VFLAG = 1;
                   2530:     NFLAG = 1;
                   2531:   }
                   2532:   CFLAG = 0;
                   2533:   PC+= 4;
                   2534: }
                   2535: 
                   2536: void cpu_op_1134a(t_ipc *ipc) /* DIVS */ {
                   2537:   /* mask f1f8, bits 81f0, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2538:   int srcreg = (ipc->opcode >> 0) & 7;
                   2539:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                   2540:   uint16 srcdata = fetchword(srcaddr);
                   2541:   int dstreg = (ipc->opcode >> 9) & 7;
                   2542:   sint32 dstdata = DATAREG(dstreg);
                   2543:   sint32 quotient;
                   2544:   sint16 remainder;
                   2545: 
                   2546:   if (srcdata == 0) {
1.1.1.2 ! root     2547:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2548:     return;
                   2549:   }
                   2550:   quotient = dstdata / (sint16)srcdata;
                   2551:   remainder = dstdata % (sint16)srcdata;
                   2552:   if (((quotient & 0xffff8000) == 0) ||
                   2553:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2554:     if ((quotient < 0) != (remainder < 0))
                   2555:       remainder = -remainder;
                   2556:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2557:   }
                   2558:   PC+= 4;
                   2559: }
                   2560: 
                   2561: void cpu_op_1134b(t_ipc *ipc) /* DIVS */ {
                   2562:   /* mask f1f8, bits 81f0, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 6, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2563:   int srcreg = (ipc->opcode >> 0) & 7;
                   2564:   uint32 srcaddr = (sint32)ADDRREG(srcreg) + idxval_src(ipc);
                   2565:   uint16 srcdata = fetchword(srcaddr);
                   2566:   int dstreg = (ipc->opcode >> 9) & 7;
                   2567:   sint32 dstdata = DATAREG(dstreg);
                   2568:   sint32 quotient;
                   2569:   sint16 remainder;
                   2570: 
                   2571:   if (srcdata == 0) {
1.1.1.2 ! root     2572:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2573:     return;
                   2574:   }
                   2575:   quotient = dstdata / (sint16)srcdata;
                   2576:   remainder = dstdata % (sint16)srcdata;
                   2577:   if (((quotient & 0xffff8000) == 0) ||
                   2578:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2579:     if ((quotient < 0) != (remainder < 0))
                   2580:       remainder = -remainder;
                   2581:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2582:     VFLAG = 0;
                   2583:     NFLAG = ((sint16)quotient) < 0;
                   2584:     ZFLAG = !((uint16)quotient);
                   2585:   } else {
                   2586:     VFLAG = 1;
                   2587:     NFLAG = 1;
                   2588:   }
                   2589:   CFLAG = 0;
                   2590:   PC+= 4;
                   2591: }
                   2592: 
                   2593: void cpu_op_1135a(t_ipc *ipc) /* DIVS */ {
                   2594:   /* mask f1ff, bits 81f8, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2595:   uint32 srcaddr = ipc->src;
                   2596:   uint16 srcdata = fetchword(srcaddr);
                   2597:   int dstreg = (ipc->opcode >> 9) & 7;
                   2598:   sint32 dstdata = DATAREG(dstreg);
                   2599:   sint32 quotient;
                   2600:   sint16 remainder;
                   2601: 
                   2602:   if (srcdata == 0) {
1.1.1.2 ! root     2603:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2604:     return;
                   2605:   }
                   2606:   quotient = dstdata / (sint16)srcdata;
                   2607:   remainder = dstdata % (sint16)srcdata;
                   2608:   if (((quotient & 0xffff8000) == 0) ||
                   2609:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2610:     if ((quotient < 0) != (remainder < 0))
                   2611:       remainder = -remainder;
                   2612:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2613:   }
                   2614:   PC+= 4;
                   2615: }
                   2616: 
                   2617: void cpu_op_1135b(t_ipc *ipc) /* DIVS */ {
                   2618:   /* mask f1ff, bits 81f8, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 7, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2619:   uint32 srcaddr = ipc->src;
                   2620:   uint16 srcdata = fetchword(srcaddr);
                   2621:   int dstreg = (ipc->opcode >> 9) & 7;
                   2622:   sint32 dstdata = DATAREG(dstreg);
                   2623:   sint32 quotient;
                   2624:   sint16 remainder;
                   2625: 
                   2626:   if (srcdata == 0) {
1.1.1.2 ! root     2627:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2628:     return;
                   2629:   }
                   2630:   quotient = dstdata / (sint16)srcdata;
                   2631:   remainder = dstdata % (sint16)srcdata;
                   2632:   if (((quotient & 0xffff8000) == 0) ||
                   2633:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2634:     if ((quotient < 0) != (remainder < 0))
                   2635:       remainder = -remainder;
                   2636:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2637:     VFLAG = 0;
                   2638:     NFLAG = ((sint16)quotient) < 0;
                   2639:     ZFLAG = !((uint16)quotient);
                   2640:   } else {
                   2641:     VFLAG = 1;
                   2642:     NFLAG = 1;
                   2643:   }
                   2644:   CFLAG = 0;
                   2645:   PC+= 4;
                   2646: }
                   2647: 
                   2648: void cpu_op_1136a(t_ipc *ipc) /* DIVS */ {
                   2649:   /* mask f1ff, bits 81f9, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2650:   uint32 srcaddr = ipc->src;
                   2651:   uint16 srcdata = fetchword(srcaddr);
                   2652:   int dstreg = (ipc->opcode >> 9) & 7;
                   2653:   sint32 dstdata = DATAREG(dstreg);
                   2654:   sint32 quotient;
                   2655:   sint16 remainder;
                   2656: 
                   2657:   if (srcdata == 0) {
1.1.1.2 ! root     2658:     reg68k_internal_vector(V_ZERO, PC+6);
1.1       root     2659:     return;
                   2660:   }
                   2661:   quotient = dstdata / (sint16)srcdata;
                   2662:   remainder = dstdata % (sint16)srcdata;
                   2663:   if (((quotient & 0xffff8000) == 0) ||
                   2664:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2665:     if ((quotient < 0) != (remainder < 0))
                   2666:       remainder = -remainder;
                   2667:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2668:   }
                   2669:   PC+= 6;
                   2670: }
                   2671: 
                   2672: void cpu_op_1136b(t_ipc *ipc) /* DIVS */ {
                   2673:   /* mask f1ff, bits 81f9, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 8, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2674:   uint32 srcaddr = ipc->src;
                   2675:   uint16 srcdata = fetchword(srcaddr);
                   2676:   int dstreg = (ipc->opcode >> 9) & 7;
                   2677:   sint32 dstdata = DATAREG(dstreg);
                   2678:   sint32 quotient;
                   2679:   sint16 remainder;
                   2680: 
                   2681:   if (srcdata == 0) {
1.1.1.2 ! root     2682:     reg68k_internal_vector(V_ZERO, PC+6);
1.1       root     2683:     return;
                   2684:   }
                   2685:   quotient = dstdata / (sint16)srcdata;
                   2686:   remainder = dstdata % (sint16)srcdata;
                   2687:   if (((quotient & 0xffff8000) == 0) ||
                   2688:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2689:     if ((quotient < 0) != (remainder < 0))
                   2690:       remainder = -remainder;
                   2691:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2692:     VFLAG = 0;
                   2693:     NFLAG = ((sint16)quotient) < 0;
                   2694:     ZFLAG = !((uint16)quotient);
                   2695:   } else {
                   2696:     VFLAG = 1;
                   2697:     NFLAG = 1;
                   2698:   }
                   2699:   CFLAG = 0;
                   2700:   PC+= 6;
                   2701: }
                   2702: 
                   2703: void cpu_op_1137a(t_ipc *ipc) /* DIVS */ {
                   2704:   /* mask f1ff, bits 81fa, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2705:   uint32 srcaddr = ipc->src;
                   2706:   uint16 srcdata = fetchword(srcaddr);
                   2707:   int dstreg = (ipc->opcode >> 9) & 7;
                   2708:   sint32 dstdata = DATAREG(dstreg);
                   2709:   sint32 quotient;
                   2710:   sint16 remainder;
                   2711: 
                   2712:   if (srcdata == 0) {
1.1.1.2 ! root     2713:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2714:     return;
                   2715:   }
                   2716:   quotient = dstdata / (sint16)srcdata;
                   2717:   remainder = dstdata % (sint16)srcdata;
                   2718:   if (((quotient & 0xffff8000) == 0) ||
                   2719:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2720:     if ((quotient < 0) != (remainder < 0))
                   2721:       remainder = -remainder;
                   2722:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2723:   }
                   2724:   PC+= 4;
                   2725: }
                   2726: 
                   2727: void cpu_op_1137b(t_ipc *ipc) /* DIVS */ {
                   2728:   /* mask f1ff, bits 81fa, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 9, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2729:   uint32 srcaddr = ipc->src;
                   2730:   uint16 srcdata = fetchword(srcaddr);
                   2731:   int dstreg = (ipc->opcode >> 9) & 7;
                   2732:   sint32 dstdata = DATAREG(dstreg);
                   2733:   sint32 quotient;
                   2734:   sint16 remainder;
                   2735: 
                   2736:   if (srcdata == 0) {
1.1.1.2 ! root     2737:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2738:     return;
                   2739:   }
                   2740:   quotient = dstdata / (sint16)srcdata;
                   2741:   remainder = dstdata % (sint16)srcdata;
                   2742:   if (((quotient & 0xffff8000) == 0) ||
                   2743:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2744:     if ((quotient < 0) != (remainder < 0))
                   2745:       remainder = -remainder;
                   2746:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2747:     VFLAG = 0;
                   2748:     NFLAG = ((sint16)quotient) < 0;
                   2749:     ZFLAG = !((uint16)quotient);
                   2750:   } else {
                   2751:     VFLAG = 1;
                   2752:     NFLAG = 1;
                   2753:   }
                   2754:   CFLAG = 0;
                   2755:   PC+= 4;
                   2756: }
                   2757: 
                   2758: void cpu_op_1138a(t_ipc *ipc) /* DIVS */ {
                   2759:   /* mask f1ff, bits 81fb, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2760:   uint32 srcaddr = idxval_src(ipc);
                   2761:   uint16 srcdata = fetchword(srcaddr);
                   2762:   int dstreg = (ipc->opcode >> 9) & 7;
                   2763:   sint32 dstdata = DATAREG(dstreg);
                   2764:   sint32 quotient;
                   2765:   sint16 remainder;
                   2766: 
                   2767:   if (srcdata == 0) {
1.1.1.2 ! root     2768:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2769:     return;
                   2770:   }
                   2771:   quotient = dstdata / (sint16)srcdata;
                   2772:   remainder = dstdata % (sint16)srcdata;
                   2773:   if (((quotient & 0xffff8000) == 0) ||
                   2774:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2775:     if ((quotient < 0) != (remainder < 0))
                   2776:       remainder = -remainder;
                   2777:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2778:   }
                   2779:   PC+= 4;
                   2780: }
                   2781: 
                   2782: void cpu_op_1138b(t_ipc *ipc) /* DIVS */ {
                   2783:   /* mask f1ff, bits 81fb, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 10, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2784:   uint32 srcaddr = idxval_src(ipc);
                   2785:   uint16 srcdata = fetchword(srcaddr);
                   2786:   int dstreg = (ipc->opcode >> 9) & 7;
                   2787:   sint32 dstdata = DATAREG(dstreg);
                   2788:   sint32 quotient;
                   2789:   sint16 remainder;
                   2790: 
                   2791:   if (srcdata == 0) {
1.1.1.2 ! root     2792:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2793:     return;
                   2794:   }
                   2795:   quotient = dstdata / (sint16)srcdata;
                   2796:   remainder = dstdata % (sint16)srcdata;
                   2797:   if (((quotient & 0xffff8000) == 0) ||
                   2798:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2799:     if ((quotient < 0) != (remainder < 0))
                   2800:       remainder = -remainder;
                   2801:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2802:     VFLAG = 0;
                   2803:     NFLAG = ((sint16)quotient) < 0;
                   2804:     ZFLAG = !((uint16)quotient);
                   2805:   } else {
                   2806:     VFLAG = 1;
                   2807:     NFLAG = 1;
                   2808:   }
                   2809:   CFLAG = 0;
                   2810:   PC+= 4;
                   2811: }
                   2812: 
                   2813: void cpu_op_1139a(t_ipc *ipc) /* DIVS */ {
                   2814:   /* mask f1ff, bits 81fc, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2815:   uint16 srcdata = ipc->src;
                   2816:   int dstreg = (ipc->opcode >> 9) & 7;
                   2817:   sint32 dstdata = DATAREG(dstreg);
                   2818:   sint32 quotient;
                   2819:   sint16 remainder;
                   2820: 
                   2821:   if (srcdata == 0) {
1.1.1.2 ! root     2822:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2823:     return;
                   2824:   }
                   2825:   quotient = dstdata / (sint16)srcdata;
                   2826:   remainder = dstdata % (sint16)srcdata;
                   2827:   if (((quotient & 0xffff8000) == 0) ||
                   2828:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2829:     if ((quotient < 0) != (remainder < 0))
                   2830:       remainder = -remainder;
                   2831:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2832:   }
                   2833:   PC+= 4;
                   2834: }
                   2835: 
                   2836: void cpu_op_1139b(t_ipc *ipc) /* DIVS */ {
                   2837:   /* mask f1ff, bits 81fc, mnemonic 65, priv 0, endblk 0, imm_notzero 0, used 0     set -2, size 2, stype 12, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2838:   uint16 srcdata = ipc->src;
                   2839:   int dstreg = (ipc->opcode >> 9) & 7;
                   2840:   sint32 dstdata = DATAREG(dstreg);
                   2841:   sint32 quotient;
                   2842:   sint16 remainder;
                   2843: 
                   2844:   if (srcdata == 0) {
1.1.1.2 ! root     2845:     reg68k_internal_vector(V_ZERO, PC+4);
1.1       root     2846:     return;
                   2847:   }
                   2848:   quotient = dstdata / (sint16)srcdata;
                   2849:   remainder = dstdata % (sint16)srcdata;
                   2850:   if (((quotient & 0xffff8000) == 0) ||
                   2851:       ((quotient & 0xffff8000) == 0xffff8000)) {
                   2852:     if ((quotient < 0) != (remainder < 0))
                   2853:       remainder = -remainder;
                   2854:     DATAREG(dstreg) = ((uint16)quotient) | (((uint16)(remainder))<<16);
                   2855:     VFLAG = 0;
                   2856:     NFLAG = ((sint16)quotient) < 0;
                   2857:     ZFLAG = !((uint16)quotient);
                   2858:   } else {
                   2859:     VFLAG = 1;
                   2860:     NFLAG = 1;
                   2861:   }
                   2862:   CFLAG = 0;
                   2863:   PC+= 4;
                   2864: }
                   2865: 
                   2866: void cpu_op_1140a(t_ipc *ipc) /* SBCD */ {
                   2867:   /* mask f1f8, bits 8100, mnemonic 36, priv 0, endblk 0, imm_notzero 0, used 5     set -11, size 1, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2868:   int srcreg = (ipc->opcode >> 0) & 7;
                   2869:   uint8 srcdata = DATAREG(srcreg);
                   2870:   int dstreg = (ipc->opcode >> 9) & 7;
                   2871:   uint8 dstdata = DATAREG(dstreg);
                   2872:   uint8 outdata;
                   2873: 
                   2874:   sint8 outdata_low = (sint8)(dstdata & 0xF) -(sint8)(srcdata & 0xF) - XFLAG;
                   2875:   sint8 outdata_high = (sint8)(dstdata>>4) - (sint8)(srcdata>>4);
                   2876: 
                   2877:   if (outdata_low < 0) {
                   2878:     outdata_low+=10; outdata_high--;
                   2879:   }
                   2880:   if (outdata_high < 0) {
                   2881:     outdata_high+=10;
                   2882:   } else {
                   2883:   }
                   2884:   outdata = (uint8)outdata_low | ((uint8)outdata_high << 4);
                   2885:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                   2886:   PC+= 2;
                   2887: }
                   2888: 
                   2889: void cpu_op_1140b(t_ipc *ipc) /* SBCD */ {
                   2890:   /* mask f1f8, bits 8100, mnemonic 36, priv 0, endblk 0, imm_notzero 0, used 5     set -11, size 1, stype 0, dtype 0, sbitpos 0, dbitpos 9, immvalue 0 */
                   2891:   int srcreg = (ipc->opcode >> 0) & 7;
                   2892:   uint8 srcdata = DATAREG(srcreg);
                   2893:   int dstreg = (ipc->opcode >> 9) & 7;
                   2894:   uint8 dstdata = DATAREG(dstreg);
                   2895:   uint8 outdata;
                   2896: 
                   2897:   sint8 outdata_low = (sint8)(dstdata & 0xF) -(sint8)(srcdata & 0xF) - XFLAG;
                   2898:   sint8 outdata_high = (sint8)(dstdata>>4) - (sint8)(srcdata>>4);
                   2899: 
                   2900:   if (outdata_low < 0) {
                   2901:     outdata_low+=10; outdata_high--;
                   2902:   }
                   2903:   if (outdata_high < 0) {
                   2904:     outdata_high+=10;
                   2905:     CFLAG = 1;
                   2906:     XFLAG = 1;
                   2907:   } else {
                   2908:     CFLAG = 0;
                   2909:     XFLAG = 0;
                   2910:   }
                   2911:   outdata = (uint8)outdata_low | ((uint8)outdata_high << 4);
                   2912:   if (outdata) ZFLAG = 0;
                   2913:   DATAREG(dstreg) = (DATAREG(dstreg) & ~0xff) | outdata;
                   2914:   PC+= 2;
                   2915: }
                   2916: 
                   2917: void cpu_op_1141a(t_ipc *ipc) /* SBCD */ {
                   2918:   /* mask f1f8, bits 8108, mnemonic 36, priv 0, endblk 0, imm_notzero 0, used 5     set -11, size 1, stype 4, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
                   2919:   int srcreg = (ipc->opcode >> 0) & 7;
                   2920:   uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1));
                   2921:   uint8 srcdata = fetchbyte(srcaddr);
                   2922:   int dstreg = (ipc->opcode >> 9) & 7;
                   2923:   uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1));
                   2924:   uint8 dstdata = fetchbyte(dstaddr);
                   2925:   uint8 outdata;
                   2926: 
                   2927:   sint8 outdata_low = (sint8)(dstdata & 0xF) -(sint8)(srcdata & 0xF) - XFLAG;
                   2928:   sint8 outdata_high = (sint8)(dstdata>>4) - (sint8)(srcdata>>4);
                   2929: 
                   2930:   if (outdata_low < 0) {
                   2931:     outdata_low+=10; outdata_high--;
                   2932:   }
                   2933:   if (outdata_high < 0) {
                   2934:     outdata_high+=10;
                   2935:   } else {
                   2936:   }
                   2937:   outdata = (uint8)outdata_low | ((uint8)outdata_high << 4);
                   2938:   storebyte(dstaddr, outdata);
                   2939:   PC+= 2;
                   2940: }
                   2941: 
                   2942: void cpu_op_1141b(t_ipc *ipc) /* SBCD */ {
                   2943:   /* mask f1f8, bits 8108, mnemonic 36, priv 0, endblk 0, imm_notzero 0, used 5     set -11, size 1, stype 4, dtype 4, sbitpos 0, dbitpos 9, immvalue 0 */
                   2944:   int srcreg = (ipc->opcode >> 0) & 7;
                   2945:   uint32 srcaddr = (ADDRREG(srcreg)-= (srcreg == 7 ? 2 : 1));
                   2946:   uint8 srcdata = fetchbyte(srcaddr);
                   2947:   int dstreg = (ipc->opcode >> 9) & 7;
                   2948:   uint32 dstaddr = (ADDRREG(dstreg)-= (dstreg == 7 ? 2 : 1));
                   2949:   uint8 dstdata = fetchbyte(dstaddr);
                   2950:   uint8 outdata;
                   2951: 
                   2952:   sint8 outdata_low = (sint8)(dstdata & 0xF) -(sint8)(srcdata & 0xF) - XFLAG;
                   2953:   sint8 outdata_high = (sint8)(dstdata>>4) - (sint8)(srcdata>>4);
                   2954: 
                   2955:   if (outdata_low < 0) {
                   2956:     outdata_low+=10; outdata_high--;
                   2957:   }
                   2958:   if (outdata_high < 0) {
                   2959:     outdata_high+=10;
                   2960:     CFLAG = 1;
                   2961:     XFLAG = 1;
                   2962:   } else {
                   2963:     CFLAG = 0;
                   2964:     XFLAG = 0;
                   2965:   }
                   2966:   outdata = (uint8)outdata_low | ((uint8)outdata_high << 4);
                   2967:   if (outdata) ZFLAG = 0;
                   2968:   storebyte(dstaddr, outdata);
                   2969:   PC+= 2;
                   2970: }
                   2971: 

unix.superglobalmegacorp.com

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