updated Musashi to MAME 0.117
[picodrive.git] / cpu / musashi / m68kopac.c
diff --git a/cpu/musashi/m68kopac.c b/cpu/musashi/m68kopac.c
deleted file mode 100644 (file)
index 736ba2e..0000000
+++ /dev/null
@@ -1,12199 +0,0 @@
-#include "m68kcpu.h"\r
-\r
-/* ======================================================================== */\r
-/* ========================= INSTRUCTION HANDLERS ========================= */\r
-/* ======================================================================== */\r
-\r
-\r
-void m68k_op_1010(void)\r
-{\r
-       m68ki_exception_1010();\r
-}\r
-\r
-\r
-void m68k_op_1111(void)\r
-{\r
-       m68ki_exception_1111();\r
-}\r
-\r
-\r
-void m68k_op_abcd_8_rr(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = DY;\r
-       uint dst = *r_dst;\r
-       uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1();\r
-\r
-       FLAG_V = ~res; /* Undefined V behavior */\r
-\r
-       if(res > 9)\r
-               res += 6;\r
-       res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);\r
-       FLAG_X = FLAG_C = (res > 0x99) << 8;\r
-       if(FLAG_C)\r
-               res -= 0xa0;\r
-\r
-       FLAG_V &= res; /* Undefined V behavior part II */\r
-       FLAG_N = NFLAG_8(res); /* Undefined N behavior */\r
-\r
-       res = MASK_OUT_ABOVE_8(res);\r
-       FLAG_Z |= res;\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
-}\r
-\r
-\r
-void m68k_op_abcd_8_mm_ax7(void)\r
-{\r
-       uint src = OPER_AY_PD_8();\r
-       uint ea  = EA_A7_PD_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1();\r
-\r
-       FLAG_V = ~res; /* Undefined V behavior */\r
-\r
-       if(res > 9)\r
-               res += 6;\r
-       res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);\r
-       FLAG_X = FLAG_C = (res > 0x99) << 8;\r
-       if(FLAG_C)\r
-               res -= 0xa0;\r
-\r
-       FLAG_V &= res; /* Undefined V behavior part II */\r
-       FLAG_N = NFLAG_8(res); /* Undefined N behavior */\r
-\r
-       res = MASK_OUT_ABOVE_8(res);\r
-       FLAG_Z |= res;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_abcd_8_mm_ay7(void)\r
-{\r
-       uint src = OPER_A7_PD_8();\r
-       uint ea  = EA_AX_PD_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1();\r
-\r
-       FLAG_V = ~res; /* Undefined V behavior */\r
-\r
-       if(res > 9)\r
-               res += 6;\r
-       res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);\r
-       FLAG_X = FLAG_C = (res > 0x99) << 8;\r
-       if(FLAG_C)\r
-               res -= 0xa0;\r
-\r
-       FLAG_V &= res; /* Undefined V behavior part II */\r
-       FLAG_N = NFLAG_8(res); /* Undefined N behavior */\r
-\r
-       res = MASK_OUT_ABOVE_8(res);\r
-       FLAG_Z |= res;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_abcd_8_mm_axy7(void)\r
-{\r
-       uint src = OPER_A7_PD_8();\r
-       uint ea  = EA_A7_PD_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1();\r
-\r
-       FLAG_V = ~res; /* Undefined V behavior */\r
-\r
-       if(res > 9)\r
-               res += 6;\r
-       res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);\r
-       FLAG_X = FLAG_C = (res > 0x99) << 8;\r
-       if(FLAG_C)\r
-               res -= 0xa0;\r
-\r
-       FLAG_V &= res; /* Undefined V behavior part II */\r
-       FLAG_N = NFLAG_8(res); /* Undefined N behavior */\r
-\r
-       res = MASK_OUT_ABOVE_8(res);\r
-       FLAG_Z |= res;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_abcd_8_mm(void)\r
-{\r
-       uint src = OPER_AY_PD_8();\r
-       uint ea  = EA_AX_PD_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = LOW_NIBBLE(src) + LOW_NIBBLE(dst) + XFLAG_AS_1();\r
-\r
-       FLAG_V = ~res; /* Undefined V behavior */\r
-\r
-       if(res > 9)\r
-               res += 6;\r
-       res += HIGH_NIBBLE(src) + HIGH_NIBBLE(dst);\r
-       FLAG_X = FLAG_C = (res > 0x99) << 8;\r
-       if(FLAG_C)\r
-               res -= 0xa0;\r
-\r
-       FLAG_V &= res; /* Undefined V behavior part II */\r
-       FLAG_N = NFLAG_8(res); /* Undefined N behavior */\r
-\r
-       res = MASK_OUT_ABOVE_8(res);\r
-       FLAG_Z |= res;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_add_8_er_d(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = MASK_OUT_ABOVE_8(DY);\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_8_er_ai(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_AI_8();\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_8_er_pi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_PI_8();\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_8_er_pi7(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_A7_PI_8();\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_8_er_pd(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_PD_8();\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_8_er_pd7(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_A7_PD_8();\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_8_er_di(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_DI_8();\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_8_er_ix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_IX_8();\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_8_er_aw(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AW_8();\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_8_er_al(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AL_8();\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_8_er_pcdi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_PCDI_8();\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_8_er_pcix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_PCIX_8();\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_8_er_i(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_I_8();\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_16_er_d(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = MASK_OUT_ABOVE_16(DY);\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_16_er_a(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = MASK_OUT_ABOVE_16(AY);\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_16_er_ai(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_AI_16();\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_16_er_pi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_PI_16();\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_16_er_pd(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_PD_16();\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_16_er_di(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_DI_16();\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_16_er_ix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_IX_16();\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_16_er_aw(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AW_16();\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_16_er_al(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AL_16();\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_16_er_pcdi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_PCDI_16();\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_16_er_pcix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_PCIX_16();\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_16_er_i(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_I_16();\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_32_er_d(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = DY;\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_32_er_a(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = AY;\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_32_er_ai(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_AI_32();\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_32_er_pi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_PI_32();\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_32_er_pd(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_PD_32();\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_32_er_di(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_DI_32();\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_32_er_ix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_IX_32();\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_32_er_aw(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AW_32();\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_32_er_al(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AL_32();\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_32_er_pcdi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_PCDI_32();\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_32_er_pcix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_PCIX_32();\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_32_er_i(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_I_32();\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_add_8_re_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_8();\r
-       uint src = MASK_OUT_ABOVE_8(DX);\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_8_re_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_8();\r
-       uint src = MASK_OUT_ABOVE_8(DX);\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_8_re_pi7(void)\r
-{\r
-       uint ea = EA_A7_PI_8();\r
-       uint src = MASK_OUT_ABOVE_8(DX);\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_8_re_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_8();\r
-       uint src = MASK_OUT_ABOVE_8(DX);\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_8_re_pd7(void)\r
-{\r
-       uint ea = EA_A7_PD_8();\r
-       uint src = MASK_OUT_ABOVE_8(DX);\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_8_re_di(void)\r
-{\r
-       uint ea = EA_AY_DI_8();\r
-       uint src = MASK_OUT_ABOVE_8(DX);\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_8_re_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_8();\r
-       uint src = MASK_OUT_ABOVE_8(DX);\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_8_re_aw(void)\r
-{\r
-       uint ea = EA_AW_8();\r
-       uint src = MASK_OUT_ABOVE_8(DX);\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_8_re_al(void)\r
-{\r
-       uint ea = EA_AL_8();\r
-       uint src = MASK_OUT_ABOVE_8(DX);\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_16_re_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_16();\r
-       uint src = MASK_OUT_ABOVE_16(DX);\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_16_re_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_16();\r
-       uint src = MASK_OUT_ABOVE_16(DX);\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_16_re_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_16();\r
-       uint src = MASK_OUT_ABOVE_16(DX);\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_16_re_di(void)\r
-{\r
-       uint ea = EA_AY_DI_16();\r
-       uint src = MASK_OUT_ABOVE_16(DX);\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_16_re_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_16();\r
-       uint src = MASK_OUT_ABOVE_16(DX);\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_16_re_aw(void)\r
-{\r
-       uint ea = EA_AW_16();\r
-       uint src = MASK_OUT_ABOVE_16(DX);\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_16_re_al(void)\r
-{\r
-       uint ea = EA_AL_16();\r
-       uint src = MASK_OUT_ABOVE_16(DX);\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_32_re_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_32();\r
-       uint src = DX;\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_32_re_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_32();\r
-       uint src = DX;\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_32_re_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_32();\r
-       uint src = DX;\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_32_re_di(void)\r
-{\r
-       uint ea = EA_AY_DI_32();\r
-       uint src = DX;\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_32_re_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_32();\r
-       uint src = DX;\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_32_re_aw(void)\r
-{\r
-       uint ea = EA_AW_32();\r
-       uint src = DX;\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_add_32_re_al(void)\r
-{\r
-       uint ea = EA_AL_32();\r
-       uint src = DX;\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_adda_16_d(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(DY));\r
-}\r
-\r
-\r
-void m68k_op_adda_16_a(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(AY));\r
-}\r
-\r
-\r
-void m68k_op_adda_16_ai(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(OPER_AY_AI_16()));\r
-}\r
-\r
-\r
-void m68k_op_adda_16_pi(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(OPER_AY_PI_16()));\r
-}\r
-\r
-\r
-void m68k_op_adda_16_pd(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(OPER_AY_PD_16()));\r
-}\r
-\r
-\r
-void m68k_op_adda_16_di(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(OPER_AY_DI_16()));\r
-}\r
-\r
-\r
-void m68k_op_adda_16_ix(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(OPER_AY_IX_16()));\r
-}\r
-\r
-\r
-void m68k_op_adda_16_aw(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(OPER_AW_16()));\r
-}\r
-\r
-\r
-void m68k_op_adda_16_al(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(OPER_AL_16()));\r
-}\r
-\r
-\r
-void m68k_op_adda_16_pcdi(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(OPER_PCDI_16()));\r
-}\r
-\r
-\r
-void m68k_op_adda_16_pcix(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(OPER_PCIX_16()));\r
-}\r
-\r
-\r
-void m68k_op_adda_16_i(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + MAKE_INT_16(OPER_I_16()));\r
-}\r
-\r
-\r
-void m68k_op_adda_32_d(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + DY);\r
-}\r
-\r
-\r
-void m68k_op_adda_32_a(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + AY);\r
-}\r
-\r
-\r
-void m68k_op_adda_32_ai(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + OPER_AY_AI_32());\r
-}\r
-\r
-\r
-void m68k_op_adda_32_pi(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + OPER_AY_PI_32());\r
-}\r
-\r
-\r
-void m68k_op_adda_32_pd(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + OPER_AY_PD_32());\r
-}\r
-\r
-\r
-void m68k_op_adda_32_di(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + OPER_AY_DI_32());\r
-}\r
-\r
-\r
-void m68k_op_adda_32_ix(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + OPER_AY_IX_32());\r
-}\r
-\r
-\r
-void m68k_op_adda_32_aw(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + OPER_AW_32());\r
-}\r
-\r
-\r
-void m68k_op_adda_32_al(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + OPER_AL_32());\r
-}\r
-\r
-\r
-void m68k_op_adda_32_pcdi(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + OPER_PCDI_32());\r
-}\r
-\r
-\r
-void m68k_op_adda_32_pcix(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + OPER_PCIX_32());\r
-}\r
-\r
-\r
-void m68k_op_adda_32_i(void)\r
-{\r
-       uint* r_dst = &AX;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + OPER_I_32());\r
-}\r
-\r
-\r
-void m68k_op_addi_8_d(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint src = OPER_I_8();\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_addi_8_ai(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AY_AI_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_8_pi(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AY_PI_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_8_pi7(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_A7_PI_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_8_pd(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AY_PD_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_8_pd7(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_A7_PD_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_8_di(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AY_DI_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_8_ix(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AY_IX_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_8_aw(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AW_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_8_al(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AL_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_16_d(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint src = OPER_I_16();\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_addi_16_ai(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AY_AI_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_16_pi(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AY_PI_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_16_pd(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AY_PD_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_16_di(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AY_DI_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_16_ix(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AY_IX_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_16_aw(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AW_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_16_al(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AL_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_32_d(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint src = OPER_I_32();\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_addi_32_ai(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AY_AI_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_32_pi(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AY_PI_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_32_pd(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AY_PD_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_32_di(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AY_DI_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_32_ix(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AY_IX_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_32_aw(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AW_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addi_32_al(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AL_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_8_d(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_addq_8_ai(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_AI_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_8_pi(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_PI_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_8_pi7(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_A7_PI_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_8_pd(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_PD_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_8_pd7(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_A7_PD_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_8_di(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_DI_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_8_ix(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_IX_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_8_aw(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AW_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_8_al(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AL_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_16_d(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_addq_16_a(void)\r
-{\r
-       uint* r_dst = &AY;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + (((REG_IR >> 9) - 1) & 7) + 1);\r
-}\r
-\r
-\r
-void m68k_op_addq_16_ai(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_AI_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_16_pi(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_PI_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_16_pd(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_PD_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_16_di(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_DI_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_16_ix(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_IX_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_16_aw(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AW_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_16_al(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AL_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_32_d(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint dst = *r_dst;\r
-       uint res = src + dst;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       *r_dst = FLAG_Z;\r
-}\r
-\r
-\r
-void m68k_op_addq_32_a(void)\r
-{\r
-       uint* r_dst = &AY;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_32(*r_dst + (((REG_IR >> 9) - 1) & 7) + 1);\r
-}\r
-\r
-\r
-void m68k_op_addq_32_ai(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_AI_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_32_pi(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_PI_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_32_pd(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_PD_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_32_di(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_DI_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_32_ix(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AY_IX_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_32_aw(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AW_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addq_32_al(void)\r
-{\r
-       uint src = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint ea = EA_AL_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst;\r
-\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-\r
-       m68ki_write_32(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_addx_8_rr(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = MASK_OUT_ABOVE_8(DY);\r
-       uint dst = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src + dst + XFLAG_AS_1();\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-\r
-       res = MASK_OUT_ABOVE_8(res);\r
-       FLAG_Z |= res;\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
-}\r
-\r
-\r
-void m68k_op_addx_16_rr(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = MASK_OUT_ABOVE_16(DY);\r
-       uint dst = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src + dst + XFLAG_AS_1();\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-\r
-       res = MASK_OUT_ABOVE_16(res);\r
-       FLAG_Z |= res;\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-}\r
-\r
-\r
-void m68k_op_addx_32_rr(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = DY;\r
-       uint dst = *r_dst;\r
-       uint res = src + dst + XFLAG_AS_1();\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-\r
-       res = MASK_OUT_ABOVE_32(res);\r
-       FLAG_Z |= res;\r
-\r
-       *r_dst = res;\r
-}\r
-\r
-\r
-void m68k_op_addx_8_mm_ax7(void)\r
-{\r
-       uint src = OPER_AY_PD_8();\r
-       uint ea  = EA_A7_PD_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst + XFLAG_AS_1();\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-\r
-       res = MASK_OUT_ABOVE_8(res);\r
-       FLAG_Z |= res;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_addx_8_mm_ay7(void)\r
-{\r
-       uint src = OPER_A7_PD_8();\r
-       uint ea  = EA_AX_PD_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst + XFLAG_AS_1();\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-\r
-       res = MASK_OUT_ABOVE_8(res);\r
-       FLAG_Z |= res;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_addx_8_mm_axy7(void)\r
-{\r
-       uint src = OPER_A7_PD_8();\r
-       uint ea  = EA_A7_PD_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst + XFLAG_AS_1();\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-\r
-       res = MASK_OUT_ABOVE_8(res);\r
-       FLAG_Z |= res;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_addx_8_mm(void)\r
-{\r
-       uint src = OPER_AY_PD_8();\r
-       uint ea  = EA_AX_PD_8();\r
-       uint dst = m68ki_read_8(ea);\r
-       uint res = src + dst + XFLAG_AS_1();\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_V = VFLAG_ADD_8(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_8(res);\r
-\r
-       res = MASK_OUT_ABOVE_8(res);\r
-       FLAG_Z |= res;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_addx_16_mm(void)\r
-{\r
-       uint src = OPER_AY_PD_16();\r
-       uint ea  = EA_AX_PD_16();\r
-       uint dst = m68ki_read_16(ea);\r
-       uint res = src + dst + XFLAG_AS_1();\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_V = VFLAG_ADD_16(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_16(res);\r
-\r
-       res = MASK_OUT_ABOVE_16(res);\r
-       FLAG_Z |= res;\r
-\r
-       m68ki_write_16(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_addx_32_mm(void)\r
-{\r
-       uint src = OPER_AY_PD_32();\r
-       uint ea  = EA_AX_PD_32();\r
-       uint dst = m68ki_read_32(ea);\r
-       uint res = src + dst + XFLAG_AS_1();\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_ADD_32(src, dst, res);\r
-       FLAG_X = FLAG_C = CFLAG_ADD_32(src, dst, res);\r
-\r
-       res = MASK_OUT_ABOVE_32(res);\r
-       FLAG_Z |= res;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_and_8_er_d(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DX &= (DY | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_8_er_ai(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_AI_8() | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_8_er_pi(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_PI_8() | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_8_er_pi7(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_A7_PI_8() | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_8_er_pd(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_PD_8() | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_8_er_pd7(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_A7_PD_8() | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_8_er_di(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_DI_8() | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_8_er_ix(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AY_IX_8() | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_8_er_aw(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AW_8() | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_8_er_al(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_AL_8() | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_8_er_pcdi(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_PCDI_8() | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_8_er_pcix(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_PCIX_8() | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_8_er_i(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DX &= (OPER_I_8() | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_16_er_d(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_16(DX &= (DY | 0xffff0000));\r
-\r
-       FLAG_N = NFLAG_16(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_16_er_ai(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_AI_16() | 0xffff0000));\r
-\r
-       FLAG_N = NFLAG_16(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_16_er_pi(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_PI_16() | 0xffff0000));\r
-\r
-       FLAG_N = NFLAG_16(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_16_er_pd(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_PD_16() | 0xffff0000));\r
-\r
-       FLAG_N = NFLAG_16(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_16_er_di(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_DI_16() | 0xffff0000));\r
-\r
-       FLAG_N = NFLAG_16(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_16_er_ix(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AY_IX_16() | 0xffff0000));\r
-\r
-       FLAG_N = NFLAG_16(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_16_er_aw(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AW_16() | 0xffff0000));\r
-\r
-       FLAG_N = NFLAG_16(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_16_er_al(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_AL_16() | 0xffff0000));\r
-\r
-       FLAG_N = NFLAG_16(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_16_er_pcdi(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_PCDI_16() | 0xffff0000));\r
-\r
-       FLAG_N = NFLAG_16(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_16_er_pcix(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_PCIX_16() | 0xffff0000));\r
-\r
-       FLAG_N = NFLAG_16(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_16_er_i(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_16(DX &= (OPER_I_16() | 0xffff0000));\r
-\r
-       FLAG_N = NFLAG_16(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_32_er_d(void)\r
-{\r
-       FLAG_Z = DX &= DY;\r
-\r
-       FLAG_N = NFLAG_32(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_32_er_ai(void)\r
-{\r
-       FLAG_Z = DX &= OPER_AY_AI_32();\r
-\r
-       FLAG_N = NFLAG_32(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_32_er_pi(void)\r
-{\r
-       FLAG_Z = DX &= OPER_AY_PI_32();\r
-\r
-       FLAG_N = NFLAG_32(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_32_er_pd(void)\r
-{\r
-       FLAG_Z = DX &= OPER_AY_PD_32();\r
-\r
-       FLAG_N = NFLAG_32(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_32_er_di(void)\r
-{\r
-       FLAG_Z = DX &= OPER_AY_DI_32();\r
-\r
-       FLAG_N = NFLAG_32(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_32_er_ix(void)\r
-{\r
-       FLAG_Z = DX &= OPER_AY_IX_32();\r
-\r
-       FLAG_N = NFLAG_32(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_32_er_aw(void)\r
-{\r
-       FLAG_Z = DX &= OPER_AW_32();\r
-\r
-       FLAG_N = NFLAG_32(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_32_er_al(void)\r
-{\r
-       FLAG_Z = DX &= OPER_AL_32();\r
-\r
-       FLAG_N = NFLAG_32(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_32_er_pcdi(void)\r
-{\r
-       FLAG_Z = DX &= OPER_PCDI_32();\r
-\r
-       FLAG_N = NFLAG_32(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_32_er_pcix(void)\r
-{\r
-       FLAG_Z = DX &= OPER_PCIX_32();\r
-\r
-       FLAG_N = NFLAG_32(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_32_er_i(void)\r
-{\r
-       FLAG_Z = DX &= OPER_I_32();\r
-\r
-       FLAG_N = NFLAG_32(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_and_8_re_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_8();\r
-       uint res = DX & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_8_re_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_8();\r
-       uint res = DX & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_8_re_pi7(void)\r
-{\r
-       uint ea = EA_A7_PI_8();\r
-       uint res = DX & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_8_re_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_8();\r
-       uint res = DX & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_8_re_pd7(void)\r
-{\r
-       uint ea = EA_A7_PD_8();\r
-       uint res = DX & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_8_re_di(void)\r
-{\r
-       uint ea = EA_AY_DI_8();\r
-       uint res = DX & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_8_re_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_8();\r
-       uint res = DX & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_8_re_aw(void)\r
-{\r
-       uint ea = EA_AW_8();\r
-       uint res = DX & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_8_re_al(void)\r
-{\r
-       uint ea = EA_AL_8();\r
-       uint res = DX & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-\r
-       m68ki_write_8(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_16_re_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_16();\r
-       uint res = DX & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_16_re_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_16();\r
-       uint res = DX & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_16_re_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_16();\r
-       uint res = DX & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_16_re_di(void)\r
-{\r
-       uint ea = EA_AY_DI_16();\r
-       uint res = DX & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_16_re_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_16();\r
-       uint res = DX & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_16_re_aw(void)\r
-{\r
-       uint ea = EA_AW_16();\r
-       uint res = DX & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_16_re_al(void)\r
-{\r
-       uint ea = EA_AL_16();\r
-       uint res = DX & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-\r
-       m68ki_write_16(ea, FLAG_Z);\r
-}\r
-\r
-\r
-void m68k_op_and_32_re_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_32();\r
-       uint res = DX & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_and_32_re_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_32();\r
-       uint res = DX & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_and_32_re_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_32();\r
-       uint res = DX & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_and_32_re_di(void)\r
-{\r
-       uint ea = EA_AY_DI_32();\r
-       uint res = DX & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_and_32_re_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_32();\r
-       uint res = DX & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_and_32_re_aw(void)\r
-{\r
-       uint ea = EA_AW_32();\r
-       uint res = DX & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_and_32_re_al(void)\r
-{\r
-       uint ea = EA_AL_32();\r
-       uint res = DX & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_8_d(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_8(DY &= (OPER_I_8() | 0xffffff00));\r
-\r
-       FLAG_N = NFLAG_8(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_andi_8_ai(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AY_AI_8();\r
-       uint res = src & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_8_pi(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AY_PI_8();\r
-       uint res = src & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_8_pi7(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_A7_PI_8();\r
-       uint res = src & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_8_pd(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AY_PD_8();\r
-       uint res = src & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_8_pd7(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_A7_PD_8();\r
-       uint res = src & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_8_di(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AY_DI_8();\r
-       uint res = src & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_8_ix(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AY_IX_8();\r
-       uint res = src & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_8_aw(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AW_8();\r
-       uint res = src & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_8_al(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint ea = EA_AL_8();\r
-       uint res = src & m68ki_read_8(ea);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_8(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_16_d(void)\r
-{\r
-       FLAG_Z = MASK_OUT_ABOVE_16(DY &= (OPER_I_16() | 0xffff0000));\r
-\r
-       FLAG_N = NFLAG_16(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_andi_16_ai(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AY_AI_16();\r
-       uint res = src & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_16(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_16_pi(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AY_PI_16();\r
-       uint res = src & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_16(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_16_pd(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AY_PD_16();\r
-       uint res = src & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_16(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_16_di(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AY_DI_16();\r
-       uint res = src & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_16(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_16_ix(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AY_IX_16();\r
-       uint res = src & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_16(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_16_aw(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AW_16();\r
-       uint res = src & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_16(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_16_al(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint ea = EA_AL_16();\r
-       uint res = src & m68ki_read_16(ea);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_16(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_32_d(void)\r
-{\r
-       FLAG_Z = DY &= (OPER_I_32());\r
-\r
-       FLAG_N = NFLAG_32(FLAG_Z);\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_andi_32_ai(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AY_AI_32();\r
-       uint res = src & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_32_pi(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AY_PI_32();\r
-       uint res = src & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_32_pd(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AY_PD_32();\r
-       uint res = src & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_32_di(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AY_DI_32();\r
-       uint res = src & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_32_ix(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AY_IX_32();\r
-       uint res = src & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_32_aw(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AW_32();\r
-       uint res = src & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_32_al(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint ea = EA_AL_32();\r
-       uint res = src & m68ki_read_32(ea);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-\r
-       m68ki_write_32(ea, res);\r
-}\r
-\r
-\r
-void m68k_op_andi_16_toc(void)\r
-{\r
-       m68ki_set_ccr(m68ki_get_ccr() & OPER_I_16());\r
-}\r
-\r
-\r
-void m68k_op_andi_16_tos(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               uint src = OPER_I_16();\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_set_sr(m68ki_get_sr() & src);\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_asr_8_s(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint src = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src >> shift;\r
-\r
-       if(shift != 0)\r
-               USE_CYCLES(shift<<CYC_SHIFT);\r
-\r
-       if(GET_MSB_8(src))\r
-               res |= m68ki_shift_8_table[shift];\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_X = FLAG_C = src << (9-shift);\r
-}\r
-\r
-\r
-void m68k_op_asr_16_s(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint src = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src >> shift;\r
-\r
-       if(shift != 0)\r
-               USE_CYCLES(shift<<CYC_SHIFT);\r
-\r
-       if(GET_MSB_16(src))\r
-               res |= m68ki_shift_16_table[shift];\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_X = FLAG_C = src << (9-shift);\r
-}\r
-\r
-\r
-void m68k_op_asr_32_s(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint src = *r_dst;\r
-       uint res = src >> shift;\r
-\r
-       if(shift != 0)\r
-               USE_CYCLES(shift<<CYC_SHIFT);\r
-\r
-       if(GET_MSB_32(src))\r
-               res |= m68ki_shift_32_table[shift];\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_X = FLAG_C = src << (9-shift);\r
-}\r
-\r
-\r
-void m68k_op_asr_8_r(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint shift = DX & 0x3f;\r
-       uint src = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = src >> shift;\r
-\r
-       if(shift != 0)\r
-       {\r
-               USE_CYCLES(shift<<CYC_SHIFT);\r
-\r
-               if(shift < 8)\r
-               {\r
-                       if(GET_MSB_8(src))\r
-                               res |= m68ki_shift_8_table[shift];\r
-\r
-                       *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
-\r
-                       FLAG_X = FLAG_C = src << (9-shift);\r
-                       FLAG_N = NFLAG_8(res);\r
-                       FLAG_Z = res;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               if(GET_MSB_8(src))\r
-               {\r
-                       *r_dst |= 0xff;\r
-                       FLAG_C = CFLAG_SET;\r
-                       FLAG_X = XFLAG_SET;\r
-                       FLAG_N = NFLAG_SET;\r
-                       FLAG_Z = ZFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               *r_dst &= 0xffffff00;\r
-               FLAG_C = CFLAG_CLEAR;\r
-               FLAG_X = XFLAG_CLEAR;\r
-               FLAG_N = NFLAG_CLEAR;\r
-               FLAG_Z = ZFLAG_SET;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               return;\r
-       }\r
-\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_N = NFLAG_8(src);\r
-       FLAG_Z = src;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_asr_16_r(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint shift = DX & 0x3f;\r
-       uint src = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = src >> shift;\r
-\r
-       if(shift != 0)\r
-       {\r
-               USE_CYCLES(shift<<CYC_SHIFT);\r
-\r
-               if(shift < 16)\r
-               {\r
-                       if(GET_MSB_16(src))\r
-                               res |= m68ki_shift_16_table[shift];\r
-\r
-                       *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-\r
-                       FLAG_C = FLAG_X = (src >> (shift - 1))<<8;\r
-                       FLAG_N = NFLAG_16(res);\r
-                       FLAG_Z = res;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               if(GET_MSB_16(src))\r
-               {\r
-                       *r_dst |= 0xffff;\r
-                       FLAG_C = CFLAG_SET;\r
-                       FLAG_X = XFLAG_SET;\r
-                       FLAG_N = NFLAG_SET;\r
-                       FLAG_Z = ZFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               *r_dst &= 0xffff0000;\r
-               FLAG_C = CFLAG_CLEAR;\r
-               FLAG_X = XFLAG_CLEAR;\r
-               FLAG_N = NFLAG_CLEAR;\r
-               FLAG_Z = ZFLAG_SET;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               return;\r
-       }\r
-\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_N = NFLAG_16(src);\r
-       FLAG_Z = src;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_asr_32_r(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint shift = DX & 0x3f;\r
-       uint src = *r_dst;\r
-       uint res = src >> shift;\r
-\r
-       if(shift != 0)\r
-       {\r
-               USE_CYCLES(shift<<CYC_SHIFT);\r
-\r
-               if(shift < 32)\r
-               {\r
-                       if(GET_MSB_32(src))\r
-                               res |= m68ki_shift_32_table[shift];\r
-\r
-                       *r_dst = res;\r
-\r
-                       FLAG_C = FLAG_X = (src >> (shift - 1))<<8;\r
-                       FLAG_N = NFLAG_32(res);\r
-                       FLAG_Z = res;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               if(GET_MSB_32(src))\r
-               {\r
-                       *r_dst = 0xffffffff;\r
-                       FLAG_C = CFLAG_SET;\r
-                       FLAG_X = XFLAG_SET;\r
-                       FLAG_N = NFLAG_SET;\r
-                       FLAG_Z = ZFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               *r_dst = 0;\r
-               FLAG_C = CFLAG_CLEAR;\r
-               FLAG_X = XFLAG_CLEAR;\r
-               FLAG_N = NFLAG_CLEAR;\r
-               FLAG_Z = ZFLAG_SET;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               return;\r
-       }\r
-\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_N = NFLAG_32(src);\r
-       FLAG_Z = src;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_asr_16_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = src >> 1;\r
-\r
-       if(GET_MSB_16(src))\r
-               res |= 0x8000;\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = FLAG_X = src << 8;\r
-}\r
-\r
-\r
-void m68k_op_asr_16_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = src >> 1;\r
-\r
-       if(GET_MSB_16(src))\r
-               res |= 0x8000;\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = FLAG_X = src << 8;\r
-}\r
-\r
-\r
-void m68k_op_asr_16_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = src >> 1;\r
-\r
-       if(GET_MSB_16(src))\r
-               res |= 0x8000;\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = FLAG_X = src << 8;\r
-}\r
-\r
-\r
-void m68k_op_asr_16_di(void)\r
-{\r
-       uint ea = EA_AY_DI_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = src >> 1;\r
-\r
-       if(GET_MSB_16(src))\r
-               res |= 0x8000;\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = FLAG_X = src << 8;\r
-}\r
-\r
-\r
-void m68k_op_asr_16_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = src >> 1;\r
-\r
-       if(GET_MSB_16(src))\r
-               res |= 0x8000;\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = FLAG_X = src << 8;\r
-}\r
-\r
-\r
-void m68k_op_asr_16_aw(void)\r
-{\r
-       uint ea = EA_AW_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = src >> 1;\r
-\r
-       if(GET_MSB_16(src))\r
-               res |= 0x8000;\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = FLAG_X = src << 8;\r
-}\r
-\r
-\r
-void m68k_op_asr_16_al(void)\r
-{\r
-       uint ea = EA_AL_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = src >> 1;\r
-\r
-       if(GET_MSB_16(src))\r
-               res |= 0x8000;\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = FLAG_X = src << 8;\r
-}\r
-\r
-\r
-void m68k_op_asl_8_s(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint src = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = MASK_OUT_ABOVE_8(src << shift);\r
-\r
-       if(shift != 0)\r
-               USE_CYCLES(shift<<CYC_SHIFT);\r
-\r
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
-\r
-       FLAG_X = FLAG_C = src << shift;\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       src &= m68ki_shift_8_table[shift + 1];\r
-       FLAG_V = (!(src == 0 || (src == m68ki_shift_8_table[shift + 1] && shift < 8)))<<7;\r
-}\r
-\r
-\r
-void m68k_op_asl_16_s(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint src = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = MASK_OUT_ABOVE_16(src << shift);\r
-\r
-       if(shift != 0)\r
-               USE_CYCLES(shift<<CYC_SHIFT);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_X = FLAG_C = src >> (8-shift);\r
-       src &= m68ki_shift_16_table[shift + 1];\r
-       FLAG_V = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7;\r
-}\r
-\r
-\r
-void m68k_op_asl_32_s(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint shift = (((REG_IR >> 9) - 1) & 7) + 1;\r
-       uint src = *r_dst;\r
-       uint res = MASK_OUT_ABOVE_32(src << shift);\r
-\r
-       if(shift != 0)\r
-               USE_CYCLES(shift<<CYC_SHIFT);\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_X = FLAG_C = src >> (24-shift);\r
-       src &= m68ki_shift_32_table[shift + 1];\r
-       FLAG_V = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7;\r
-}\r
-\r
-\r
-void m68k_op_asl_8_r(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint shift = DX & 0x3f;\r
-       uint src = MASK_OUT_ABOVE_8(*r_dst);\r
-       uint res = MASK_OUT_ABOVE_8(src << shift);\r
-\r
-       if(shift != 0)\r
-       {\r
-               USE_CYCLES(shift<<CYC_SHIFT);\r
-\r
-               if(shift < 8)\r
-               {\r
-                       *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
-                       FLAG_X = FLAG_C = src << shift;\r
-                       FLAG_N = NFLAG_8(res);\r
-                       FLAG_Z = res;\r
-                       src &= m68ki_shift_8_table[shift + 1];\r
-                       FLAG_V = (!(src == 0 || src == m68ki_shift_8_table[shift + 1]))<<7;\r
-                       return;\r
-               }\r
-\r
-               *r_dst &= 0xffffff00;\r
-               FLAG_X = FLAG_C = ((shift == 8 ? src & 1 : 0))<<8;\r
-               FLAG_N = NFLAG_CLEAR;\r
-               FLAG_Z = ZFLAG_SET;\r
-               FLAG_V = (!(src == 0))<<7;\r
-               return;\r
-       }\r
-\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_N = NFLAG_8(src);\r
-       FLAG_Z = src;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_asl_16_r(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint shift = DX & 0x3f;\r
-       uint src = MASK_OUT_ABOVE_16(*r_dst);\r
-       uint res = MASK_OUT_ABOVE_16(src << shift);\r
-\r
-       if(shift != 0)\r
-       {\r
-               USE_CYCLES(shift<<CYC_SHIFT);\r
-\r
-               if(shift < 16)\r
-               {\r
-                       *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-                       FLAG_X = FLAG_C = (src << shift) >> 8;\r
-                       FLAG_N = NFLAG_16(res);\r
-                       FLAG_Z = res;\r
-                       src &= m68ki_shift_16_table[shift + 1];\r
-                       FLAG_V = (!(src == 0 || src == m68ki_shift_16_table[shift + 1]))<<7;\r
-                       return;\r
-               }\r
-\r
-               *r_dst &= 0xffff0000;\r
-               FLAG_X = FLAG_C = ((shift == 16 ? src & 1 : 0))<<8;\r
-               FLAG_N = NFLAG_CLEAR;\r
-               FLAG_Z = ZFLAG_SET;\r
-               FLAG_V = (!(src == 0))<<7;\r
-               return;\r
-       }\r
-\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_N = NFLAG_16(src);\r
-       FLAG_Z = src;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_asl_32_r(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint shift = DX & 0x3f;\r
-       uint src = *r_dst;\r
-       uint res = MASK_OUT_ABOVE_32(src << shift);\r
-\r
-       if(shift != 0)\r
-       {\r
-               USE_CYCLES(shift<<CYC_SHIFT);\r
-\r
-               if(shift < 32)\r
-               {\r
-                       *r_dst = res;\r
-                       FLAG_X = FLAG_C = (src >> (32 - shift)) << 8;\r
-                       FLAG_N = NFLAG_32(res);\r
-                       FLAG_Z = res;\r
-                       src &= m68ki_shift_32_table[shift + 1];\r
-                       FLAG_V = (!(src == 0 || src == m68ki_shift_32_table[shift + 1]))<<7;\r
-                       return;\r
-               }\r
-\r
-               *r_dst = 0;\r
-               FLAG_X = FLAG_C = ((shift == 32 ? src & 1 : 0))<<8;\r
-               FLAG_N = NFLAG_CLEAR;\r
-               FLAG_Z = ZFLAG_SET;\r
-               FLAG_V = (!(src == 0))<<7;\r
-               return;\r
-       }\r
-\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_N = NFLAG_32(src);\r
-       FLAG_Z = src;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_asl_16_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = MASK_OUT_ABOVE_16(src << 1);\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_X = FLAG_C = src >> 7;\r
-       src &= 0xc000;\r
-       FLAG_V = (!(src == 0 || src == 0xc000))<<7;\r
-}\r
-\r
-\r
-void m68k_op_asl_16_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = MASK_OUT_ABOVE_16(src << 1);\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_X = FLAG_C = src >> 7;\r
-       src &= 0xc000;\r
-       FLAG_V = (!(src == 0 || src == 0xc000))<<7;\r
-}\r
-\r
-\r
-void m68k_op_asl_16_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = MASK_OUT_ABOVE_16(src << 1);\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_X = FLAG_C = src >> 7;\r
-       src &= 0xc000;\r
-       FLAG_V = (!(src == 0 || src == 0xc000))<<7;\r
-}\r
-\r
-\r
-void m68k_op_asl_16_di(void)\r
-{\r
-       uint ea = EA_AY_DI_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = MASK_OUT_ABOVE_16(src << 1);\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_X = FLAG_C = src >> 7;\r
-       src &= 0xc000;\r
-       FLAG_V = (!(src == 0 || src == 0xc000))<<7;\r
-}\r
-\r
-\r
-void m68k_op_asl_16_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = MASK_OUT_ABOVE_16(src << 1);\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_X = FLAG_C = src >> 7;\r
-       src &= 0xc000;\r
-       FLAG_V = (!(src == 0 || src == 0xc000))<<7;\r
-}\r
-\r
-\r
-void m68k_op_asl_16_aw(void)\r
-{\r
-       uint ea = EA_AW_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = MASK_OUT_ABOVE_16(src << 1);\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_X = FLAG_C = src >> 7;\r
-       src &= 0xc000;\r
-       FLAG_V = (!(src == 0 || src == 0xc000))<<7;\r
-}\r
-\r
-\r
-void m68k_op_asl_16_al(void)\r
-{\r
-       uint ea = EA_AL_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = MASK_OUT_ABOVE_16(src << 1);\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_X = FLAG_C = src >> 7;\r
-       src &= 0xc000;\r
-       FLAG_V = (!(src == 0 || src == 0xc000))<<7;\r
-}\r
-\r
-\r
-void m68k_op_bhi_8(void)\r
-{\r
-       if(COND_HI())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_bls_8(void)\r
-{\r
-       if(COND_LS())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_bcc_8(void)\r
-{\r
-       if(COND_CC())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_bcs_8(void)\r
-{\r
-       if(COND_CS())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_bne_8(void)\r
-{\r
-       if(COND_NE())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_beq_8(void)\r
-{\r
-       if(COND_EQ())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_bvc_8(void)\r
-{\r
-       if(COND_VC())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_bvs_8(void)\r
-{\r
-       if(COND_VS())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_bpl_8(void)\r
-{\r
-       if(COND_PL())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_bmi_8(void)\r
-{\r
-       if(COND_MI())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_bge_8(void)\r
-{\r
-       if(COND_GE())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_blt_8(void)\r
-{\r
-       if(COND_LT())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_bgt_8(void)\r
-{\r
-       if(COND_GT())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_ble_8(void)\r
-{\r
-       if(COND_LE())\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-               return;\r
-       }\r
-       USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-}\r
-\r
-\r
-void m68k_op_bhi_16(void)\r
-{\r
-       if(COND_HI())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_bls_16(void)\r
-{\r
-       if(COND_LS())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_bcc_16(void)\r
-{\r
-       if(COND_CC())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_bcs_16(void)\r
-{\r
-       if(COND_CS())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_bne_16(void)\r
-{\r
-       if(COND_NE())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_beq_16(void)\r
-{\r
-       if(COND_EQ())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_bvc_16(void)\r
-{\r
-       if(COND_VC())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_bvs_16(void)\r
-{\r
-       if(COND_VS())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_bpl_16(void)\r
-{\r
-       if(COND_PL())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_bmi_16(void)\r
-{\r
-       if(COND_MI())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_bge_16(void)\r
-{\r
-       if(COND_GE())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_blt_16(void)\r
-{\r
-       if(COND_LT())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_bgt_16(void)\r
-{\r
-       if(COND_GT())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_ble_16(void)\r
-{\r
-       if(COND_LE())\r
-       {\r
-               uint offset = OPER_I_16();\r
-               REG_PC -= 2;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_16(offset);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_BCC_NOTAKE_W);\r
-}\r
-\r
-\r
-void m68k_op_bhi_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_HI())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_HI())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_bls_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_LS())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_LS())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_bcc_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_CC())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_CC())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_bcs_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_CS())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_CS())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_bne_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_NE())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_NE())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_beq_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_EQ())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_EQ())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_bvc_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_VC())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_VC())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_bvs_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_VS())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_VS())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_bpl_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_PL())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_PL())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_bmi_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_MI())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_MI())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_bge_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_GE())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_GE())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_blt_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_LT())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_LT())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_bgt_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_GT())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_GT())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_ble_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               if(COND_LE())\r
-               {\r
-                       uint offset = OPER_I_32();\r
-                       REG_PC -= 4;\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_32(offset);\r
-                       return;\r
-               }\r
-               REG_PC += 4;\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               if(COND_LE())\r
-               {\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-                       return;\r
-               }\r
-               USE_CYCLES(CYC_BCC_NOTAKE_B);\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_bchg_32_r_d(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint mask = 1 << (DX & 0x1f);\r
-\r
-       FLAG_Z = *r_dst & mask;\r
-       *r_dst ^= mask;\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_r_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_r_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_r_pi7(void)\r
-{\r
-       uint ea = EA_A7_PI_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_r_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_r_pd7(void)\r
-{\r
-       uint ea = EA_A7_PD_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_r_di(void)\r
-{\r
-       uint ea = EA_AY_DI_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_r_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_r_aw(void)\r
-{\r
-       uint ea = EA_AW_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_r_al(void)\r
-{\r
-       uint ea = EA_AL_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_32_s_d(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint mask = 1 << (OPER_I_8() & 0x1f);\r
-\r
-       FLAG_Z = *r_dst & mask;\r
-       *r_dst ^= mask;\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_s_ai(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_AI_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_s_pi(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_PI_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_s_pi7(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_A7_PI_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_s_pd(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_PD_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_s_pd7(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_A7_PD_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_s_di(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_DI_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_s_ix(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_IX_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_s_aw(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AW_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bchg_8_s_al(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AL_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src ^ mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_32_r_d(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint mask = 1 << (DX & 0x1f);\r
-\r
-       FLAG_Z = *r_dst & mask;\r
-       *r_dst &= ~mask;\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_r_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_r_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_r_pi7(void)\r
-{\r
-       uint ea = EA_A7_PI_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_r_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_r_pd7(void)\r
-{\r
-       uint ea = EA_A7_PD_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_r_di(void)\r
-{\r
-       uint ea = EA_AY_DI_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_r_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_r_aw(void)\r
-{\r
-       uint ea = EA_AW_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_r_al(void)\r
-{\r
-       uint ea = EA_AL_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_32_s_d(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint mask = 1 << (OPER_I_8() & 0x1f);\r
-\r
-       FLAG_Z = *r_dst & mask;\r
-       *r_dst &= ~mask;\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_s_ai(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_AI_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_s_pi(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_PI_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_s_pi7(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_A7_PI_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_s_pd(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_PD_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_s_pd7(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_A7_PD_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_s_di(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_DI_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_s_ix(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_IX_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_s_aw(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AW_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bclr_8_s_al(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AL_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src & ~mask);\r
-}\r
-\r
-\r
-void m68k_op_bfchg_32_d(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint* data = &DY;\r
-               uint64 mask;\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = REG_D[offset&7];\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               offset &= 31;\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask = ROR_32(mask, offset);\r
-\r
-               FLAG_N = NFLAG_32(*data<<offset);\r
-               FLAG_Z = *data & mask;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               *data ^= mask;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfchg_32_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_AI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long ^ mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte ^ mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfchg_32_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_DI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long ^ mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte ^ mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfchg_32_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_IX_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long ^ mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte ^ mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfchg_32_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AW_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long ^ mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte ^ mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfchg_32_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AL_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long ^ mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte ^ mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfclr_32_d(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint* data = &DY;\r
-               uint64 mask;\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = REG_D[offset&7];\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-\r
-               offset &= 31;\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask = ROR_32(mask, offset);\r
-\r
-               FLAG_N = NFLAG_32(*data<<offset);\r
-               FLAG_Z = *data & mask;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               *data &= ~mask;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfclr_32_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_AI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long & ~mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte & ~mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfclr_32_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_DI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long & ~mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte & ~mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfclr_32_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_IX_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long & ~mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte & ~mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfclr_32_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AW_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long & ~mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte & ~mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfclr_32_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AL_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long & ~mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte & ~mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfexts_32_d(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint64 data = DY;\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = REG_D[offset&7];\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               offset &= 31;\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = ROL_32(data, offset);\r
-               FLAG_N = NFLAG_32(data);\r
-               data = MAKE_INT_32(data) >> (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2>>12)&7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfexts_32_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_AY_AI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  = MAKE_INT_32(data) >> (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfexts_32_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_AY_DI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  = MAKE_INT_32(data) >> (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfexts_32_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_AY_IX_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  = MAKE_INT_32(data) >> (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfexts_32_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_AW_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  = MAKE_INT_32(data) >> (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfexts_32_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_AL_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  = MAKE_INT_32(data) >> (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfexts_32_pcdi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_PCDI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  = MAKE_INT_32(data) >> (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfexts_32_pcix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_PCIX_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  = MAKE_INT_32(data) >> (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfextu_32_d(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint64 data = DY;\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = REG_D[offset&7];\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               offset &= 31;\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = ROL_32(data, offset);\r
-               FLAG_N = NFLAG_32(data);\r
-               data >>= 32 - width;\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2>>12)&7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfextu_32_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_AY_AI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-               offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfextu_32_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_AY_DI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-               offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfextu_32_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_AY_IX_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-               offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfextu_32_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_AW_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-               offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfextu_32_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_AL_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-               offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfextu_32_pcdi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_PCDI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-               offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfextu_32_pcix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint data;\r
-               uint ea = EA_PCIX_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-               offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<offset);\r
-\r
-               if((offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               REG_D[(word2 >> 12) & 7] = data;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfffo_32_d(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint64 data = DY;\r
-               uint bit;\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = REG_D[offset&7];\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               offset &= 31;\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = ROL_32(data, offset);\r
-               FLAG_N = NFLAG_32(data);\r
-               data >>= 32 - width;\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)\r
-                       offset++;\r
-\r
-               REG_D[(word2>>12)&7] = offset;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfffo_32_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               sint local_offset;\r
-               uint width = word2;\r
-               uint data;\r
-               uint bit;\r
-               uint ea = EA_AY_AI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               local_offset = offset % 8;\r
-               if(local_offset < 0)\r
-               {\r
-                       local_offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<local_offset);\r
-\r
-               if((local_offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << local_offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)\r
-                       offset++;\r
-\r
-               REG_D[(word2>>12)&7] = offset;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfffo_32_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               sint local_offset;\r
-               uint width = word2;\r
-               uint data;\r
-               uint bit;\r
-               uint ea = EA_AY_DI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               local_offset = offset % 8;\r
-               if(local_offset < 0)\r
-               {\r
-                       local_offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<local_offset);\r
-\r
-               if((local_offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << local_offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)\r
-                       offset++;\r
-\r
-               REG_D[(word2>>12)&7] = offset;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfffo_32_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               sint local_offset;\r
-               uint width = word2;\r
-               uint data;\r
-               uint bit;\r
-               uint ea = EA_AY_IX_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               local_offset = offset % 8;\r
-               if(local_offset < 0)\r
-               {\r
-                       local_offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<local_offset);\r
-\r
-               if((local_offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << local_offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)\r
-                       offset++;\r
-\r
-               REG_D[(word2>>12)&7] = offset;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfffo_32_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               sint local_offset;\r
-               uint width = word2;\r
-               uint data;\r
-               uint bit;\r
-               uint ea = EA_AW_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               local_offset = offset % 8;\r
-               if(local_offset < 0)\r
-               {\r
-                       local_offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<local_offset);\r
-\r
-               if((local_offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << local_offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)\r
-                       offset++;\r
-\r
-               REG_D[(word2>>12)&7] = offset;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfffo_32_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               sint local_offset;\r
-               uint width = word2;\r
-               uint data;\r
-               uint bit;\r
-               uint ea = EA_AL_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               local_offset = offset % 8;\r
-               if(local_offset < 0)\r
-               {\r
-                       local_offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<local_offset);\r
-\r
-               if((local_offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << local_offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)\r
-                       offset++;\r
-\r
-               REG_D[(word2>>12)&7] = offset;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfffo_32_pcdi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               sint local_offset;\r
-               uint width = word2;\r
-               uint data;\r
-               uint bit;\r
-               uint ea = EA_PCDI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               local_offset = offset % 8;\r
-               if(local_offset < 0)\r
-               {\r
-                       local_offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<local_offset);\r
-\r
-               if((local_offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << local_offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)\r
-                       offset++;\r
-\r
-               REG_D[(word2>>12)&7] = offset;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfffo_32_pcix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               sint local_offset;\r
-               uint width = word2;\r
-               uint data;\r
-               uint bit;\r
-               uint ea = EA_PCIX_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               local_offset = offset % 8;\r
-               if(local_offset < 0)\r
-               {\r
-                       local_offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               data = m68ki_read_32(ea);\r
-               data = MASK_OUT_ABOVE_32(data<<local_offset);\r
-\r
-               if((local_offset+width) > 32)\r
-                       data |= (m68ki_read_8(ea+4) << local_offset) >> 8;\r
-\r
-               FLAG_N = NFLAG_32(data);\r
-               data  >>= (32 - width);\r
-\r
-               FLAG_Z = data;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               for(bit = 1<<(width-1);bit && !(data & bit);bit>>= 1)\r
-                       offset++;\r
-\r
-               REG_D[(word2>>12)&7] = offset;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfins_32_d(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint* data = &DY;\r
-               uint64 mask;\r
-               uint64 insert = REG_D[(word2>>12)&7];\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = REG_D[offset&7];\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-\r
-               offset &= 31;\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask = ROR_32(mask, offset);\r
-\r
-               insert = MASK_OUT_ABOVE_32(insert << (32 - width));\r
-               FLAG_N = NFLAG_32(insert);\r
-               FLAG_Z = insert;\r
-               insert = ROR_32(insert, offset);\r
-\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               *data &= ~mask;\r
-               *data |= insert;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfins_32_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint insert_base = REG_D[(word2>>12)&7];\r
-               uint insert_long;\r
-               uint insert_byte;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_AI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               insert_base = MASK_OUT_ABOVE_32(insert_base << (32 - width));\r
-               FLAG_N = NFLAG_32(insert_base);\r
-               FLAG_Z = insert_base;\r
-               insert_long = insert_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, (data_long & ~mask_long) | insert_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       insert_byte = MASK_OUT_ABOVE_8(insert_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, (data_byte & ~mask_byte) | insert_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfins_32_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint insert_base = REG_D[(word2>>12)&7];\r
-               uint insert_long;\r
-               uint insert_byte;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_DI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               insert_base = MASK_OUT_ABOVE_32(insert_base << (32 - width));\r
-               FLAG_N = NFLAG_32(insert_base);\r
-               FLAG_Z = insert_base;\r
-               insert_long = insert_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, (data_long & ~mask_long) | insert_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       insert_byte = MASK_OUT_ABOVE_8(insert_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, (data_byte & ~mask_byte) | insert_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfins_32_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint insert_base = REG_D[(word2>>12)&7];\r
-               uint insert_long;\r
-               uint insert_byte;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_IX_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               insert_base = MASK_OUT_ABOVE_32(insert_base << (32 - width));\r
-               FLAG_N = NFLAG_32(insert_base);\r
-               FLAG_Z = insert_base;\r
-               insert_long = insert_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, (data_long & ~mask_long) | insert_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       insert_byte = MASK_OUT_ABOVE_8(insert_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, (data_byte & ~mask_byte) | insert_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfins_32_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint insert_base = REG_D[(word2>>12)&7];\r
-               uint insert_long;\r
-               uint insert_byte;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AW_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               insert_base = MASK_OUT_ABOVE_32(insert_base << (32 - width));\r
-               FLAG_N = NFLAG_32(insert_base);\r
-               FLAG_Z = insert_base;\r
-               insert_long = insert_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, (data_long & ~mask_long) | insert_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       insert_byte = MASK_OUT_ABOVE_8(insert_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, (data_byte & ~mask_byte) | insert_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfins_32_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint insert_base = REG_D[(word2>>12)&7];\r
-               uint insert_long;\r
-               uint insert_byte;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AL_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               insert_base = MASK_OUT_ABOVE_32(insert_base << (32 - width));\r
-               FLAG_N = NFLAG_32(insert_base);\r
-               FLAG_Z = insert_base;\r
-               insert_long = insert_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, (data_long & ~mask_long) | insert_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       insert_byte = MASK_OUT_ABOVE_8(insert_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, (data_byte & ~mask_byte) | insert_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfset_32_d(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint* data = &DY;\r
-               uint64 mask;\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = REG_D[offset&7];\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-\r
-               offset &= 31;\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask = ROR_32(mask, offset);\r
-\r
-               FLAG_N = NFLAG_32(*data<<offset);\r
-               FLAG_Z = *data & mask;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               *data |= mask;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfset_32_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_AI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long | mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte | mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfset_32_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_DI_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long | mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte | mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfset_32_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_IX_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long | mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte | mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfset_32_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AW_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long | mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte | mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bfset_32_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AL_8();\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = NFLAG_32(data_long << offset);\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               m68ki_write_32(ea, data_long | mask_long);\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-                       m68ki_write_8(ea+4, data_byte | mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bftst_32_d(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint* data = &DY;\r
-               uint64 mask;\r
-\r
-\r
-               if(BIT_B(word2))\r
-                       offset = REG_D[offset&7];\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-\r
-               offset &= 31;\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask = ROR_32(mask, offset);\r
-\r
-               FLAG_N = NFLAG_32(*data<<offset);\r
-               FLAG_Z = *data & mask;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bftst_32_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_AI_8();\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = ((data_long & (0x80000000 >> offset))<<offset)>>24;\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bftst_32_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_DI_8();\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = ((data_long & (0x80000000 >> offset))<<offset)>>24;\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bftst_32_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AY_IX_8();\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = ((data_long & (0x80000000 >> offset))<<offset)>>24;\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bftst_32_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AW_8();\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = ((data_long & (0x80000000 >> offset))<<offset)>>24;\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bftst_32_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_AL_8();\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = ((data_long & (0x80000000 >> offset))<<offset)>>24;\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bftst_32_pcdi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_PCDI_8();\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = ((data_long & (0x80000000 >> offset))<<offset)>>24;\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bftst_32_pcix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               sint offset = (word2>>6)&31;\r
-               uint width = word2;\r
-               uint mask_base;\r
-               uint data_long;\r
-               uint mask_long;\r
-               uint data_byte = 0;\r
-               uint mask_byte = 0;\r
-               uint ea = EA_PCIX_8();\r
-\r
-               if(BIT_B(word2))\r
-                       offset = MAKE_INT_32(REG_D[offset&7]);\r
-               if(BIT_5(word2))\r
-                       width = REG_D[width&7];\r
-\r
-               /* Offset is signed so we have to use ugly math =( */\r
-               ea += offset / 8;\r
-               offset %= 8;\r
-               if(offset < 0)\r
-               {\r
-                       offset += 8;\r
-                       ea--;\r
-               }\r
-               width = ((width-1) & 31) + 1;\r
-\r
-\r
-               mask_base = MASK_OUT_ABOVE_32(0xffffffff << (32 - width));\r
-               mask_long = mask_base >> offset;\r
-\r
-               data_long = m68ki_read_32(ea);\r
-               FLAG_N = ((data_long & (0x80000000 >> offset))<<offset)>>24;\r
-               FLAG_Z = data_long & mask_long;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if((width + offset) > 32)\r
-               {\r
-                       mask_byte = MASK_OUT_ABOVE_8(mask_base);\r
-                       data_byte = m68ki_read_8(ea+4);\r
-                       FLAG_Z |= (data_byte & mask_byte);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bkpt(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               m68ki_bkpt_ack(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE) ? REG_IR & 7 : 0);      /* auto-disable (see m68kcpu.h) */\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_bra_8(void)\r
-{\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-//     if(REG_PC == REG_PPC)\r
-//             USE_ALL_CYCLES();\r
-}\r
-\r
-\r
-void m68k_op_bra_16(void)\r
-{\r
-       uint offset = OPER_I_16();\r
-       REG_PC -= 2;\r
-       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-       m68ki_branch_16(offset);\r
-//     if(REG_PC == REG_PPC)\r
-//             USE_ALL_CYCLES();\r
-}\r
-\r
-\r
-void m68k_op_bra_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint offset = OPER_I_32();\r
-               REG_PC -= 4;\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_32(offset);\r
-               if(REG_PC == REG_PPC)\r
-                       USE_ALL_CYCLES();\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-//             if(REG_PC == REG_PPC)\r
-//                     USE_ALL_CYCLES();\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_bset_32_r_d(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint mask = 1 << (DX & 0x1f);\r
-\r
-       FLAG_Z = *r_dst & mask;\r
-       *r_dst |= mask;\r
-}\r
-\r
-\r
-void m68k_op_bset_8_r_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_r_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_r_pi7(void)\r
-{\r
-       uint ea = EA_A7_PI_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_r_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_r_pd7(void)\r
-{\r
-       uint ea = EA_A7_PD_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_r_di(void)\r
-{\r
-       uint ea = EA_AY_DI_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_r_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_r_aw(void)\r
-{\r
-       uint ea = EA_AW_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_r_al(void)\r
-{\r
-       uint ea = EA_AL_8();\r
-       uint src = m68ki_read_8(ea);\r
-       uint mask = 1 << (DX & 7);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_32_s_d(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint mask = 1 << (OPER_I_8() & 0x1f);\r
-\r
-       FLAG_Z = *r_dst & mask;\r
-       *r_dst |= mask;\r
-}\r
-\r
-\r
-void m68k_op_bset_8_s_ai(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_AI_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_s_pi(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_PI_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_s_pi7(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_A7_PI_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_s_pd(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_PD_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_s_pd7(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_A7_PD_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_s_di(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_DI_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_s_ix(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AY_IX_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_s_aw(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AW_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bset_8_s_al(void)\r
-{\r
-       uint mask = 1 << (OPER_I_8() & 7);\r
-       uint ea = EA_AL_8();\r
-       uint src = m68ki_read_8(ea);\r
-\r
-       FLAG_Z = src & mask;\r
-       m68ki_write_8(ea, src | mask);\r
-}\r
-\r
-\r
-void m68k_op_bsr_8(void)\r
-{\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       m68ki_push_32(REG_PC);\r
-       m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-}\r
-\r
-\r
-void m68k_op_bsr_16(void)\r
-{\r
-       uint offset = OPER_I_16();\r
-       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-       m68ki_push_32(REG_PC);\r
-       REG_PC -= 2;\r
-       m68ki_branch_16(offset);\r
-}\r
-\r
-\r
-void m68k_op_bsr_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint offset = OPER_I_32();\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_push_32(REG_PC);\r
-               REG_PC -= 4;\r
-               m68ki_branch_32(offset);\r
-               return;\r
-       }\r
-       else\r
-       {\r
-               m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-               m68ki_push_32(REG_PC);\r
-               m68ki_branch_8(MASK_OUT_ABOVE_8(REG_IR));\r
-       }\r
-}\r
-\r
-\r
-void m68k_op_btst_32_r_d(void)\r
-{\r
-       FLAG_Z = DY & (1 << (DX & 0x1f));\r
-}\r
-\r
-\r
-void m68k_op_btst_8_r_ai(void)\r
-{\r
-       FLAG_Z = OPER_AY_AI_8() & (1 << (DX & 7));\r
-}\r
-\r
-\r
-void m68k_op_btst_8_r_pi(void)\r
-{\r
-       FLAG_Z = OPER_AY_PI_8() & (1 << (DX & 7));\r
-}\r
-\r
-\r
-void m68k_op_btst_8_r_pi7(void)\r
-{\r
-       FLAG_Z = OPER_A7_PI_8() & (1 << (DX & 7));\r
-}\r
-\r
-\r
-void m68k_op_btst_8_r_pd(void)\r
-{\r
-       FLAG_Z = OPER_AY_PD_8() & (1 << (DX & 7));\r
-}\r
-\r
-\r
-void m68k_op_btst_8_r_pd7(void)\r
-{\r
-       FLAG_Z = OPER_A7_PD_8() & (1 << (DX & 7));\r
-}\r
-\r
-\r
-void m68k_op_btst_8_r_di(void)\r
-{\r
-       FLAG_Z = OPER_AY_DI_8() & (1 << (DX & 7));\r
-}\r
-\r
-\r
-void m68k_op_btst_8_r_ix(void)\r
-{\r
-       FLAG_Z = OPER_AY_IX_8() & (1 << (DX & 7));\r
-}\r
-\r
-\r
-void m68k_op_btst_8_r_aw(void)\r
-{\r
-       FLAG_Z = OPER_AW_8() & (1 << (DX & 7));\r
-}\r
-\r
-\r
-void m68k_op_btst_8_r_al(void)\r
-{\r
-       FLAG_Z = OPER_AL_8() & (1 << (DX & 7));\r
-}\r
-\r
-\r
-void m68k_op_btst_8_r_pcdi(void)\r
-{\r
-       FLAG_Z = OPER_PCDI_8() & (1 << (DX & 7));\r
-}\r
-\r
-\r
-void m68k_op_btst_8_r_pcix(void)\r
-{\r
-       FLAG_Z = OPER_PCIX_8() & (1 << (DX & 7));\r
-}\r
-\r
-\r
-void m68k_op_btst_8_r_i(void)\r
-{\r
-       FLAG_Z = OPER_I_8() & (1 << (DX & 7));\r
-}\r
-\r
-\r
-void m68k_op_btst_32_s_d(void)\r
-{\r
-       FLAG_Z = DY & (1 << (OPER_I_8() & 0x1f));\r
-}\r
-\r
-\r
-void m68k_op_btst_8_s_ai(void)\r
-{\r
-       uint bit = OPER_I_8() & 7;\r
-\r
-       FLAG_Z = OPER_AY_AI_8() & (1 << bit);\r
-}\r
-\r
-\r
-void m68k_op_btst_8_s_pi(void)\r
-{\r
-       uint bit = OPER_I_8() & 7;\r
-\r
-       FLAG_Z = OPER_AY_PI_8() & (1 << bit);\r
-}\r
-\r
-\r
-void m68k_op_btst_8_s_pi7(void)\r
-{\r
-       uint bit = OPER_I_8() & 7;\r
-\r
-       FLAG_Z = OPER_A7_PI_8() & (1 << bit);\r
-}\r
-\r
-\r
-void m68k_op_btst_8_s_pd(void)\r
-{\r
-       uint bit = OPER_I_8() & 7;\r
-\r
-       FLAG_Z = OPER_AY_PD_8() & (1 << bit);\r
-}\r
-\r
-\r
-void m68k_op_btst_8_s_pd7(void)\r
-{\r
-       uint bit = OPER_I_8() & 7;\r
-\r
-       FLAG_Z = OPER_A7_PD_8() & (1 << bit);\r
-}\r
-\r
-\r
-void m68k_op_btst_8_s_di(void)\r
-{\r
-       uint bit = OPER_I_8() & 7;\r
-\r
-       FLAG_Z = OPER_AY_DI_8() & (1 << bit);\r
-}\r
-\r
-\r
-void m68k_op_btst_8_s_ix(void)\r
-{\r
-       uint bit = OPER_I_8() & 7;\r
-\r
-       FLAG_Z = OPER_AY_IX_8() & (1 << bit);\r
-}\r
-\r
-\r
-void m68k_op_btst_8_s_aw(void)\r
-{\r
-       uint bit = OPER_I_8() & 7;\r
-\r
-       FLAG_Z = OPER_AW_8() & (1 << bit);\r
-}\r
-\r
-\r
-void m68k_op_btst_8_s_al(void)\r
-{\r
-       uint bit = OPER_I_8() & 7;\r
-\r
-       FLAG_Z = OPER_AL_8() & (1 << bit);\r
-}\r
-\r
-\r
-void m68k_op_btst_8_s_pcdi(void)\r
-{\r
-       uint bit = OPER_I_8() & 7;\r
-\r
-       FLAG_Z = OPER_PCDI_8() & (1 << bit);\r
-}\r
-\r
-\r
-void m68k_op_btst_8_s_pcix(void)\r
-{\r
-       uint bit = OPER_I_8() & 7;\r
-\r
-       FLAG_Z = OPER_PCIX_8() & (1 << bit);\r
-}\r
-\r
-\r
-void m68k_op_callm_32_ai(void)\r
-{\r
-       /* note: watch out for pcrelative modes */\r
-       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-       {\r
-               uint ea = EA_AY_AI_32();\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               REG_PC += 2;\r
-(void)ea;      /* just to avoid an 'unused variable' warning */\r
-               M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",\r
-                                        m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,\r
-                                        m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_callm_32_di(void)\r
-{\r
-       /* note: watch out for pcrelative modes */\r
-       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-       {\r
-               uint ea = EA_AY_DI_32();\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               REG_PC += 2;\r
-(void)ea;      /* just to avoid an 'unused variable' warning */\r
-               M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",\r
-                                        m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,\r
-                                        m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_callm_32_ix(void)\r
-{\r
-       /* note: watch out for pcrelative modes */\r
-       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-       {\r
-               uint ea = EA_AY_IX_32();\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               REG_PC += 2;\r
-(void)ea;      /* just to avoid an 'unused variable' warning */\r
-               M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",\r
-                                        m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,\r
-                                        m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_callm_32_aw(void)\r
-{\r
-       /* note: watch out for pcrelative modes */\r
-       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-       {\r
-               uint ea = EA_AW_32();\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               REG_PC += 2;\r
-(void)ea;      /* just to avoid an 'unused variable' warning */\r
-               M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",\r
-                                        m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,\r
-                                        m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_callm_32_al(void)\r
-{\r
-       /* note: watch out for pcrelative modes */\r
-       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-       {\r
-               uint ea = EA_AL_32();\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               REG_PC += 2;\r
-(void)ea;      /* just to avoid an 'unused variable' warning */\r
-               M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",\r
-                                        m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,\r
-                                        m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_callm_32_pcdi(void)\r
-{\r
-       /* note: watch out for pcrelative modes */\r
-       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-       {\r
-               uint ea = EA_PCDI_32();\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               REG_PC += 2;\r
-(void)ea;      /* just to avoid an 'unused variable' warning */\r
-               M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",\r
-                                        m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,\r
-                                        m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_callm_32_pcix(void)\r
-{\r
-       /* note: watch out for pcrelative modes */\r
-       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-       {\r
-               uint ea = EA_PCIX_32();\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               REG_PC += 2;\r
-(void)ea;      /* just to avoid an 'unused variable' warning */\r
-               M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",\r
-                                        m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,\r
-                                        m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_8_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_AI_8();\r
-               uint dest = m68ki_read_8(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_8(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_8(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-               FLAG_V = VFLAG_SUB_8(*compare, dest, res);\r
-               FLAG_C = CFLAG_8(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_8(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_8(ea, MASK_OUT_ABOVE_8(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_8_pi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_PI_8();\r
-               uint dest = m68ki_read_8(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_8(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_8(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-               FLAG_V = VFLAG_SUB_8(*compare, dest, res);\r
-               FLAG_C = CFLAG_8(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_8(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_8(ea, MASK_OUT_ABOVE_8(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_8_pi7(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_A7_PI_8();\r
-               uint dest = m68ki_read_8(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_8(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_8(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-               FLAG_V = VFLAG_SUB_8(*compare, dest, res);\r
-               FLAG_C = CFLAG_8(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_8(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_8(ea, MASK_OUT_ABOVE_8(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_8_pd(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_PD_8();\r
-               uint dest = m68ki_read_8(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_8(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_8(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-               FLAG_V = VFLAG_SUB_8(*compare, dest, res);\r
-               FLAG_C = CFLAG_8(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_8(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_8(ea, MASK_OUT_ABOVE_8(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_8_pd7(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_A7_PD_8();\r
-               uint dest = m68ki_read_8(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_8(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_8(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-               FLAG_V = VFLAG_SUB_8(*compare, dest, res);\r
-               FLAG_C = CFLAG_8(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_8(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_8(ea, MASK_OUT_ABOVE_8(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_8_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_DI_8();\r
-               uint dest = m68ki_read_8(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_8(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_8(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-               FLAG_V = VFLAG_SUB_8(*compare, dest, res);\r
-               FLAG_C = CFLAG_8(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_8(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_8(ea, MASK_OUT_ABOVE_8(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_8_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_IX_8();\r
-               uint dest = m68ki_read_8(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_8(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_8(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-               FLAG_V = VFLAG_SUB_8(*compare, dest, res);\r
-               FLAG_C = CFLAG_8(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_8(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_8(ea, MASK_OUT_ABOVE_8(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_8_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AW_8();\r
-               uint dest = m68ki_read_8(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_8(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_8(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-               FLAG_V = VFLAG_SUB_8(*compare, dest, res);\r
-               FLAG_C = CFLAG_8(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_8(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_8(ea, MASK_OUT_ABOVE_8(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_8_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AL_8();\r
-               uint dest = m68ki_read_8(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_8(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_8(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-               FLAG_V = VFLAG_SUB_8(*compare, dest, res);\r
-               FLAG_C = CFLAG_8(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_8(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_8(ea, MASK_OUT_ABOVE_8(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_16_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_AI_16();\r
-               uint dest = m68ki_read_16(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_16(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_16(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-               FLAG_V = VFLAG_SUB_16(*compare, dest, res);\r
-               FLAG_C = CFLAG_16(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_16(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_16_pi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_PI_16();\r
-               uint dest = m68ki_read_16(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_16(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_16(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-               FLAG_V = VFLAG_SUB_16(*compare, dest, res);\r
-               FLAG_C = CFLAG_16(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_16(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_16_pd(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_PD_16();\r
-               uint dest = m68ki_read_16(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_16(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_16(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-               FLAG_V = VFLAG_SUB_16(*compare, dest, res);\r
-               FLAG_C = CFLAG_16(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_16(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_16_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_DI_16();\r
-               uint dest = m68ki_read_16(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_16(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_16(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-               FLAG_V = VFLAG_SUB_16(*compare, dest, res);\r
-               FLAG_C = CFLAG_16(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_16(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_16_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_IX_16();\r
-               uint dest = m68ki_read_16(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_16(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_16(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-               FLAG_V = VFLAG_SUB_16(*compare, dest, res);\r
-               FLAG_C = CFLAG_16(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_16(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_16_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AW_16();\r
-               uint dest = m68ki_read_16(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_16(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_16(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-               FLAG_V = VFLAG_SUB_16(*compare, dest, res);\r
-               FLAG_C = CFLAG_16(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_16(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_16_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AL_16();\r
-               uint dest = m68ki_read_16(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - MASK_OUT_ABOVE_16(*compare);\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_16(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-               FLAG_V = VFLAG_SUB_16(*compare, dest, res);\r
-               FLAG_C = CFLAG_16(res);\r
-\r
-               if(COND_NE())\r
-                       *compare = MASK_OUT_BELOW_16(*compare) | dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_D[(word2 >> 6) & 7]));\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_32_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_AI_32();\r
-               uint dest = m68ki_read_32(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - *compare;\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_32(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-               FLAG_V = VFLAG_SUB_32(*compare, dest, res);\r
-               FLAG_C = CFLAG_SUB_32(*compare, dest, res);\r
-\r
-               if(COND_NE())\r
-                       *compare = dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_32(ea, REG_D[(word2 >> 6) & 7]);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_32_pi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_PI_32();\r
-               uint dest = m68ki_read_32(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - *compare;\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_32(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-               FLAG_V = VFLAG_SUB_32(*compare, dest, res);\r
-               FLAG_C = CFLAG_SUB_32(*compare, dest, res);\r
-\r
-               if(COND_NE())\r
-                       *compare = dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_32(ea, REG_D[(word2 >> 6) & 7]);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_32_pd(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_PD_32();\r
-               uint dest = m68ki_read_32(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - *compare;\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_32(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-               FLAG_V = VFLAG_SUB_32(*compare, dest, res);\r
-               FLAG_C = CFLAG_SUB_32(*compare, dest, res);\r
-\r
-               if(COND_NE())\r
-                       *compare = dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_32(ea, REG_D[(word2 >> 6) & 7]);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_32_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_DI_32();\r
-               uint dest = m68ki_read_32(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - *compare;\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_32(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-               FLAG_V = VFLAG_SUB_32(*compare, dest, res);\r
-               FLAG_C = CFLAG_SUB_32(*compare, dest, res);\r
-\r
-               if(COND_NE())\r
-                       *compare = dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_32(ea, REG_D[(word2 >> 6) & 7]);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_32_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AY_IX_32();\r
-               uint dest = m68ki_read_32(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - *compare;\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_32(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-               FLAG_V = VFLAG_SUB_32(*compare, dest, res);\r
-               FLAG_C = CFLAG_SUB_32(*compare, dest, res);\r
-\r
-               if(COND_NE())\r
-                       *compare = dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_32(ea, REG_D[(word2 >> 6) & 7]);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_32_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AW_32();\r
-               uint dest = m68ki_read_32(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - *compare;\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_32(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-               FLAG_V = VFLAG_SUB_32(*compare, dest, res);\r
-               FLAG_C = CFLAG_SUB_32(*compare, dest, res);\r
-\r
-               if(COND_NE())\r
-                       *compare = dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_32(ea, REG_D[(word2 >> 6) & 7]);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas_32_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint ea = EA_AL_32();\r
-               uint dest = m68ki_read_32(ea);\r
-               uint* compare = &REG_D[word2 & 7];\r
-               uint res = dest - *compare;\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_32(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-               FLAG_V = VFLAG_SUB_32(*compare, dest, res);\r
-               FLAG_C = CFLAG_SUB_32(*compare, dest, res);\r
-\r
-               if(COND_NE())\r
-                       *compare = dest;\r
-               else\r
-               {\r
-                       USE_CYCLES(3);\r
-                       m68ki_write_32(ea, REG_D[(word2 >> 6) & 7]);\r
-               }\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas2_16(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_32();\r
-               uint* compare1 = &REG_D[(word2 >> 16) & 7];\r
-               uint ea1 = REG_DA[(word2 >> 28) & 15];\r
-               uint dest1 = m68ki_read_16(ea1);\r
-               uint res1 = dest1 - MASK_OUT_ABOVE_16(*compare1);\r
-               uint* compare2 = &REG_D[word2 & 7];\r
-               uint ea2 = REG_DA[(word2 >> 12) & 15];\r
-               uint dest2 = m68ki_read_16(ea2);\r
-               uint res2;\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_16(res1);\r
-               FLAG_Z = MASK_OUT_ABOVE_16(res1);\r
-               FLAG_V = VFLAG_SUB_16(*compare1, dest1, res1);\r
-               FLAG_C = CFLAG_16(res1);\r
-\r
-               if(COND_EQ())\r
-               {\r
-                       res2 = dest2 - MASK_OUT_ABOVE_16(*compare2);\r
-\r
-                       FLAG_N = NFLAG_16(res2);\r
-                       FLAG_Z = MASK_OUT_ABOVE_16(res2);\r
-                       FLAG_V = VFLAG_SUB_16(*compare2, dest2, res2);\r
-                       FLAG_C = CFLAG_16(res2);\r
-\r
-                       if(COND_EQ())\r
-                       {\r
-                               USE_CYCLES(3);\r
-                               m68ki_write_16(ea1, REG_D[(word2 >> 22) & 7]);\r
-                               m68ki_write_16(ea2, REG_D[(word2 >> 6) & 7]);\r
-                               return;\r
-                       }\r
-               }\r
-               *compare1 = BIT_1F(word2) ? MAKE_INT_16(dest1) : MASK_OUT_BELOW_16(*compare1) | dest1;\r
-               *compare2 = BIT_F(word2) ? MAKE_INT_16(dest2) : MASK_OUT_BELOW_16(*compare2) | dest2;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cas2_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_32();\r
-               uint* compare1 = &REG_D[(word2 >> 16) & 7];\r
-               uint ea1 = REG_DA[(word2 >> 28) & 15];\r
-               uint dest1 = m68ki_read_32(ea1);\r
-               uint res1 = dest1 - *compare1;\r
-               uint* compare2 = &REG_D[word2 & 7];\r
-               uint ea2 = REG_DA[(word2 >> 12) & 15];\r
-               uint dest2 = m68ki_read_32(ea2);\r
-               uint res2;\r
-\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               FLAG_N = NFLAG_32(res1);\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res1);\r
-               FLAG_V = VFLAG_SUB_32(*compare1, dest1, res1);\r
-               FLAG_C = CFLAG_SUB_32(*compare1, dest1, res1);\r
-\r
-               if(COND_EQ())\r
-               {\r
-                       res2 = dest2 - *compare2;\r
-\r
-                       FLAG_N = NFLAG_32(res2);\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res2);\r
-                       FLAG_V = VFLAG_SUB_32(*compare2, dest2, res2);\r
-                       FLAG_C = CFLAG_SUB_32(*compare2, dest2, res2);\r
-\r
-                       if(COND_EQ())\r
-                       {\r
-                               USE_CYCLES(3);\r
-                               m68ki_write_32(ea1, REG_D[(word2 >> 22) & 7]);\r
-                               m68ki_write_32(ea2, REG_D[(word2 >> 6) & 7]);\r
-                               return;\r
-                       }\r
-               }\r
-               *compare1 = dest1;\r
-               *compare2 = dest2;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk_16_d(void)\r
-{\r
-       sint src = MAKE_INT_16(DX);\r
-       sint bound = MAKE_INT_16(DY);\r
-\r
-       FLAG_Z = ZFLAG_16(src); /* Undocumented */\r
-       FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-       FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-       if(src >= 0 && src <= bound)\r
-       {\r
-               return;\r
-       }\r
-       FLAG_N = (src < 0)<<7;\r
-       m68ki_exception_trap(EXCEPTION_CHK);\r
-}\r
-\r
-\r
-void m68k_op_chk_16_ai(void)\r
-{\r
-       sint src = MAKE_INT_16(DX);\r
-       sint bound = MAKE_INT_16(OPER_AY_AI_16());\r
-\r
-       FLAG_Z = ZFLAG_16(src); /* Undocumented */\r
-       FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-       FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-       if(src >= 0 && src <= bound)\r
-       {\r
-               return;\r
-       }\r
-       FLAG_N = (src < 0)<<7;\r
-       m68ki_exception_trap(EXCEPTION_CHK);\r
-}\r
-\r
-\r
-void m68k_op_chk_16_pi(void)\r
-{\r
-       sint src = MAKE_INT_16(DX);\r
-       sint bound = MAKE_INT_16(OPER_AY_PI_16());\r
-\r
-       FLAG_Z = ZFLAG_16(src); /* Undocumented */\r
-       FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-       FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-       if(src >= 0 && src <= bound)\r
-       {\r
-               return;\r
-       }\r
-       FLAG_N = (src < 0)<<7;\r
-       m68ki_exception_trap(EXCEPTION_CHK);\r
-}\r
-\r
-\r
-void m68k_op_chk_16_pd(void)\r
-{\r
-       sint src = MAKE_INT_16(DX);\r
-       sint bound = MAKE_INT_16(OPER_AY_PD_16());\r
-\r
-       FLAG_Z = ZFLAG_16(src); /* Undocumented */\r
-       FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-       FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-       if(src >= 0 && src <= bound)\r
-       {\r
-               return;\r
-       }\r
-       FLAG_N = (src < 0)<<7;\r
-       m68ki_exception_trap(EXCEPTION_CHK);\r
-}\r
-\r
-\r
-void m68k_op_chk_16_di(void)\r
-{\r
-       sint src = MAKE_INT_16(DX);\r
-       sint bound = MAKE_INT_16(OPER_AY_DI_16());\r
-\r
-       FLAG_Z = ZFLAG_16(src); /* Undocumented */\r
-       FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-       FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-       if(src >= 0 && src <= bound)\r
-       {\r
-               return;\r
-       }\r
-       FLAG_N = (src < 0)<<7;\r
-       m68ki_exception_trap(EXCEPTION_CHK);\r
-}\r
-\r
-\r
-void m68k_op_chk_16_ix(void)\r
-{\r
-       sint src = MAKE_INT_16(DX);\r
-       sint bound = MAKE_INT_16(OPER_AY_IX_16());\r
-\r
-       FLAG_Z = ZFLAG_16(src); /* Undocumented */\r
-       FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-       FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-       if(src >= 0 && src <= bound)\r
-       {\r
-               return;\r
-       }\r
-       FLAG_N = (src < 0)<<7;\r
-       m68ki_exception_trap(EXCEPTION_CHK);\r
-}\r
-\r
-\r
-void m68k_op_chk_16_aw(void)\r
-{\r
-       sint src = MAKE_INT_16(DX);\r
-       sint bound = MAKE_INT_16(OPER_AW_16());\r
-\r
-       FLAG_Z = ZFLAG_16(src); /* Undocumented */\r
-       FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-       FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-       if(src >= 0 && src <= bound)\r
-       {\r
-               return;\r
-       }\r
-       FLAG_N = (src < 0)<<7;\r
-       m68ki_exception_trap(EXCEPTION_CHK);\r
-}\r
-\r
-\r
-void m68k_op_chk_16_al(void)\r
-{\r
-       sint src = MAKE_INT_16(DX);\r
-       sint bound = MAKE_INT_16(OPER_AL_16());\r
-\r
-       FLAG_Z = ZFLAG_16(src); /* Undocumented */\r
-       FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-       FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-       if(src >= 0 && src <= bound)\r
-       {\r
-               return;\r
-       }\r
-       FLAG_N = (src < 0)<<7;\r
-       m68ki_exception_trap(EXCEPTION_CHK);\r
-}\r
-\r
-\r
-void m68k_op_chk_16_pcdi(void)\r
-{\r
-       sint src = MAKE_INT_16(DX);\r
-       sint bound = MAKE_INT_16(OPER_PCDI_16());\r
-\r
-       FLAG_Z = ZFLAG_16(src); /* Undocumented */\r
-       FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-       FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-       if(src >= 0 && src <= bound)\r
-       {\r
-               return;\r
-       }\r
-       FLAG_N = (src < 0)<<7;\r
-       m68ki_exception_trap(EXCEPTION_CHK);\r
-}\r
-\r
-\r
-void m68k_op_chk_16_pcix(void)\r
-{\r
-       sint src = MAKE_INT_16(DX);\r
-       sint bound = MAKE_INT_16(OPER_PCIX_16());\r
-\r
-       FLAG_Z = ZFLAG_16(src); /* Undocumented */\r
-       FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-       FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-       if(src >= 0 && src <= bound)\r
-       {\r
-               return;\r
-       }\r
-       FLAG_N = (src < 0)<<7;\r
-       m68ki_exception_trap(EXCEPTION_CHK);\r
-}\r
-\r
-\r
-void m68k_op_chk_16_i(void)\r
-{\r
-       sint src = MAKE_INT_16(DX);\r
-       sint bound = MAKE_INT_16(OPER_I_16());\r
-\r
-       FLAG_Z = ZFLAG_16(src); /* Undocumented */\r
-       FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-       FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-       if(src >= 0 && src <= bound)\r
-       {\r
-               return;\r
-       }\r
-       FLAG_N = (src < 0)<<7;\r
-       m68ki_exception_trap(EXCEPTION_CHK);\r
-}\r
-\r
-\r
-void m68k_op_chk_32_d(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               sint src = MAKE_INT_32(DX);\r
-               sint bound = MAKE_INT_32(DY);\r
-\r
-               FLAG_Z = ZFLAG_32(src); /* Undocumented */\r
-               FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-               FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-               if(src >= 0 && src <= bound)\r
-               {\r
-                       return;\r
-               }\r
-               FLAG_N = (src < 0)<<7;\r
-               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk_32_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               sint src = MAKE_INT_32(DX);\r
-               sint bound = MAKE_INT_32(OPER_AY_AI_32());\r
-\r
-               FLAG_Z = ZFLAG_32(src); /* Undocumented */\r
-               FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-               FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-               if(src >= 0 && src <= bound)\r
-               {\r
-                       return;\r
-               }\r
-               FLAG_N = (src < 0)<<7;\r
-               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk_32_pi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               sint src = MAKE_INT_32(DX);\r
-               sint bound = MAKE_INT_32(OPER_AY_PI_32());\r
-\r
-               FLAG_Z = ZFLAG_32(src); /* Undocumented */\r
-               FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-               FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-               if(src >= 0 && src <= bound)\r
-               {\r
-                       return;\r
-               }\r
-               FLAG_N = (src < 0)<<7;\r
-               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk_32_pd(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               sint src = MAKE_INT_32(DX);\r
-               sint bound = MAKE_INT_32(OPER_AY_PD_32());\r
-\r
-               FLAG_Z = ZFLAG_32(src); /* Undocumented */\r
-               FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-               FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-               if(src >= 0 && src <= bound)\r
-               {\r
-                       return;\r
-               }\r
-               FLAG_N = (src < 0)<<7;\r
-               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk_32_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               sint src = MAKE_INT_32(DX);\r
-               sint bound = MAKE_INT_32(OPER_AY_DI_32());\r
-\r
-               FLAG_Z = ZFLAG_32(src); /* Undocumented */\r
-               FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-               FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-               if(src >= 0 && src <= bound)\r
-               {\r
-                       return;\r
-               }\r
-               FLAG_N = (src < 0)<<7;\r
-               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk_32_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               sint src = MAKE_INT_32(DX);\r
-               sint bound = MAKE_INT_32(OPER_AY_IX_32());\r
-\r
-               FLAG_Z = ZFLAG_32(src); /* Undocumented */\r
-               FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-               FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-               if(src >= 0 && src <= bound)\r
-               {\r
-                       return;\r
-               }\r
-               FLAG_N = (src < 0)<<7;\r
-               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk_32_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               sint src = MAKE_INT_32(DX);\r
-               sint bound = MAKE_INT_32(OPER_AW_32());\r
-\r
-               FLAG_Z = ZFLAG_32(src); /* Undocumented */\r
-               FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-               FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-               if(src >= 0 && src <= bound)\r
-               {\r
-                       return;\r
-               }\r
-               FLAG_N = (src < 0)<<7;\r
-               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk_32_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               sint src = MAKE_INT_32(DX);\r
-               sint bound = MAKE_INT_32(OPER_AL_32());\r
-\r
-               FLAG_Z = ZFLAG_32(src); /* Undocumented */\r
-               FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-               FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-               if(src >= 0 && src <= bound)\r
-               {\r
-                       return;\r
-               }\r
-               FLAG_N = (src < 0)<<7;\r
-               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk_32_pcdi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               sint src = MAKE_INT_32(DX);\r
-               sint bound = MAKE_INT_32(OPER_PCDI_32());\r
-\r
-               FLAG_Z = ZFLAG_32(src); /* Undocumented */\r
-               FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-               FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-               if(src >= 0 && src <= bound)\r
-               {\r
-                       return;\r
-               }\r
-               FLAG_N = (src < 0)<<7;\r
-               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk_32_pcix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               sint src = MAKE_INT_32(DX);\r
-               sint bound = MAKE_INT_32(OPER_PCIX_32());\r
-\r
-               FLAG_Z = ZFLAG_32(src); /* Undocumented */\r
-               FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-               FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-               if(src >= 0 && src <= bound)\r
-               {\r
-                       return;\r
-               }\r
-               FLAG_N = (src < 0)<<7;\r
-               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk_32_i(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               sint src = MAKE_INT_32(DX);\r
-               sint bound = MAKE_INT_32(OPER_I_32());\r
-\r
-               FLAG_Z = ZFLAG_32(src); /* Undocumented */\r
-               FLAG_V = VFLAG_CLEAR;   /* Undocumented */\r
-               FLAG_C = CFLAG_CLEAR;   /* Undocumented */\r
-\r
-               if(src >= 0 && src <= bound)\r
-               {\r
-                       return;\r
-               }\r
-               FLAG_N = (src < 0)<<7;\r
-               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_8_pcdi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xff;\r
-               uint ea = EA_PCDI_8();\r
-               uint lower_bound = m68ki_read_pcrel_8(ea);\r
-               uint upper_bound = m68ki_read_pcrel_8(ea + 1);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_8_pcix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xff;\r
-               uint ea = EA_PCIX_8();\r
-               uint lower_bound = m68ki_read_pcrel_8(ea);\r
-               uint upper_bound = m68ki_read_pcrel_8(ea + 1);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_8_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xff;\r
-               uint ea = EA_AY_AI_8();\r
-               uint lower_bound = m68ki_read_8(ea);\r
-               uint upper_bound = m68ki_read_8(ea + 1);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_8_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xff;\r
-               uint ea = EA_AY_DI_8();\r
-               uint lower_bound = m68ki_read_8(ea);\r
-               uint upper_bound = m68ki_read_8(ea + 1);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_8_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xff;\r
-               uint ea = EA_AY_IX_8();\r
-               uint lower_bound = m68ki_read_8(ea);\r
-               uint upper_bound = m68ki_read_8(ea + 1);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_8_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xff;\r
-               uint ea = EA_AW_8();\r
-               uint lower_bound = m68ki_read_8(ea);\r
-               uint upper_bound = m68ki_read_8(ea + 1);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_8_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xff;\r
-               uint ea = EA_AL_8();\r
-               uint lower_bound = m68ki_read_8(ea);\r
-               uint upper_bound = m68ki_read_8(ea + 1);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_8(compare) - MAKE_INT_8(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_16_pcdi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xffff;\r
-               uint ea = EA_PCDI_16();\r
-               uint lower_bound = m68ki_read_pcrel_16(ea);\r
-               uint upper_bound = m68ki_read_pcrel_16(ea + 2);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);\r
-               else\r
-                       FLAG_C = upper_bound - compare;\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_16_pcix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xffff;\r
-               uint ea = EA_PCIX_16();\r
-               uint lower_bound = m68ki_read_pcrel_16(ea);\r
-               uint upper_bound = m68ki_read_pcrel_16(ea + 2);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);\r
-               else\r
-                       FLAG_C = upper_bound - compare;\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_16_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xffff;\r
-               uint ea = EA_AY_AI_16();\r
-               uint lower_bound = m68ki_read_16(ea);\r
-               uint upper_bound = m68ki_read_16(ea + 2);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);\r
-               else\r
-                       FLAG_C = upper_bound - compare;\r
-\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_16_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xffff;\r
-               uint ea = EA_AY_DI_16();\r
-               uint lower_bound = m68ki_read_16(ea);\r
-               uint upper_bound = m68ki_read_16(ea + 2);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);\r
-               else\r
-                       FLAG_C = upper_bound - compare;\r
-\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_16_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xffff;\r
-               uint ea = EA_AY_IX_16();\r
-               uint lower_bound = m68ki_read_16(ea);\r
-               uint upper_bound = m68ki_read_16(ea + 2);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);\r
-               else\r
-                       FLAG_C = upper_bound - compare;\r
-\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_16_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xffff;\r
-               uint ea = EA_AW_16();\r
-               uint lower_bound = m68ki_read_16(ea);\r
-               uint upper_bound = m68ki_read_16(ea + 2);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);\r
-               else\r
-                       FLAG_C = upper_bound - compare;\r
-\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_16_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15]&0xffff;\r
-               uint ea = EA_AL_16();\r
-               uint lower_bound = m68ki_read_16(ea);\r
-               uint upper_bound = m68ki_read_16(ea + 2);\r
-\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(compare) - MAKE_INT_16(lower_bound);\r
-               else\r
-                       FLAG_C = compare - lower_bound;\r
-\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-               if(!BIT_F(word2))\r
-                       FLAG_C = MAKE_INT_16(upper_bound) - MAKE_INT_16(compare);\r
-               else\r
-                       FLAG_C = upper_bound - compare;\r
-\r
-               FLAG_C = CFLAG_16(FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_32_pcdi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15];\r
-               uint ea = EA_PCDI_32();\r
-               uint lower_bound = m68ki_read_pcrel_32(ea);\r
-               uint upper_bound = m68ki_read_pcrel_32(ea + 4);\r
-\r
-               FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_SUB_32(lower_bound, compare, FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               FLAG_C = CFLAG_SUB_32(compare, upper_bound, FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_32_pcix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15];\r
-               uint ea = EA_PCIX_32();\r
-               uint lower_bound = m68ki_read_pcrel_32(ea);\r
-               uint upper_bound = m68ki_read_pcrel_32(ea + 4);\r
-\r
-               FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_SUB_32(lower_bound, compare, FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               FLAG_C = CFLAG_SUB_32(compare, upper_bound, FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_32_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15];\r
-               uint ea = EA_AY_AI_32();\r
-               uint lower_bound = m68ki_read_32(ea);\r
-               uint upper_bound = m68ki_read_32(ea + 4);\r
-\r
-               FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_SUB_32(lower_bound, compare, FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               FLAG_C = CFLAG_SUB_32(compare, upper_bound, FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_32_di(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15];\r
-               uint ea = EA_AY_DI_32();\r
-               uint lower_bound = m68ki_read_32(ea);\r
-               uint upper_bound = m68ki_read_32(ea + 4);\r
-\r
-               FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_SUB_32(lower_bound, compare, FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               FLAG_C = CFLAG_SUB_32(compare, upper_bound, FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_32_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15];\r
-               uint ea = EA_AY_IX_32();\r
-               uint lower_bound = m68ki_read_32(ea);\r
-               uint upper_bound = m68ki_read_32(ea + 4);\r
-\r
-               FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_SUB_32(lower_bound, compare, FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               FLAG_C = CFLAG_SUB_32(compare, upper_bound, FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_32_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15];\r
-               uint ea = EA_AW_32();\r
-               uint lower_bound = m68ki_read_32(ea);\r
-               uint upper_bound = m68ki_read_32(ea + 4);\r
-\r
-               FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_SUB_32(lower_bound, compare, FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               FLAG_C = CFLAG_SUB_32(compare, upper_bound, FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_chk2cmp2_32_al(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint compare = REG_DA[(word2 >> 12) & 15];\r
-               uint ea = EA_AL_32();\r
-               uint lower_bound = m68ki_read_32(ea);\r
-               uint upper_bound = m68ki_read_32(ea + 4);\r
-\r
-               FLAG_C = compare - lower_bound;\r
-               FLAG_Z = !((upper_bound==compare) | (lower_bound==compare));\r
-               FLAG_C = CFLAG_SUB_32(lower_bound, compare, FLAG_C);\r
-               if(COND_CS())\r
-               {\r
-                       if(BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-                       return;\r
-               }\r
-\r
-               FLAG_C = upper_bound - compare;\r
-               FLAG_C = CFLAG_SUB_32(compare, upper_bound, FLAG_C);\r
-               if(COND_CS() && BIT_B(word2))\r
-                               m68ki_exception_trap(EXCEPTION_CHK);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_clr_8_d(void)\r
-{\r
-       DY &= 0xffffff00;\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_8_ai(void)\r
-{\r
-       m68ki_write_8(EA_AY_AI_8(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_8_pi(void)\r
-{\r
-       m68ki_write_8(EA_AY_PI_8(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_8_pi7(void)\r
-{\r
-       m68ki_write_8(EA_A7_PI_8(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_8_pd(void)\r
-{\r
-       m68ki_write_8(EA_AY_PD_8(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_8_pd7(void)\r
-{\r
-       m68ki_write_8(EA_A7_PD_8(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_8_di(void)\r
-{\r
-       m68ki_write_8(EA_AY_DI_8(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_8_ix(void)\r
-{\r
-       m68ki_write_8(EA_AY_IX_8(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_8_aw(void)\r
-{\r
-       m68ki_write_8(EA_AW_8(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_8_al(void)\r
-{\r
-       m68ki_write_8(EA_AL_8(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_16_d(void)\r
-{\r
-       DY &= 0xffff0000;\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_16_ai(void)\r
-{\r
-       m68ki_write_16(EA_AY_AI_16(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_16_pi(void)\r
-{\r
-       m68ki_write_16(EA_AY_PI_16(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_16_pd(void)\r
-{\r
-       m68ki_write_16(EA_AY_PD_16(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_16_di(void)\r
-{\r
-       m68ki_write_16(EA_AY_DI_16(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_16_ix(void)\r
-{\r
-       m68ki_write_16(EA_AY_IX_16(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_16_aw(void)\r
-{\r
-       m68ki_write_16(EA_AW_16(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_16_al(void)\r
-{\r
-       m68ki_write_16(EA_AL_16(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_32_d(void)\r
-{\r
-       DY = 0;\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_32_ai(void)\r
-{\r
-       m68ki_write_32(EA_AY_AI_32(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_32_pi(void)\r
-{\r
-       m68ki_write_32(EA_AY_PI_32(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_32_pd(void)\r
-{\r
-       m68ki_write_32(EA_AY_PD_32(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_32_di(void)\r
-{\r
-       m68ki_write_32(EA_AY_DI_32(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_32_ix(void)\r
-{\r
-       m68ki_write_32(EA_AY_IX_32(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_32_aw(void)\r
-{\r
-       m68ki_write_32(EA_AW_32(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_clr_32_al(void)\r
-{\r
-       m68ki_write_32(EA_AL_32(), 0);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_Z = ZFLAG_SET;\r
-}\r
-\r
-\r
-void m68k_op_cmp_8_d(void)\r
-{\r
-       uint src = MASK_OUT_ABOVE_8(DY);\r
-       uint dst = MASK_OUT_ABOVE_8(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_8_ai(void)\r
-{\r
-       uint src = OPER_AY_AI_8();\r
-       uint dst = MASK_OUT_ABOVE_8(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_8_pi(void)\r
-{\r
-       uint src = OPER_AY_PI_8();\r
-       uint dst = MASK_OUT_ABOVE_8(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_8_pi7(void)\r
-{\r
-       uint src = OPER_A7_PI_8();\r
-       uint dst = MASK_OUT_ABOVE_8(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_8_pd(void)\r
-{\r
-       uint src = OPER_AY_PD_8();\r
-       uint dst = MASK_OUT_ABOVE_8(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_8_pd7(void)\r
-{\r
-       uint src = OPER_A7_PD_8();\r
-       uint dst = MASK_OUT_ABOVE_8(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_8_di(void)\r
-{\r
-       uint src = OPER_AY_DI_8();\r
-       uint dst = MASK_OUT_ABOVE_8(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_8_ix(void)\r
-{\r
-       uint src = OPER_AY_IX_8();\r
-       uint dst = MASK_OUT_ABOVE_8(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_8_aw(void)\r
-{\r
-       uint src = OPER_AW_8();\r
-       uint dst = MASK_OUT_ABOVE_8(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_8_al(void)\r
-{\r
-       uint src = OPER_AL_8();\r
-       uint dst = MASK_OUT_ABOVE_8(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_8_pcdi(void)\r
-{\r
-       uint src = OPER_PCDI_8();\r
-       uint dst = MASK_OUT_ABOVE_8(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_8_pcix(void)\r
-{\r
-       uint src = OPER_PCIX_8();\r
-       uint dst = MASK_OUT_ABOVE_8(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_8_i(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint dst = MASK_OUT_ABOVE_8(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_16_d(void)\r
-{\r
-       uint src = MASK_OUT_ABOVE_16(DY);\r
-       uint dst = MASK_OUT_ABOVE_16(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_16_a(void)\r
-{\r
-       uint src = MASK_OUT_ABOVE_16(AY);\r
-       uint dst = MASK_OUT_ABOVE_16(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_16_ai(void)\r
-{\r
-       uint src = OPER_AY_AI_16();\r
-       uint dst = MASK_OUT_ABOVE_16(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_16_pi(void)\r
-{\r
-       uint src = OPER_AY_PI_16();\r
-       uint dst = MASK_OUT_ABOVE_16(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_16_pd(void)\r
-{\r
-       uint src = OPER_AY_PD_16();\r
-       uint dst = MASK_OUT_ABOVE_16(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_16_di(void)\r
-{\r
-       uint src = OPER_AY_DI_16();\r
-       uint dst = MASK_OUT_ABOVE_16(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_16_ix(void)\r
-{\r
-       uint src = OPER_AY_IX_16();\r
-       uint dst = MASK_OUT_ABOVE_16(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_16_aw(void)\r
-{\r
-       uint src = OPER_AW_16();\r
-       uint dst = MASK_OUT_ABOVE_16(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_16_al(void)\r
-{\r
-       uint src = OPER_AL_16();\r
-       uint dst = MASK_OUT_ABOVE_16(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_16_pcdi(void)\r
-{\r
-       uint src = OPER_PCDI_16();\r
-       uint dst = MASK_OUT_ABOVE_16(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_16_pcix(void)\r
-{\r
-       uint src = OPER_PCIX_16();\r
-       uint dst = MASK_OUT_ABOVE_16(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_16_i(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint dst = MASK_OUT_ABOVE_16(DX);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_32_d(void)\r
-{\r
-       uint src = DY;\r
-       uint dst = DX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_32_a(void)\r
-{\r
-       uint src = AY;\r
-       uint dst = DX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_32_ai(void)\r
-{\r
-       uint src = OPER_AY_AI_32();\r
-       uint dst = DX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_32_pi(void)\r
-{\r
-       uint src = OPER_AY_PI_32();\r
-       uint dst = DX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_32_pd(void)\r
-{\r
-       uint src = OPER_AY_PD_32();\r
-       uint dst = DX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_32_di(void)\r
-{\r
-       uint src = OPER_AY_DI_32();\r
-       uint dst = DX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_32_ix(void)\r
-{\r
-       uint src = OPER_AY_IX_32();\r
-       uint dst = DX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_32_aw(void)\r
-{\r
-       uint src = OPER_AW_32();\r
-       uint dst = DX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_32_al(void)\r
-{\r
-       uint src = OPER_AL_32();\r
-       uint dst = DX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_32_pcdi(void)\r
-{\r
-       uint src = OPER_PCDI_32();\r
-       uint dst = DX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_32_pcix(void)\r
-{\r
-       uint src = OPER_PCIX_32();\r
-       uint dst = DX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmp_32_i(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint dst = DX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_16_d(void)\r
-{\r
-       uint src = MAKE_INT_16(DY);\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_16_a(void)\r
-{\r
-       uint src = MAKE_INT_16(AY);\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_16_ai(void)\r
-{\r
-       uint src = MAKE_INT_16(OPER_AY_AI_16());\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_16_pi(void)\r
-{\r
-       uint src = MAKE_INT_16(OPER_AY_PI_16());\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_16_pd(void)\r
-{\r
-       uint src = MAKE_INT_16(OPER_AY_PD_16());\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_16_di(void)\r
-{\r
-       uint src = MAKE_INT_16(OPER_AY_DI_16());\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_16_ix(void)\r
-{\r
-       uint src = MAKE_INT_16(OPER_AY_IX_16());\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_16_aw(void)\r
-{\r
-       uint src = MAKE_INT_16(OPER_AW_16());\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_16_al(void)\r
-{\r
-       uint src = MAKE_INT_16(OPER_AL_16());\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_16_pcdi(void)\r
-{\r
-       uint src = MAKE_INT_16(OPER_PCDI_16());\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_16_pcix(void)\r
-{\r
-       uint src = MAKE_INT_16(OPER_PCIX_16());\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_16_i(void)\r
-{\r
-       uint src = MAKE_INT_16(OPER_I_16());\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_32_d(void)\r
-{\r
-       uint src = DY;\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_32_a(void)\r
-{\r
-       uint src = AY;\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_32_ai(void)\r
-{\r
-       uint src = OPER_AY_AI_32();\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_32_pi(void)\r
-{\r
-       uint src = OPER_AY_PI_32();\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_32_pd(void)\r
-{\r
-       uint src = OPER_AY_PD_32();\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_32_di(void)\r
-{\r
-       uint src = OPER_AY_DI_32();\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_32_ix(void)\r
-{\r
-       uint src = OPER_AY_IX_32();\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_32_aw(void)\r
-{\r
-       uint src = OPER_AW_32();\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_32_al(void)\r
-{\r
-       uint src = OPER_AL_32();\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_32_pcdi(void)\r
-{\r
-       uint src = OPER_PCDI_32();\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_32_pcix(void)\r
-{\r
-       uint src = OPER_PCIX_32();\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpa_32_i(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint dst = AX;\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_8_d(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint dst = MASK_OUT_ABOVE_8(DY);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_8_ai(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint dst = OPER_AY_AI_8();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_8_pi(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint dst = OPER_AY_PI_8();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_8_pi7(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint dst = OPER_A7_PI_8();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_8_pd(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint dst = OPER_AY_PD_8();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_8_pd7(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint dst = OPER_A7_PD_8();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_8_di(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint dst = OPER_AY_DI_8();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_8_ix(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint dst = OPER_AY_IX_8();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_8_aw(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint dst = OPER_AW_8();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_8_al(void)\r
-{\r
-       uint src = OPER_I_8();\r
-       uint dst = OPER_AL_8();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_8_pcdi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint src = OPER_I_8();\r
-               uint dst = OPER_PCDI_8();\r
-               uint res = dst - src;\r
-\r
-               FLAG_N = NFLAG_8(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-               FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-               FLAG_C = CFLAG_8(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cmpi_8_pcix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint src = OPER_I_8();\r
-               uint dst = OPER_PCIX_8();\r
-               uint res = dst - src;\r
-\r
-               FLAG_N = NFLAG_8(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-               FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-               FLAG_C = CFLAG_8(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cmpi_16_d(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint dst = MASK_OUT_ABOVE_16(DY);\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_16_ai(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint dst = OPER_AY_AI_16();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_16_pi(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint dst = OPER_AY_PI_16();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_16_pd(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint dst = OPER_AY_PD_16();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_16_di(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint dst = OPER_AY_DI_16();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_16_ix(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint dst = OPER_AY_IX_16();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_16_aw(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint dst = OPER_AW_16();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_16_al(void)\r
-{\r
-       uint src = OPER_I_16();\r
-       uint dst = OPER_AL_16();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_16_pcdi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint src = OPER_I_16();\r
-               uint dst = OPER_PCDI_16();\r
-               uint res = dst - src;\r
-\r
-               FLAG_N = NFLAG_16(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-               FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-               FLAG_C = CFLAG_16(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cmpi_16_pcix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint src = OPER_I_16();\r
-               uint dst = OPER_PCIX_16();\r
-               uint res = dst - src;\r
-\r
-               FLAG_N = NFLAG_16(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-               FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-               FLAG_C = CFLAG_16(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cmpi_32_d(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint dst = DY;\r
-       uint res = dst - src;\r
-\r
-       m68ki_cmpild_callback(src, REG_IR & 7);            /* auto-disable (see m68kcpu.h) */\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_32_ai(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint dst = OPER_AY_AI_32();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_32_pi(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint dst = OPER_AY_PI_32();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_32_pd(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint dst = OPER_AY_PD_32();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_32_di(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint dst = OPER_AY_DI_32();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_32_ix(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint dst = OPER_AY_IX_32();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_32_aw(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint dst = OPER_AW_32();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_32_al(void)\r
-{\r
-       uint src = OPER_I_32();\r
-       uint dst = OPER_AL_32();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cmpi_32_pcdi(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint src = OPER_I_32();\r
-               uint dst = OPER_PCDI_32();\r
-               uint res = dst - src;\r
-\r
-               FLAG_N = NFLAG_32(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-               FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-               FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cmpi_32_pcix(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint src = OPER_I_32();\r
-               uint dst = OPER_PCIX_32();\r
-               uint res = dst - src;\r
-\r
-               FLAG_N = NFLAG_32(res);\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-               FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-               FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_cmpm_8_ax7(void)\r
-{\r
-       uint src = OPER_AY_PI_8();\r
-       uint dst = OPER_A7_PI_8();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpm_8_ay7(void)\r
-{\r
-       uint src = OPER_A7_PI_8();\r
-       uint dst = OPER_AX_PI_8();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpm_8_axy7(void)\r
-{\r
-       uint src = OPER_A7_PI_8();\r
-       uint dst = OPER_A7_PI_8();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpm_8(void)\r
-{\r
-       uint src = OPER_AY_PI_8();\r
-       uint dst = OPER_AX_PI_8();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_8(res);\r
-       FLAG_V = VFLAG_SUB_8(src, dst, res);\r
-       FLAG_C = CFLAG_8(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpm_16(void)\r
-{\r
-       uint src = OPER_AY_PI_16();\r
-       uint dst = OPER_AX_PI_16();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(res);\r
-       FLAG_V = VFLAG_SUB_16(src, dst, res);\r
-       FLAG_C = CFLAG_16(res);\r
-}\r
-\r
-\r
-void m68k_op_cmpm_32(void)\r
-{\r
-       uint src = OPER_AY_PI_32();\r
-       uint dst = OPER_AX_PI_32();\r
-       uint res = dst - src;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-       FLAG_V = VFLAG_SUB_32(src, dst, res);\r
-       FLAG_C = CFLAG_SUB_32(src, dst, res);\r
-}\r
-\r
-\r
-void m68k_op_cpbcc_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",\r
-                                        m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,\r
-                                        m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));\r
-               return;\r
-       }\r
-       m68ki_exception_1111();\r
-}\r
-\r
-\r
-void m68k_op_cpdbcc_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",\r
-                                        m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,\r
-                                        m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));\r
-               return;\r
-       }\r
-       m68ki_exception_1111();\r
-}\r
-\r
-\r
-void m68k_op_cpgen_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",\r
-                                        m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,\r
-                                        m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));\r
-               return;\r
-       }\r
-       m68ki_exception_1111();\r
-}\r
-\r
-\r
-void m68k_op_cpscc_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",\r
-                                        m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,\r
-                                        m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));\r
-               return;\r
-       }\r
-       m68ki_exception_1111();\r
-}\r
-\r
-\r
-void m68k_op_cptrapcc_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               M68K_DO_LOG((M68K_LOG_FILEHANDLE "%s at %08x: called unimplemented instruction %04x (%s)\n",\r
-                                        m68ki_cpu_names[CPU_TYPE], ADDRESS_68K(REG_PC - 2), REG_IR,\r
-                                        m68k_disassemble_quick(ADDRESS_68K(REG_PC - 2))));\r
-               return;\r
-       }\r
-       m68ki_exception_1111();\r
-}\r
-\r
-\r
-/* ======================================================================== */\r
-/* ============================== END OF FILE ============================= */\r
-/* ======================================================================== */\r
-\r
-\r