updated Musashi to MAME 0.117
[picodrive.git] / cpu / musashi / m68kopdm.c
diff --git a/cpu/musashi/m68kopdm.c b/cpu/musashi/m68kopdm.c
deleted file mode 100644 (file)
index 82de8c5..0000000
+++ /dev/null
@@ -1,13385 +0,0 @@
-#include "m68kcpu.h"\r
-\r
-/* ======================================================================== */\r
-/* ========================= INSTRUCTION HANDLERS ========================= */\r
-/* ======================================================================== */\r
-\r
-\r
-void m68k_op_dbt_16(void)\r
-{\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dbf_16(void)\r
-{\r
-       uint* r_dst = &DY;\r
-       uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-       if(res != 0xffff)\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
-               USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-       USE_CYCLES(CYC_DBCC_F_EXP);\r
-}\r
-\r
-\r
-void m68k_op_dbhi_16(void)\r
-{\r
-       if(COND_NOT_HI())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dbls_16(void)\r
-{\r
-       if(COND_NOT_LS())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dbcc_16(void)\r
-{\r
-       if(COND_NOT_CC())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dbcs_16(void)\r
-{\r
-       if(COND_NOT_CS())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dbne_16(void)\r
-{\r
-       if(COND_NOT_NE())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dbeq_16(void)\r
-{\r
-       if(COND_NOT_EQ())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dbvc_16(void)\r
-{\r
-       if(COND_NOT_VC())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dbvs_16(void)\r
-{\r
-       if(COND_NOT_VS())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dbpl_16(void)\r
-{\r
-       if(COND_NOT_PL())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dbmi_16(void)\r
-{\r
-       if(COND_NOT_MI())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dbge_16(void)\r
-{\r
-       if(COND_NOT_GE())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dblt_16(void)\r
-{\r
-       if(COND_NOT_LT())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dbgt_16(void)\r
-{\r
-       if(COND_NOT_GT())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_dble_16(void)\r
-{\r
-       if(COND_NOT_LE())\r
-       {\r
-               uint* r_dst = &DY;\r
-               uint res = MASK_OUT_ABOVE_16(*r_dst - 1);\r
-\r
-               *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-               if(res != 0xffff)\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
-                       USE_CYCLES(CYC_DBCC_F_NOEXP);\r
-                       return;\r
-               }\r
-               REG_PC += 2;\r
-               USE_CYCLES(CYC_DBCC_F_EXP);\r
-               return;\r
-       }\r
-       REG_PC += 2;\r
-}\r
-\r
-\r
-void m68k_op_divs_16_d(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       sint src = MAKE_INT_16(DY);\r
-       sint quotient;\r
-       sint remainder;\r
-\r
-       if(src != 0)\r
-       {\r
-               if((uint32)*r_dst == 0x80000000 && src == -1)\r
-               {\r
-                       FLAG_Z = 0;\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = 0;\r
-                       return;\r
-               }\r
-\r
-               quotient = MAKE_INT_32(*r_dst) / src;\r
-               remainder = MAKE_INT_32(*r_dst) % src;\r
-\r
-               if(quotient == MAKE_INT_16(quotient))\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divs_16_ai(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       sint src = MAKE_INT_16(OPER_AY_AI_16());\r
-       sint quotient;\r
-       sint remainder;\r
-\r
-       if(src != 0)\r
-       {\r
-               if((uint32)*r_dst == 0x80000000 && src == -1)\r
-               {\r
-                       FLAG_Z = 0;\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = 0;\r
-                       return;\r
-               }\r
-\r
-               quotient = MAKE_INT_32(*r_dst) / src;\r
-               remainder = MAKE_INT_32(*r_dst) % src;\r
-\r
-               if(quotient == MAKE_INT_16(quotient))\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divs_16_pi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       sint src = MAKE_INT_16(OPER_AY_PI_16());\r
-       sint quotient;\r
-       sint remainder;\r
-\r
-       if(src != 0)\r
-       {\r
-               if((uint32)*r_dst == 0x80000000 && src == -1)\r
-               {\r
-                       FLAG_Z = 0;\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = 0;\r
-                       return;\r
-               }\r
-\r
-               quotient = MAKE_INT_32(*r_dst) / src;\r
-               remainder = MAKE_INT_32(*r_dst) % src;\r
-\r
-               if(quotient == MAKE_INT_16(quotient))\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divs_16_pd(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       sint src = MAKE_INT_16(OPER_AY_PD_16());\r
-       sint quotient;\r
-       sint remainder;\r
-\r
-       if(src != 0)\r
-       {\r
-               if((uint32)*r_dst == 0x80000000 && src == -1)\r
-               {\r
-                       FLAG_Z = 0;\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = 0;\r
-                       return;\r
-               }\r
-\r
-               quotient = MAKE_INT_32(*r_dst) / src;\r
-               remainder = MAKE_INT_32(*r_dst) % src;\r
-\r
-               if(quotient == MAKE_INT_16(quotient))\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divs_16_di(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       sint src = MAKE_INT_16(OPER_AY_DI_16());\r
-       sint quotient;\r
-       sint remainder;\r
-\r
-       if(src != 0)\r
-       {\r
-               if((uint32)*r_dst == 0x80000000 && src == -1)\r
-               {\r
-                       FLAG_Z = 0;\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = 0;\r
-                       return;\r
-               }\r
-\r
-               quotient = MAKE_INT_32(*r_dst) / src;\r
-               remainder = MAKE_INT_32(*r_dst) % src;\r
-\r
-               if(quotient == MAKE_INT_16(quotient))\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divs_16_ix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       sint src = MAKE_INT_16(OPER_AY_IX_16());\r
-       sint quotient;\r
-       sint remainder;\r
-\r
-       if(src != 0)\r
-       {\r
-               if((uint32)*r_dst == 0x80000000 && src == -1)\r
-               {\r
-                       FLAG_Z = 0;\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = 0;\r
-                       return;\r
-               }\r
-\r
-               quotient = MAKE_INT_32(*r_dst) / src;\r
-               remainder = MAKE_INT_32(*r_dst) % src;\r
-\r
-               if(quotient == MAKE_INT_16(quotient))\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divs_16_aw(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       sint src = MAKE_INT_16(OPER_AW_16());\r
-       sint quotient;\r
-       sint remainder;\r
-\r
-       if(src != 0)\r
-       {\r
-               if((uint32)*r_dst == 0x80000000 && src == -1)\r
-               {\r
-                       FLAG_Z = 0;\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = 0;\r
-                       return;\r
-               }\r
-\r
-               quotient = MAKE_INT_32(*r_dst) / src;\r
-               remainder = MAKE_INT_32(*r_dst) % src;\r
-\r
-               if(quotient == MAKE_INT_16(quotient))\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divs_16_al(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       sint src = MAKE_INT_16(OPER_AL_16());\r
-       sint quotient;\r
-       sint remainder;\r
-\r
-       if(src != 0)\r
-       {\r
-               if((uint32)*r_dst == 0x80000000 && src == -1)\r
-               {\r
-                       FLAG_Z = 0;\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = 0;\r
-                       return;\r
-               }\r
-\r
-               quotient = MAKE_INT_32(*r_dst) / src;\r
-               remainder = MAKE_INT_32(*r_dst) % src;\r
-\r
-               if(quotient == MAKE_INT_16(quotient))\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divs_16_pcdi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       sint src = MAKE_INT_16(OPER_PCDI_16());\r
-       sint quotient;\r
-       sint remainder;\r
-\r
-       if(src != 0)\r
-       {\r
-               if((uint32)*r_dst == 0x80000000 && src == -1)\r
-               {\r
-                       FLAG_Z = 0;\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = 0;\r
-                       return;\r
-               }\r
-\r
-               quotient = MAKE_INT_32(*r_dst) / src;\r
-               remainder = MAKE_INT_32(*r_dst) % src;\r
-\r
-               if(quotient == MAKE_INT_16(quotient))\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divs_16_pcix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       sint src = MAKE_INT_16(OPER_PCIX_16());\r
-       sint quotient;\r
-       sint remainder;\r
-\r
-       if(src != 0)\r
-       {\r
-               if((uint32)*r_dst == 0x80000000 && src == -1)\r
-               {\r
-                       FLAG_Z = 0;\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = 0;\r
-                       return;\r
-               }\r
-\r
-               quotient = MAKE_INT_32(*r_dst) / src;\r
-               remainder = MAKE_INT_32(*r_dst) % src;\r
-\r
-               if(quotient == MAKE_INT_16(quotient))\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divs_16_i(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       sint src = MAKE_INT_16(OPER_I_16());\r
-       sint quotient;\r
-       sint remainder;\r
-\r
-       if(src != 0)\r
-       {\r
-               if((uint32)*r_dst == 0x80000000 && src == -1)\r
-               {\r
-                       FLAG_Z = 0;\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = 0;\r
-                       return;\r
-               }\r
-\r
-               quotient = MAKE_INT_32(*r_dst) / src;\r
-               remainder = MAKE_INT_32(*r_dst) % src;\r
-\r
-               if(quotient == MAKE_INT_16(quotient))\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divu_16_d(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = MASK_OUT_ABOVE_16(DY);\r
-\r
-       if(src != 0)\r
-       {\r
-               uint quotient = *r_dst / src;\r
-               uint remainder = *r_dst % src;\r
-\r
-               if(quotient < 0x10000)\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divu_16_ai(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_AI_16();\r
-\r
-       if(src != 0)\r
-       {\r
-               uint quotient = *r_dst / src;\r
-               uint remainder = *r_dst % src;\r
-\r
-               if(quotient < 0x10000)\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divu_16_pi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_PI_16();\r
-\r
-       if(src != 0)\r
-       {\r
-               uint quotient = *r_dst / src;\r
-               uint remainder = *r_dst % src;\r
-\r
-               if(quotient < 0x10000)\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divu_16_pd(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_PD_16();\r
-\r
-       if(src != 0)\r
-       {\r
-               uint quotient = *r_dst / src;\r
-               uint remainder = *r_dst % src;\r
-\r
-               if(quotient < 0x10000)\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divu_16_di(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_DI_16();\r
-\r
-       if(src != 0)\r
-       {\r
-               uint quotient = *r_dst / src;\r
-               uint remainder = *r_dst % src;\r
-\r
-               if(quotient < 0x10000)\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divu_16_ix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AY_IX_16();\r
-\r
-       if(src != 0)\r
-       {\r
-               uint quotient = *r_dst / src;\r
-               uint remainder = *r_dst % src;\r
-\r
-               if(quotient < 0x10000)\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divu_16_aw(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AW_16();\r
-\r
-       if(src != 0)\r
-       {\r
-               uint quotient = *r_dst / src;\r
-               uint remainder = *r_dst % src;\r
-\r
-               if(quotient < 0x10000)\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divu_16_al(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_AL_16();\r
-\r
-       if(src != 0)\r
-       {\r
-               uint quotient = *r_dst / src;\r
-               uint remainder = *r_dst % src;\r
-\r
-               if(quotient < 0x10000)\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divu_16_pcdi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_PCDI_16();\r
-\r
-       if(src != 0)\r
-       {\r
-               uint quotient = *r_dst / src;\r
-               uint remainder = *r_dst % src;\r
-\r
-               if(quotient < 0x10000)\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divu_16_pcix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_PCIX_16();\r
-\r
-       if(src != 0)\r
-       {\r
-               uint quotient = *r_dst / src;\r
-               uint remainder = *r_dst % src;\r
-\r
-               if(quotient < 0x10000)\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divu_16_i(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint src = OPER_I_16();\r
-\r
-       if(src != 0)\r
-       {\r
-               uint quotient = *r_dst / src;\r
-               uint remainder = *r_dst % src;\r
-\r
-               if(quotient < 0x10000)\r
-               {\r
-                       FLAG_Z = quotient;\r
-                       FLAG_N = NFLAG_16(quotient);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       *r_dst = MASK_OUT_ABOVE_32(MASK_OUT_ABOVE_16(quotient) | (remainder << 16));\r
-                       return;\r
-               }\r
-               FLAG_V = VFLAG_SET;\r
-               return;\r
-       }\r
-       m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-}\r
-\r
-\r
-void m68k_op_divl_32_d(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 divisor   = DY;\r
-               uint64 dividend  = 0;\r
-               uint64 quotient  = 0;\r
-               uint64 remainder = 0;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       if(BIT_A(word2))        /* 64 bit */\r
-                       {\r
-                               dividend = REG_D[word2 & 7];\r
-                               dividend <<= 32;\r
-                               dividend |= REG_D[(word2 >> 12) & 7];\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)dividend / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)dividend % (sint64)((sint32)divisor));\r
-                                       if((sint64)quotient != (sint64)((sint32)quotient))\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       if(quotient > 0xffffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-                       else    /* 32 bit */\r
-                       {\r
-                               dividend = REG_D[(word2 >> 12) & 7];\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)((sint32)dividend) / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)((sint32)dividend) % (sint64)((sint32)divisor));\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-\r
-                       REG_D[word2 & 7] = remainder;\r
-                       REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint divisor = DY;\r
-               uint dividend_hi = REG_D[word2 & 7];\r
-               uint dividend_lo = REG_D[(word2 >> 12) & 7];\r
-               uint quotient = 0;\r
-               uint remainder = 0;\r
-               uint dividend_neg = 0;\r
-               uint divisor_neg = 0;\r
-               sint i;\r
-               uint overflow;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       /* quad / long : long quotient, long remainder */\r
-                       if(BIT_A(word2))\r
-                       {\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       /* special case in signed divide */\r
-                                       if(dividend_hi == 0 && dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                                       {\r
-                                               REG_D[word2 & 7] = 0;\r
-                                               REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-\r
-                                               FLAG_N = NFLAG_SET;\r
-                                               FLAG_Z = ZFLAG_CLEAR;\r
-                                               FLAG_V = VFLAG_CLEAR;\r
-                                               FLAG_C = CFLAG_CLEAR;\r
-                                               return;\r
-                                       }\r
-                                       if(GET_MSB_32(dividend_hi))\r
-                                       {\r
-                                               dividend_neg = 1;\r
-                                               dividend_hi = (uint)MASK_OUT_ABOVE_32((-(sint)dividend_hi) - (dividend_lo != 0));\r
-                                               dividend_lo = (uint)MASK_OUT_ABOVE_32(-(sint)dividend_lo);\r
-                                       }\r
-                                       if(GET_MSB_32(divisor))\r
-                                       {\r
-                                               divisor_neg = 1;\r
-                                               divisor = (uint)MASK_OUT_ABOVE_32(-(sint)divisor);\r
-\r
-                                       }\r
-                               }\r
-\r
-                               /* if the upper long is greater than the divisor, we're overflowing. */\r
-                               if(dividend_hi >= divisor)\r
-                               {\r
-                                       FLAG_V = VFLAG_SET;\r
-                                       return;\r
-                               }\r
-\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       remainder = (remainder << 1) + ((dividend_hi >> i) & 1);\r
-                                       if(remainder >= divisor)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       overflow = GET_MSB_32(remainder);\r
-                                       remainder = (remainder << 1) + ((dividend_lo >> i) & 1);\r
-                                       if(remainder >= divisor || overflow)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       if(quotient > 0x7fffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       if(dividend_neg)\r
-                                       {\r
-                                               remainder = (uint)MASK_OUT_ABOVE_32(-(sint)remainder);\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                                       }\r
-                                       if(divisor_neg)\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                               }\r
-\r
-                               REG_D[word2 & 7] = remainder;\r
-                               REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                               FLAG_N = NFLAG_32(quotient);\r
-                               FLAG_Z = quotient;\r
-                               FLAG_V = VFLAG_CLEAR;\r
-                               FLAG_C = CFLAG_CLEAR;\r
-                               return;\r
-                       }\r
-\r
-                       /* long / long: long quotient, maybe long remainder */\r
-                       if(BIT_B(word2))           /* signed */\r
-                       {\r
-                               /* Special case in divide */\r
-                               if(dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                               {\r
-                                       FLAG_N = NFLAG_SET;\r
-                                       FLAG_Z = ZFLAG_CLEAR;\r
-                                       FLAG_V = VFLAG_CLEAR;\r
-                                       FLAG_C = CFLAG_CLEAR;\r
-                                       REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-                                       REG_D[word2 & 7] = 0;\r
-                                       return;\r
-                               }\r
-                               REG_D[word2 & 7] = MAKE_INT_32(dividend_lo) % MAKE_INT_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MAKE_INT_32(dividend_lo) / MAKE_INT_32(divisor);\r
-                       }\r
-                       else\r
-                       {\r
-                               REG_D[word2 & 7] = MASK_OUT_ABOVE_32(dividend_lo) % MASK_OUT_ABOVE_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(dividend_lo) / MASK_OUT_ABOVE_32(divisor);\r
-                       }\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_divl_32_ai(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 divisor = OPER_AY_AI_32();\r
-               uint64 dividend  = 0;\r
-               uint64 quotient  = 0;\r
-               uint64 remainder = 0;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       if(BIT_A(word2))        /* 64 bit */\r
-                       {\r
-                               dividend = REG_D[word2 & 7];\r
-                               dividend <<= 32;\r
-                               dividend |= REG_D[(word2 >> 12) & 7];\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)dividend / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)dividend % (sint64)((sint32)divisor));\r
-                                       if((sint64)quotient != (sint64)((sint32)quotient))\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       if(quotient > 0xffffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-                       else    /* 32 bit */\r
-                       {\r
-                               dividend = REG_D[(word2 >> 12) & 7];\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)((sint32)dividend) / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)((sint32)dividend) % (sint64)((sint32)divisor));\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-\r
-                       REG_D[word2 & 7] = remainder;\r
-                       REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint divisor = OPER_AY_AI_32();\r
-               uint dividend_hi = REG_D[word2 & 7];\r
-               uint dividend_lo = REG_D[(word2 >> 12) & 7];\r
-               uint quotient = 0;\r
-               uint remainder = 0;\r
-               uint dividend_neg = 0;\r
-               uint divisor_neg = 0;\r
-               sint i;\r
-               uint overflow;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       /* quad / long : long quotient, long remainder */\r
-                       if(BIT_A(word2))\r
-                       {\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       /* special case in signed divide */\r
-                                       if(dividend_hi == 0 && dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                                       {\r
-                                               REG_D[word2 & 7] = 0;\r
-                                               REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-\r
-                                               FLAG_N = NFLAG_SET;\r
-                                               FLAG_Z = ZFLAG_CLEAR;\r
-                                               FLAG_V = VFLAG_CLEAR;\r
-                                               FLAG_C = CFLAG_CLEAR;\r
-                                               return;\r
-                                       }\r
-                                       if(GET_MSB_32(dividend_hi))\r
-                                       {\r
-                                               dividend_neg = 1;\r
-                                               dividend_hi = (uint)MASK_OUT_ABOVE_32((-(sint)dividend_hi) - (dividend_lo != 0));\r
-                                               dividend_lo = (uint)MASK_OUT_ABOVE_32(-(sint)dividend_lo);\r
-                                       }\r
-                                       if(GET_MSB_32(divisor))\r
-                                       {\r
-                                               divisor_neg = 1;\r
-                                               divisor = (uint)MASK_OUT_ABOVE_32(-(sint)divisor);\r
-\r
-                                       }\r
-                               }\r
-\r
-                               /* if the upper long is greater than the divisor, we're overflowing. */\r
-                               if(dividend_hi >= divisor)\r
-                               {\r
-                                       FLAG_V = VFLAG_SET;\r
-                                       return;\r
-                               }\r
-\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       remainder = (remainder << 1) + ((dividend_hi >> i) & 1);\r
-                                       if(remainder >= divisor)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       overflow = GET_MSB_32(remainder);\r
-                                       remainder = (remainder << 1) + ((dividend_lo >> i) & 1);\r
-                                       if(remainder >= divisor || overflow)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       if(quotient > 0x7fffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       if(dividend_neg)\r
-                                       {\r
-                                               remainder = (uint)MASK_OUT_ABOVE_32(-(sint)remainder);\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                                       }\r
-                                       if(divisor_neg)\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                               }\r
-\r
-                               REG_D[word2 & 7] = remainder;\r
-                               REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                               FLAG_N = NFLAG_32(quotient);\r
-                               FLAG_Z = quotient;\r
-                               FLAG_V = VFLAG_CLEAR;\r
-                               FLAG_C = CFLAG_CLEAR;\r
-                               return;\r
-                       }\r
-\r
-                       /* long / long: long quotient, maybe long remainder */\r
-                       if(BIT_B(word2))           /* signed */\r
-                       {\r
-                               /* Special case in divide */\r
-                               if(dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                               {\r
-                                       FLAG_N = NFLAG_SET;\r
-                                       FLAG_Z = ZFLAG_CLEAR;\r
-                                       FLAG_V = VFLAG_CLEAR;\r
-                                       FLAG_C = CFLAG_CLEAR;\r
-                                       REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-                                       REG_D[word2 & 7] = 0;\r
-                                       return;\r
-                               }\r
-                               REG_D[word2 & 7] = MAKE_INT_32(dividend_lo) % MAKE_INT_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MAKE_INT_32(dividend_lo) / MAKE_INT_32(divisor);\r
-                       }\r
-                       else\r
-                       {\r
-                               REG_D[word2 & 7] = MASK_OUT_ABOVE_32(dividend_lo) % MASK_OUT_ABOVE_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(dividend_lo) / MASK_OUT_ABOVE_32(divisor);\r
-                       }\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_divl_32_pi(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 divisor = OPER_AY_PI_32();\r
-               uint64 dividend  = 0;\r
-               uint64 quotient  = 0;\r
-               uint64 remainder = 0;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       if(BIT_A(word2))        /* 64 bit */\r
-                       {\r
-                               dividend = REG_D[word2 & 7];\r
-                               dividend <<= 32;\r
-                               dividend |= REG_D[(word2 >> 12) & 7];\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)dividend / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)dividend % (sint64)((sint32)divisor));\r
-                                       if((sint64)quotient != (sint64)((sint32)quotient))\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       if(quotient > 0xffffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-                       else    /* 32 bit */\r
-                       {\r
-                               dividend = REG_D[(word2 >> 12) & 7];\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)((sint32)dividend) / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)((sint32)dividend) % (sint64)((sint32)divisor));\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-\r
-                       REG_D[word2 & 7] = remainder;\r
-                       REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint divisor = OPER_AY_PI_32();\r
-               uint dividend_hi = REG_D[word2 & 7];\r
-               uint dividend_lo = REG_D[(word2 >> 12) & 7];\r
-               uint quotient = 0;\r
-               uint remainder = 0;\r
-               uint dividend_neg = 0;\r
-               uint divisor_neg = 0;\r
-               sint i;\r
-               uint overflow;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       /* quad / long : long quotient, long remainder */\r
-                       if(BIT_A(word2))\r
-                       {\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       /* special case in signed divide */\r
-                                       if(dividend_hi == 0 && dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                                       {\r
-                                               REG_D[word2 & 7] = 0;\r
-                                               REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-\r
-                                               FLAG_N = NFLAG_SET;\r
-                                               FLAG_Z = ZFLAG_CLEAR;\r
-                                               FLAG_V = VFLAG_CLEAR;\r
-                                               FLAG_C = CFLAG_CLEAR;\r
-                                               return;\r
-                                       }\r
-                                       if(GET_MSB_32(dividend_hi))\r
-                                       {\r
-                                               dividend_neg = 1;\r
-                                               dividend_hi = (uint)MASK_OUT_ABOVE_32((-(sint)dividend_hi) - (dividend_lo != 0));\r
-                                               dividend_lo = (uint)MASK_OUT_ABOVE_32(-(sint)dividend_lo);\r
-                                       }\r
-                                       if(GET_MSB_32(divisor))\r
-                                       {\r
-                                               divisor_neg = 1;\r
-                                               divisor = (uint)MASK_OUT_ABOVE_32(-(sint)divisor);\r
-\r
-                                       }\r
-                               }\r
-\r
-                               /* if the upper long is greater than the divisor, we're overflowing. */\r
-                               if(dividend_hi >= divisor)\r
-                               {\r
-                                       FLAG_V = VFLAG_SET;\r
-                                       return;\r
-                               }\r
-\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       remainder = (remainder << 1) + ((dividend_hi >> i) & 1);\r
-                                       if(remainder >= divisor)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       overflow = GET_MSB_32(remainder);\r
-                                       remainder = (remainder << 1) + ((dividend_lo >> i) & 1);\r
-                                       if(remainder >= divisor || overflow)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       if(quotient > 0x7fffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       if(dividend_neg)\r
-                                       {\r
-                                               remainder = (uint)MASK_OUT_ABOVE_32(-(sint)remainder);\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                                       }\r
-                                       if(divisor_neg)\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                               }\r
-\r
-                               REG_D[word2 & 7] = remainder;\r
-                               REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                               FLAG_N = NFLAG_32(quotient);\r
-                               FLAG_Z = quotient;\r
-                               FLAG_V = VFLAG_CLEAR;\r
-                               FLAG_C = CFLAG_CLEAR;\r
-                               return;\r
-                       }\r
-\r
-                       /* long / long: long quotient, maybe long remainder */\r
-                       if(BIT_B(word2))           /* signed */\r
-                       {\r
-                               /* Special case in divide */\r
-                               if(dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                               {\r
-                                       FLAG_N = NFLAG_SET;\r
-                                       FLAG_Z = ZFLAG_CLEAR;\r
-                                       FLAG_V = VFLAG_CLEAR;\r
-                                       FLAG_C = CFLAG_CLEAR;\r
-                                       REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-                                       REG_D[word2 & 7] = 0;\r
-                                       return;\r
-                               }\r
-                               REG_D[word2 & 7] = MAKE_INT_32(dividend_lo) % MAKE_INT_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MAKE_INT_32(dividend_lo) / MAKE_INT_32(divisor);\r
-                       }\r
-                       else\r
-                       {\r
-                               REG_D[word2 & 7] = MASK_OUT_ABOVE_32(dividend_lo) % MASK_OUT_ABOVE_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(dividend_lo) / MASK_OUT_ABOVE_32(divisor);\r
-                       }\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_divl_32_pd(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 divisor = OPER_AY_PD_32();\r
-               uint64 dividend  = 0;\r
-               uint64 quotient  = 0;\r
-               uint64 remainder = 0;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       if(BIT_A(word2))        /* 64 bit */\r
-                       {\r
-                               dividend = REG_D[word2 & 7];\r
-                               dividend <<= 32;\r
-                               dividend |= REG_D[(word2 >> 12) & 7];\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)dividend / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)dividend % (sint64)((sint32)divisor));\r
-                                       if((sint64)quotient != (sint64)((sint32)quotient))\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       if(quotient > 0xffffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-                       else    /* 32 bit */\r
-                       {\r
-                               dividend = REG_D[(word2 >> 12) & 7];\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)((sint32)dividend) / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)((sint32)dividend) % (sint64)((sint32)divisor));\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-\r
-                       REG_D[word2 & 7] = remainder;\r
-                       REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint divisor = OPER_AY_PD_32();\r
-               uint dividend_hi = REG_D[word2 & 7];\r
-               uint dividend_lo = REG_D[(word2 >> 12) & 7];\r
-               uint quotient = 0;\r
-               uint remainder = 0;\r
-               uint dividend_neg = 0;\r
-               uint divisor_neg = 0;\r
-               sint i;\r
-               uint overflow;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       /* quad / long : long quotient, long remainder */\r
-                       if(BIT_A(word2))\r
-                       {\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       /* special case in signed divide */\r
-                                       if(dividend_hi == 0 && dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                                       {\r
-                                               REG_D[word2 & 7] = 0;\r
-                                               REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-\r
-                                               FLAG_N = NFLAG_SET;\r
-                                               FLAG_Z = ZFLAG_CLEAR;\r
-                                               FLAG_V = VFLAG_CLEAR;\r
-                                               FLAG_C = CFLAG_CLEAR;\r
-                                               return;\r
-                                       }\r
-                                       if(GET_MSB_32(dividend_hi))\r
-                                       {\r
-                                               dividend_neg = 1;\r
-                                               dividend_hi = (uint)MASK_OUT_ABOVE_32((-(sint)dividend_hi) - (dividend_lo != 0));\r
-                                               dividend_lo = (uint)MASK_OUT_ABOVE_32(-(sint)dividend_lo);\r
-                                       }\r
-                                       if(GET_MSB_32(divisor))\r
-                                       {\r
-                                               divisor_neg = 1;\r
-                                               divisor = (uint)MASK_OUT_ABOVE_32(-(sint)divisor);\r
-\r
-                                       }\r
-                               }\r
-\r
-                               /* if the upper long is greater than the divisor, we're overflowing. */\r
-                               if(dividend_hi >= divisor)\r
-                               {\r
-                                       FLAG_V = VFLAG_SET;\r
-                                       return;\r
-                               }\r
-\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       remainder = (remainder << 1) + ((dividend_hi >> i) & 1);\r
-                                       if(remainder >= divisor)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       overflow = GET_MSB_32(remainder);\r
-                                       remainder = (remainder << 1) + ((dividend_lo >> i) & 1);\r
-                                       if(remainder >= divisor || overflow)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       if(quotient > 0x7fffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       if(dividend_neg)\r
-                                       {\r
-                                               remainder = (uint)MASK_OUT_ABOVE_32(-(sint)remainder);\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                                       }\r
-                                       if(divisor_neg)\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                               }\r
-\r
-                               REG_D[word2 & 7] = remainder;\r
-                               REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                               FLAG_N = NFLAG_32(quotient);\r
-                               FLAG_Z = quotient;\r
-                               FLAG_V = VFLAG_CLEAR;\r
-                               FLAG_C = CFLAG_CLEAR;\r
-                               return;\r
-                       }\r
-\r
-                       /* long / long: long quotient, maybe long remainder */\r
-                       if(BIT_B(word2))           /* signed */\r
-                       {\r
-                               /* Special case in divide */\r
-                               if(dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                               {\r
-                                       FLAG_N = NFLAG_SET;\r
-                                       FLAG_Z = ZFLAG_CLEAR;\r
-                                       FLAG_V = VFLAG_CLEAR;\r
-                                       FLAG_C = CFLAG_CLEAR;\r
-                                       REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-                                       REG_D[word2 & 7] = 0;\r
-                                       return;\r
-                               }\r
-                               REG_D[word2 & 7] = MAKE_INT_32(dividend_lo) % MAKE_INT_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MAKE_INT_32(dividend_lo) / MAKE_INT_32(divisor);\r
-                       }\r
-                       else\r
-                       {\r
-                               REG_D[word2 & 7] = MASK_OUT_ABOVE_32(dividend_lo) % MASK_OUT_ABOVE_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(dividend_lo) / MASK_OUT_ABOVE_32(divisor);\r
-                       }\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_divl_32_di(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 divisor = OPER_AY_DI_32();\r
-               uint64 dividend  = 0;\r
-               uint64 quotient  = 0;\r
-               uint64 remainder = 0;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       if(BIT_A(word2))        /* 64 bit */\r
-                       {\r
-                               dividend = REG_D[word2 & 7];\r
-                               dividend <<= 32;\r
-                               dividend |= REG_D[(word2 >> 12) & 7];\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)dividend / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)dividend % (sint64)((sint32)divisor));\r
-                                       if((sint64)quotient != (sint64)((sint32)quotient))\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       if(quotient > 0xffffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-                       else    /* 32 bit */\r
-                       {\r
-                               dividend = REG_D[(word2 >> 12) & 7];\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)((sint32)dividend) / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)((sint32)dividend) % (sint64)((sint32)divisor));\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-\r
-                       REG_D[word2 & 7] = remainder;\r
-                       REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint divisor = OPER_AY_DI_32();\r
-               uint dividend_hi = REG_D[word2 & 7];\r
-               uint dividend_lo = REG_D[(word2 >> 12) & 7];\r
-               uint quotient = 0;\r
-               uint remainder = 0;\r
-               uint dividend_neg = 0;\r
-               uint divisor_neg = 0;\r
-               sint i;\r
-               uint overflow;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       /* quad / long : long quotient, long remainder */\r
-                       if(BIT_A(word2))\r
-                       {\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       /* special case in signed divide */\r
-                                       if(dividend_hi == 0 && dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                                       {\r
-                                               REG_D[word2 & 7] = 0;\r
-                                               REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-\r
-                                               FLAG_N = NFLAG_SET;\r
-                                               FLAG_Z = ZFLAG_CLEAR;\r
-                                               FLAG_V = VFLAG_CLEAR;\r
-                                               FLAG_C = CFLAG_CLEAR;\r
-                                               return;\r
-                                       }\r
-                                       if(GET_MSB_32(dividend_hi))\r
-                                       {\r
-                                               dividend_neg = 1;\r
-                                               dividend_hi = (uint)MASK_OUT_ABOVE_32((-(sint)dividend_hi) - (dividend_lo != 0));\r
-                                               dividend_lo = (uint)MASK_OUT_ABOVE_32(-(sint)dividend_lo);\r
-                                       }\r
-                                       if(GET_MSB_32(divisor))\r
-                                       {\r
-                                               divisor_neg = 1;\r
-                                               divisor = (uint)MASK_OUT_ABOVE_32(-(sint)divisor);\r
-\r
-                                       }\r
-                               }\r
-\r
-                               /* if the upper long is greater than the divisor, we're overflowing. */\r
-                               if(dividend_hi >= divisor)\r
-                               {\r
-                                       FLAG_V = VFLAG_SET;\r
-                                       return;\r
-                               }\r
-\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       remainder = (remainder << 1) + ((dividend_hi >> i) & 1);\r
-                                       if(remainder >= divisor)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       overflow = GET_MSB_32(remainder);\r
-                                       remainder = (remainder << 1) + ((dividend_lo >> i) & 1);\r
-                                       if(remainder >= divisor || overflow)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       if(quotient > 0x7fffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       if(dividend_neg)\r
-                                       {\r
-                                               remainder = (uint)MASK_OUT_ABOVE_32(-(sint)remainder);\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                                       }\r
-                                       if(divisor_neg)\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                               }\r
-\r
-                               REG_D[word2 & 7] = remainder;\r
-                               REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                               FLAG_N = NFLAG_32(quotient);\r
-                               FLAG_Z = quotient;\r
-                               FLAG_V = VFLAG_CLEAR;\r
-                               FLAG_C = CFLAG_CLEAR;\r
-                               return;\r
-                       }\r
-\r
-                       /* long / long: long quotient, maybe long remainder */\r
-                       if(BIT_B(word2))           /* signed */\r
-                       {\r
-                               /* Special case in divide */\r
-                               if(dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                               {\r
-                                       FLAG_N = NFLAG_SET;\r
-                                       FLAG_Z = ZFLAG_CLEAR;\r
-                                       FLAG_V = VFLAG_CLEAR;\r
-                                       FLAG_C = CFLAG_CLEAR;\r
-                                       REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-                                       REG_D[word2 & 7] = 0;\r
-                                       return;\r
-                               }\r
-                               REG_D[word2 & 7] = MAKE_INT_32(dividend_lo) % MAKE_INT_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MAKE_INT_32(dividend_lo) / MAKE_INT_32(divisor);\r
-                       }\r
-                       else\r
-                       {\r
-                               REG_D[word2 & 7] = MASK_OUT_ABOVE_32(dividend_lo) % MASK_OUT_ABOVE_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(dividend_lo) / MASK_OUT_ABOVE_32(divisor);\r
-                       }\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_divl_32_ix(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 divisor = OPER_AY_IX_32();\r
-               uint64 dividend  = 0;\r
-               uint64 quotient  = 0;\r
-               uint64 remainder = 0;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       if(BIT_A(word2))        /* 64 bit */\r
-                       {\r
-                               dividend = REG_D[word2 & 7];\r
-                               dividend <<= 32;\r
-                               dividend |= REG_D[(word2 >> 12) & 7];\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)dividend / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)dividend % (sint64)((sint32)divisor));\r
-                                       if((sint64)quotient != (sint64)((sint32)quotient))\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       if(quotient > 0xffffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-                       else    /* 32 bit */\r
-                       {\r
-                               dividend = REG_D[(word2 >> 12) & 7];\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)((sint32)dividend) / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)((sint32)dividend) % (sint64)((sint32)divisor));\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-\r
-                       REG_D[word2 & 7] = remainder;\r
-                       REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint divisor = OPER_AY_IX_32();\r
-               uint dividend_hi = REG_D[word2 & 7];\r
-               uint dividend_lo = REG_D[(word2 >> 12) & 7];\r
-               uint quotient = 0;\r
-               uint remainder = 0;\r
-               uint dividend_neg = 0;\r
-               uint divisor_neg = 0;\r
-               sint i;\r
-               uint overflow;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       /* quad / long : long quotient, long remainder */\r
-                       if(BIT_A(word2))\r
-                       {\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       /* special case in signed divide */\r
-                                       if(dividend_hi == 0 && dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                                       {\r
-                                               REG_D[word2 & 7] = 0;\r
-                                               REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-\r
-                                               FLAG_N = NFLAG_SET;\r
-                                               FLAG_Z = ZFLAG_CLEAR;\r
-                                               FLAG_V = VFLAG_CLEAR;\r
-                                               FLAG_C = CFLAG_CLEAR;\r
-                                               return;\r
-                                       }\r
-                                       if(GET_MSB_32(dividend_hi))\r
-                                       {\r
-                                               dividend_neg = 1;\r
-                                               dividend_hi = (uint)MASK_OUT_ABOVE_32((-(sint)dividend_hi) - (dividend_lo != 0));\r
-                                               dividend_lo = (uint)MASK_OUT_ABOVE_32(-(sint)dividend_lo);\r
-                                       }\r
-                                       if(GET_MSB_32(divisor))\r
-                                       {\r
-                                               divisor_neg = 1;\r
-                                               divisor = (uint)MASK_OUT_ABOVE_32(-(sint)divisor);\r
-\r
-                                       }\r
-                               }\r
-\r
-                               /* if the upper long is greater than the divisor, we're overflowing. */\r
-                               if(dividend_hi >= divisor)\r
-                               {\r
-                                       FLAG_V = VFLAG_SET;\r
-                                       return;\r
-                               }\r
-\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       remainder = (remainder << 1) + ((dividend_hi >> i) & 1);\r
-                                       if(remainder >= divisor)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       overflow = GET_MSB_32(remainder);\r
-                                       remainder = (remainder << 1) + ((dividend_lo >> i) & 1);\r
-                                       if(remainder >= divisor || overflow)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       if(quotient > 0x7fffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       if(dividend_neg)\r
-                                       {\r
-                                               remainder = (uint)MASK_OUT_ABOVE_32(-(sint)remainder);\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                                       }\r
-                                       if(divisor_neg)\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                               }\r
-\r
-                               REG_D[word2 & 7] = remainder;\r
-                               REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                               FLAG_N = NFLAG_32(quotient);\r
-                               FLAG_Z = quotient;\r
-                               FLAG_V = VFLAG_CLEAR;\r
-                               FLAG_C = CFLAG_CLEAR;\r
-                               return;\r
-                       }\r
-\r
-                       /* long / long: long quotient, maybe long remainder */\r
-                       if(BIT_B(word2))           /* signed */\r
-                       {\r
-                               /* Special case in divide */\r
-                               if(dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                               {\r
-                                       FLAG_N = NFLAG_SET;\r
-                                       FLAG_Z = ZFLAG_CLEAR;\r
-                                       FLAG_V = VFLAG_CLEAR;\r
-                                       FLAG_C = CFLAG_CLEAR;\r
-                                       REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-                                       REG_D[word2 & 7] = 0;\r
-                                       return;\r
-                               }\r
-                               REG_D[word2 & 7] = MAKE_INT_32(dividend_lo) % MAKE_INT_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MAKE_INT_32(dividend_lo) / MAKE_INT_32(divisor);\r
-                       }\r
-                       else\r
-                       {\r
-                               REG_D[word2 & 7] = MASK_OUT_ABOVE_32(dividend_lo) % MASK_OUT_ABOVE_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(dividend_lo) / MASK_OUT_ABOVE_32(divisor);\r
-                       }\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_divl_32_aw(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 divisor = OPER_AW_32();\r
-               uint64 dividend  = 0;\r
-               uint64 quotient  = 0;\r
-               uint64 remainder = 0;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       if(BIT_A(word2))        /* 64 bit */\r
-                       {\r
-                               dividend = REG_D[word2 & 7];\r
-                               dividend <<= 32;\r
-                               dividend |= REG_D[(word2 >> 12) & 7];\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)dividend / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)dividend % (sint64)((sint32)divisor));\r
-                                       if((sint64)quotient != (sint64)((sint32)quotient))\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       if(quotient > 0xffffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-                       else    /* 32 bit */\r
-                       {\r
-                               dividend = REG_D[(word2 >> 12) & 7];\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)((sint32)dividend) / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)((sint32)dividend) % (sint64)((sint32)divisor));\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-\r
-                       REG_D[word2 & 7] = remainder;\r
-                       REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint divisor = OPER_AW_32();\r
-               uint dividend_hi = REG_D[word2 & 7];\r
-               uint dividend_lo = REG_D[(word2 >> 12) & 7];\r
-               uint quotient = 0;\r
-               uint remainder = 0;\r
-               uint dividend_neg = 0;\r
-               uint divisor_neg = 0;\r
-               sint i;\r
-               uint overflow;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       /* quad / long : long quotient, long remainder */\r
-                       if(BIT_A(word2))\r
-                       {\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       /* special case in signed divide */\r
-                                       if(dividend_hi == 0 && dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                                       {\r
-                                               REG_D[word2 & 7] = 0;\r
-                                               REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-\r
-                                               FLAG_N = NFLAG_SET;\r
-                                               FLAG_Z = ZFLAG_CLEAR;\r
-                                               FLAG_V = VFLAG_CLEAR;\r
-                                               FLAG_C = CFLAG_CLEAR;\r
-                                               return;\r
-                                       }\r
-                                       if(GET_MSB_32(dividend_hi))\r
-                                       {\r
-                                               dividend_neg = 1;\r
-                                               dividend_hi = (uint)MASK_OUT_ABOVE_32((-(sint)dividend_hi) - (dividend_lo != 0));\r
-                                               dividend_lo = (uint)MASK_OUT_ABOVE_32(-(sint)dividend_lo);\r
-                                       }\r
-                                       if(GET_MSB_32(divisor))\r
-                                       {\r
-                                               divisor_neg = 1;\r
-                                               divisor = (uint)MASK_OUT_ABOVE_32(-(sint)divisor);\r
-\r
-                                       }\r
-                               }\r
-\r
-                               /* if the upper long is greater than the divisor, we're overflowing. */\r
-                               if(dividend_hi >= divisor)\r
-                               {\r
-                                       FLAG_V = VFLAG_SET;\r
-                                       return;\r
-                               }\r
-\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       remainder = (remainder << 1) + ((dividend_hi >> i) & 1);\r
-                                       if(remainder >= divisor)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       overflow = GET_MSB_32(remainder);\r
-                                       remainder = (remainder << 1) + ((dividend_lo >> i) & 1);\r
-                                       if(remainder >= divisor || overflow)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       if(quotient > 0x7fffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       if(dividend_neg)\r
-                                       {\r
-                                               remainder = (uint)MASK_OUT_ABOVE_32(-(sint)remainder);\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                                       }\r
-                                       if(divisor_neg)\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                               }\r
-\r
-                               REG_D[word2 & 7] = remainder;\r
-                               REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                               FLAG_N = NFLAG_32(quotient);\r
-                               FLAG_Z = quotient;\r
-                               FLAG_V = VFLAG_CLEAR;\r
-                               FLAG_C = CFLAG_CLEAR;\r
-                               return;\r
-                       }\r
-\r
-                       /* long / long: long quotient, maybe long remainder */\r
-                       if(BIT_B(word2))           /* signed */\r
-                       {\r
-                               /* Special case in divide */\r
-                               if(dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                               {\r
-                                       FLAG_N = NFLAG_SET;\r
-                                       FLAG_Z = ZFLAG_CLEAR;\r
-                                       FLAG_V = VFLAG_CLEAR;\r
-                                       FLAG_C = CFLAG_CLEAR;\r
-                                       REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-                                       REG_D[word2 & 7] = 0;\r
-                                       return;\r
-                               }\r
-                               REG_D[word2 & 7] = MAKE_INT_32(dividend_lo) % MAKE_INT_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MAKE_INT_32(dividend_lo) / MAKE_INT_32(divisor);\r
-                       }\r
-                       else\r
-                       {\r
-                               REG_D[word2 & 7] = MASK_OUT_ABOVE_32(dividend_lo) % MASK_OUT_ABOVE_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(dividend_lo) / MASK_OUT_ABOVE_32(divisor);\r
-                       }\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_divl_32_al(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 divisor = OPER_AL_32();\r
-               uint64 dividend  = 0;\r
-               uint64 quotient  = 0;\r
-               uint64 remainder = 0;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       if(BIT_A(word2))        /* 64 bit */\r
-                       {\r
-                               dividend = REG_D[word2 & 7];\r
-                               dividend <<= 32;\r
-                               dividend |= REG_D[(word2 >> 12) & 7];\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)dividend / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)dividend % (sint64)((sint32)divisor));\r
-                                       if((sint64)quotient != (sint64)((sint32)quotient))\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       if(quotient > 0xffffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-                       else    /* 32 bit */\r
-                       {\r
-                               dividend = REG_D[(word2 >> 12) & 7];\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)((sint32)dividend) / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)((sint32)dividend) % (sint64)((sint32)divisor));\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-\r
-                       REG_D[word2 & 7] = remainder;\r
-                       REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint divisor = OPER_AL_32();\r
-               uint dividend_hi = REG_D[word2 & 7];\r
-               uint dividend_lo = REG_D[(word2 >> 12) & 7];\r
-               uint quotient = 0;\r
-               uint remainder = 0;\r
-               uint dividend_neg = 0;\r
-               uint divisor_neg = 0;\r
-               sint i;\r
-               uint overflow;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       /* quad / long : long quotient, long remainder */\r
-                       if(BIT_A(word2))\r
-                       {\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       /* special case in signed divide */\r
-                                       if(dividend_hi == 0 && dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                                       {\r
-                                               REG_D[word2 & 7] = 0;\r
-                                               REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-\r
-                                               FLAG_N = NFLAG_SET;\r
-                                               FLAG_Z = ZFLAG_CLEAR;\r
-                                               FLAG_V = VFLAG_CLEAR;\r
-                                               FLAG_C = CFLAG_CLEAR;\r
-                                               return;\r
-                                       }\r
-                                       if(GET_MSB_32(dividend_hi))\r
-                                       {\r
-                                               dividend_neg = 1;\r
-                                               dividend_hi = (uint)MASK_OUT_ABOVE_32((-(sint)dividend_hi) - (dividend_lo != 0));\r
-                                               dividend_lo = (uint)MASK_OUT_ABOVE_32(-(sint)dividend_lo);\r
-                                       }\r
-                                       if(GET_MSB_32(divisor))\r
-                                       {\r
-                                               divisor_neg = 1;\r
-                                               divisor = (uint)MASK_OUT_ABOVE_32(-(sint)divisor);\r
-\r
-                                       }\r
-                               }\r
-\r
-                               /* if the upper long is greater than the divisor, we're overflowing. */\r
-                               if(dividend_hi >= divisor)\r
-                               {\r
-                                       FLAG_V = VFLAG_SET;\r
-                                       return;\r
-                               }\r
-\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       remainder = (remainder << 1) + ((dividend_hi >> i) & 1);\r
-                                       if(remainder >= divisor)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       overflow = GET_MSB_32(remainder);\r
-                                       remainder = (remainder << 1) + ((dividend_lo >> i) & 1);\r
-                                       if(remainder >= divisor || overflow)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       if(quotient > 0x7fffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       if(dividend_neg)\r
-                                       {\r
-                                               remainder = (uint)MASK_OUT_ABOVE_32(-(sint)remainder);\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                                       }\r
-                                       if(divisor_neg)\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                               }\r
-\r
-                               REG_D[word2 & 7] = remainder;\r
-                               REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                               FLAG_N = NFLAG_32(quotient);\r
-                               FLAG_Z = quotient;\r
-                               FLAG_V = VFLAG_CLEAR;\r
-                               FLAG_C = CFLAG_CLEAR;\r
-                               return;\r
-                       }\r
-\r
-                       /* long / long: long quotient, maybe long remainder */\r
-                       if(BIT_B(word2))           /* signed */\r
-                       {\r
-                               /* Special case in divide */\r
-                               if(dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                               {\r
-                                       FLAG_N = NFLAG_SET;\r
-                                       FLAG_Z = ZFLAG_CLEAR;\r
-                                       FLAG_V = VFLAG_CLEAR;\r
-                                       FLAG_C = CFLAG_CLEAR;\r
-                                       REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-                                       REG_D[word2 & 7] = 0;\r
-                                       return;\r
-                               }\r
-                               REG_D[word2 & 7] = MAKE_INT_32(dividend_lo) % MAKE_INT_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MAKE_INT_32(dividend_lo) / MAKE_INT_32(divisor);\r
-                       }\r
-                       else\r
-                       {\r
-                               REG_D[word2 & 7] = MASK_OUT_ABOVE_32(dividend_lo) % MASK_OUT_ABOVE_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(dividend_lo) / MASK_OUT_ABOVE_32(divisor);\r
-                       }\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_divl_32_pcdi(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 divisor = OPER_PCDI_32();\r
-               uint64 dividend  = 0;\r
-               uint64 quotient  = 0;\r
-               uint64 remainder = 0;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       if(BIT_A(word2))        /* 64 bit */\r
-                       {\r
-                               dividend = REG_D[word2 & 7];\r
-                               dividend <<= 32;\r
-                               dividend |= REG_D[(word2 >> 12) & 7];\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)dividend / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)dividend % (sint64)((sint32)divisor));\r
-                                       if((sint64)quotient != (sint64)((sint32)quotient))\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       if(quotient > 0xffffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-                       else    /* 32 bit */\r
-                       {\r
-                               dividend = REG_D[(word2 >> 12) & 7];\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)((sint32)dividend) / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)((sint32)dividend) % (sint64)((sint32)divisor));\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-\r
-                       REG_D[word2 & 7] = remainder;\r
-                       REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint divisor = OPER_PCDI_32();\r
-               uint dividend_hi = REG_D[word2 & 7];\r
-               uint dividend_lo = REG_D[(word2 >> 12) & 7];\r
-               uint quotient = 0;\r
-               uint remainder = 0;\r
-               uint dividend_neg = 0;\r
-               uint divisor_neg = 0;\r
-               sint i;\r
-               uint overflow;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       /* quad / long : long quotient, long remainder */\r
-                       if(BIT_A(word2))\r
-                       {\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       /* special case in signed divide */\r
-                                       if(dividend_hi == 0 && dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                                       {\r
-                                               REG_D[word2 & 7] = 0;\r
-                                               REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-\r
-                                               FLAG_N = NFLAG_SET;\r
-                                               FLAG_Z = ZFLAG_CLEAR;\r
-                                               FLAG_V = VFLAG_CLEAR;\r
-                                               FLAG_C = CFLAG_CLEAR;\r
-                                               return;\r
-                                       }\r
-                                       if(GET_MSB_32(dividend_hi))\r
-                                       {\r
-                                               dividend_neg = 1;\r
-                                               dividend_hi = (uint)MASK_OUT_ABOVE_32((-(sint)dividend_hi) - (dividend_lo != 0));\r
-                                               dividend_lo = (uint)MASK_OUT_ABOVE_32(-(sint)dividend_lo);\r
-                                       }\r
-                                       if(GET_MSB_32(divisor))\r
-                                       {\r
-                                               divisor_neg = 1;\r
-                                               divisor = (uint)MASK_OUT_ABOVE_32(-(sint)divisor);\r
-\r
-                                       }\r
-                               }\r
-\r
-                               /* if the upper long is greater than the divisor, we're overflowing. */\r
-                               if(dividend_hi >= divisor)\r
-                               {\r
-                                       FLAG_V = VFLAG_SET;\r
-                                       return;\r
-                               }\r
-\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       remainder = (remainder << 1) + ((dividend_hi >> i) & 1);\r
-                                       if(remainder >= divisor)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       overflow = GET_MSB_32(remainder);\r
-                                       remainder = (remainder << 1) + ((dividend_lo >> i) & 1);\r
-                                       if(remainder >= divisor || overflow)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       if(quotient > 0x7fffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       if(dividend_neg)\r
-                                       {\r
-                                               remainder = (uint)MASK_OUT_ABOVE_32(-(sint)remainder);\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                                       }\r
-                                       if(divisor_neg)\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                               }\r
-\r
-                               REG_D[word2 & 7] = remainder;\r
-                               REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                               FLAG_N = NFLAG_32(quotient);\r
-                               FLAG_Z = quotient;\r
-                               FLAG_V = VFLAG_CLEAR;\r
-                               FLAG_C = CFLAG_CLEAR;\r
-                               return;\r
-                       }\r
-\r
-                       /* long / long: long quotient, maybe long remainder */\r
-                       if(BIT_B(word2))           /* signed */\r
-                       {\r
-                               /* Special case in divide */\r
-                               if(dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                               {\r
-                                       FLAG_N = NFLAG_SET;\r
-                                       FLAG_Z = ZFLAG_CLEAR;\r
-                                       FLAG_V = VFLAG_CLEAR;\r
-                                       FLAG_C = CFLAG_CLEAR;\r
-                                       REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-                                       REG_D[word2 & 7] = 0;\r
-                                       return;\r
-                               }\r
-                               REG_D[word2 & 7] = MAKE_INT_32(dividend_lo) % MAKE_INT_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MAKE_INT_32(dividend_lo) / MAKE_INT_32(divisor);\r
-                       }\r
-                       else\r
-                       {\r
-                               REG_D[word2 & 7] = MASK_OUT_ABOVE_32(dividend_lo) % MASK_OUT_ABOVE_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(dividend_lo) / MASK_OUT_ABOVE_32(divisor);\r
-                       }\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_divl_32_pcix(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 divisor = OPER_PCIX_32();\r
-               uint64 dividend  = 0;\r
-               uint64 quotient  = 0;\r
-               uint64 remainder = 0;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       if(BIT_A(word2))        /* 64 bit */\r
-                       {\r
-                               dividend = REG_D[word2 & 7];\r
-                               dividend <<= 32;\r
-                               dividend |= REG_D[(word2 >> 12) & 7];\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)dividend / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)dividend % (sint64)((sint32)divisor));\r
-                                       if((sint64)quotient != (sint64)((sint32)quotient))\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       if(quotient > 0xffffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-                       else    /* 32 bit */\r
-                       {\r
-                               dividend = REG_D[(word2 >> 12) & 7];\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)((sint32)dividend) / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)((sint32)dividend) % (sint64)((sint32)divisor));\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-\r
-                       REG_D[word2 & 7] = remainder;\r
-                       REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint divisor = OPER_PCIX_32();\r
-               uint dividend_hi = REG_D[word2 & 7];\r
-               uint dividend_lo = REG_D[(word2 >> 12) & 7];\r
-               uint quotient = 0;\r
-               uint remainder = 0;\r
-               uint dividend_neg = 0;\r
-               uint divisor_neg = 0;\r
-               sint i;\r
-               uint overflow;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       /* quad / long : long quotient, long remainder */\r
-                       if(BIT_A(word2))\r
-                       {\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       /* special case in signed divide */\r
-                                       if(dividend_hi == 0 && dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                                       {\r
-                                               REG_D[word2 & 7] = 0;\r
-                                               REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-\r
-                                               FLAG_N = NFLAG_SET;\r
-                                               FLAG_Z = ZFLAG_CLEAR;\r
-                                               FLAG_V = VFLAG_CLEAR;\r
-                                               FLAG_C = CFLAG_CLEAR;\r
-                                               return;\r
-                                       }\r
-                                       if(GET_MSB_32(dividend_hi))\r
-                                       {\r
-                                               dividend_neg = 1;\r
-                                               dividend_hi = (uint)MASK_OUT_ABOVE_32((-(sint)dividend_hi) - (dividend_lo != 0));\r
-                                               dividend_lo = (uint)MASK_OUT_ABOVE_32(-(sint)dividend_lo);\r
-                                       }\r
-                                       if(GET_MSB_32(divisor))\r
-                                       {\r
-                                               divisor_neg = 1;\r
-                                               divisor = (uint)MASK_OUT_ABOVE_32(-(sint)divisor);\r
-\r
-                                       }\r
-                               }\r
-\r
-                               /* if the upper long is greater than the divisor, we're overflowing. */\r
-                               if(dividend_hi >= divisor)\r
-                               {\r
-                                       FLAG_V = VFLAG_SET;\r
-                                       return;\r
-                               }\r
-\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       remainder = (remainder << 1) + ((dividend_hi >> i) & 1);\r
-                                       if(remainder >= divisor)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       overflow = GET_MSB_32(remainder);\r
-                                       remainder = (remainder << 1) + ((dividend_lo >> i) & 1);\r
-                                       if(remainder >= divisor || overflow)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       if(quotient > 0x7fffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       if(dividend_neg)\r
-                                       {\r
-                                               remainder = (uint)MASK_OUT_ABOVE_32(-(sint)remainder);\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                                       }\r
-                                       if(divisor_neg)\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                               }\r
-\r
-                               REG_D[word2 & 7] = remainder;\r
-                               REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                               FLAG_N = NFLAG_32(quotient);\r
-                               FLAG_Z = quotient;\r
-                               FLAG_V = VFLAG_CLEAR;\r
-                               FLAG_C = CFLAG_CLEAR;\r
-                               return;\r
-                       }\r
-\r
-                       /* long / long: long quotient, maybe long remainder */\r
-                       if(BIT_B(word2))           /* signed */\r
-                       {\r
-                               /* Special case in divide */\r
-                               if(dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                               {\r
-                                       FLAG_N = NFLAG_SET;\r
-                                       FLAG_Z = ZFLAG_CLEAR;\r
-                                       FLAG_V = VFLAG_CLEAR;\r
-                                       FLAG_C = CFLAG_CLEAR;\r
-                                       REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-                                       REG_D[word2 & 7] = 0;\r
-                                       return;\r
-                               }\r
-                               REG_D[word2 & 7] = MAKE_INT_32(dividend_lo) % MAKE_INT_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MAKE_INT_32(dividend_lo) / MAKE_INT_32(divisor);\r
-                       }\r
-                       else\r
-                       {\r
-                               REG_D[word2 & 7] = MASK_OUT_ABOVE_32(dividend_lo) % MASK_OUT_ABOVE_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(dividend_lo) / MASK_OUT_ABOVE_32(divisor);\r
-                       }\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_divl_32_i(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 divisor = OPER_I_32();\r
-               uint64 dividend  = 0;\r
-               uint64 quotient  = 0;\r
-               uint64 remainder = 0;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       if(BIT_A(word2))        /* 64 bit */\r
-                       {\r
-                               dividend = REG_D[word2 & 7];\r
-                               dividend <<= 32;\r
-                               dividend |= REG_D[(word2 >> 12) & 7];\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)dividend / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)dividend % (sint64)((sint32)divisor));\r
-                                       if((sint64)quotient != (sint64)((sint32)quotient))\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       if(quotient > 0xffffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-                       else    /* 32 bit */\r
-                       {\r
-                               dividend = REG_D[(word2 >> 12) & 7];\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       quotient  = (uint64)((sint64)((sint32)dividend) / (sint64)((sint32)divisor));\r
-                                       remainder = (uint64)((sint64)((sint32)dividend) % (sint64)((sint32)divisor));\r
-                               }\r
-                               else                                    /* unsigned */\r
-                               {\r
-                                       quotient = dividend / divisor;\r
-                                       remainder = dividend % divisor;\r
-                               }\r
-                       }\r
-\r
-                       REG_D[word2 & 7] = remainder;\r
-                       REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint divisor = OPER_I_32();\r
-               uint dividend_hi = REG_D[word2 & 7];\r
-               uint dividend_lo = REG_D[(word2 >> 12) & 7];\r
-               uint quotient = 0;\r
-               uint remainder = 0;\r
-               uint dividend_neg = 0;\r
-               uint divisor_neg = 0;\r
-               sint i;\r
-               uint overflow;\r
-\r
-               if(divisor != 0)\r
-               {\r
-                       /* quad / long : long quotient, long remainder */\r
-                       if(BIT_A(word2))\r
-                       {\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       /* special case in signed divide */\r
-                                       if(dividend_hi == 0 && dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                                       {\r
-                                               REG_D[word2 & 7] = 0;\r
-                                               REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-\r
-                                               FLAG_N = NFLAG_SET;\r
-                                               FLAG_Z = ZFLAG_CLEAR;\r
-                                               FLAG_V = VFLAG_CLEAR;\r
-                                               FLAG_C = CFLAG_CLEAR;\r
-                                               return;\r
-                                       }\r
-                                       if(GET_MSB_32(dividend_hi))\r
-                                       {\r
-                                               dividend_neg = 1;\r
-                                               dividend_hi = (uint)MASK_OUT_ABOVE_32((-(sint)dividend_hi) - (dividend_lo != 0));\r
-                                               dividend_lo = (uint)MASK_OUT_ABOVE_32(-(sint)dividend_lo);\r
-                                       }\r
-                                       if(GET_MSB_32(divisor))\r
-                                       {\r
-                                               divisor_neg = 1;\r
-                                               divisor = (uint)MASK_OUT_ABOVE_32(-(sint)divisor);\r
-\r
-                                       }\r
-                               }\r
-\r
-                               /* if the upper long is greater than the divisor, we're overflowing. */\r
-                               if(dividend_hi >= divisor)\r
-                               {\r
-                                       FLAG_V = VFLAG_SET;\r
-                                       return;\r
-                               }\r
-\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       remainder = (remainder << 1) + ((dividend_hi >> i) & 1);\r
-                                       if(remainder >= divisor)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-                               for(i = 31; i >= 0; i--)\r
-                               {\r
-                                       quotient <<= 1;\r
-                                       overflow = GET_MSB_32(remainder);\r
-                                       remainder = (remainder << 1) + ((dividend_lo >> i) & 1);\r
-                                       if(remainder >= divisor || overflow)\r
-                                       {\r
-                                               remainder -= divisor;\r
-                                               quotient++;\r
-                                       }\r
-                               }\r
-\r
-                               if(BIT_B(word2))           /* signed */\r
-                               {\r
-                                       if(quotient > 0x7fffffff)\r
-                                       {\r
-                                               FLAG_V = VFLAG_SET;\r
-                                               return;\r
-                                       }\r
-                                       if(dividend_neg)\r
-                                       {\r
-                                               remainder = (uint)MASK_OUT_ABOVE_32(-(sint)remainder);\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                                       }\r
-                                       if(divisor_neg)\r
-                                               quotient = (uint)MASK_OUT_ABOVE_32(-(sint)quotient);\r
-                               }\r
-\r
-                               REG_D[word2 & 7] = remainder;\r
-                               REG_D[(word2 >> 12) & 7] = quotient;\r
-\r
-                               FLAG_N = NFLAG_32(quotient);\r
-                               FLAG_Z = quotient;\r
-                               FLAG_V = VFLAG_CLEAR;\r
-                               FLAG_C = CFLAG_CLEAR;\r
-                               return;\r
-                       }\r
-\r
-                       /* long / long: long quotient, maybe long remainder */\r
-                       if(BIT_B(word2))           /* signed */\r
-                       {\r
-                               /* Special case in divide */\r
-                               if(dividend_lo == 0x80000000 && divisor == 0xffffffff)\r
-                               {\r
-                                       FLAG_N = NFLAG_SET;\r
-                                       FLAG_Z = ZFLAG_CLEAR;\r
-                                       FLAG_V = VFLAG_CLEAR;\r
-                                       FLAG_C = CFLAG_CLEAR;\r
-                                       REG_D[(word2 >> 12) & 7] = 0x80000000;\r
-                                       REG_D[word2 & 7] = 0;\r
-                                       return;\r
-                               }\r
-                               REG_D[word2 & 7] = MAKE_INT_32(dividend_lo) % MAKE_INT_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MAKE_INT_32(dividend_lo) / MAKE_INT_32(divisor);\r
-                       }\r
-                       else\r
-                       {\r
-                               REG_D[word2 & 7] = MASK_OUT_ABOVE_32(dividend_lo) % MASK_OUT_ABOVE_32(divisor);\r
-                               quotient = REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(dividend_lo) / MASK_OUT_ABOVE_32(divisor);\r
-                       }\r
-\r
-                       FLAG_N = NFLAG_32(quotient);\r
-                       FLAG_Z = quotient;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       FLAG_C = CFLAG_CLEAR;\r
-                       return;\r
-               }\r
-               m68ki_exception_trap(EXCEPTION_ZERO_DIVIDE);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_eor_8_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_8(DY ^= MASK_OUT_ABOVE_8(DX));\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_8_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_8();\r
-       uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_8_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_8();\r
-       uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_8_pi7(void)\r
-{\r
-       uint ea = EA_A7_PI_8();\r
-       uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_8_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_8();\r
-       uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_8_pd7(void)\r
-{\r
-       uint ea = EA_A7_PD_8();\r
-       uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_8_di(void)\r
-{\r
-       uint ea = EA_AY_DI_8();\r
-       uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_8_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_8();\r
-       uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_8_aw(void)\r
-{\r
-       uint ea = EA_AW_8();\r
-       uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_8_al(void)\r
-{\r
-       uint ea = EA_AL_8();\r
-       uint res = MASK_OUT_ABOVE_8(DX ^ m68ki_read_8(ea));\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_16_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(DY ^= MASK_OUT_ABOVE_16(DX));\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_16_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_16();\r
-       uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_16_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_16();\r
-       uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_16_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_16();\r
-       uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_16_di(void)\r
-{\r
-       uint ea = EA_AY_DI_16();\r
-       uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_16_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_16();\r
-       uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_16_aw(void)\r
-{\r
-       uint ea = EA_AW_16();\r
-       uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_16_al(void)\r
-{\r
-       uint ea = EA_AL_16();\r
-       uint res = MASK_OUT_ABOVE_16(DX ^ m68ki_read_16(ea));\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_32_d(void)\r
-{\r
-       uint res = DY ^= DX;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_32_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_32();\r
-       uint res = DX ^ m68ki_read_32(ea);\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_32_pi(void)\r
-{\r
-       uint ea = EA_AY_PI_32();\r
-       uint res = DX ^ m68ki_read_32(ea);\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_32_pd(void)\r
-{\r
-       uint ea = EA_AY_PD_32();\r
-       uint res = DX ^ m68ki_read_32(ea);\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_32_di(void)\r
-{\r
-       uint ea = EA_AY_DI_32();\r
-       uint res = DX ^ m68ki_read_32(ea);\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_32_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_32();\r
-       uint res = DX ^ m68ki_read_32(ea);\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_32_aw(void)\r
-{\r
-       uint ea = EA_AW_32();\r
-       uint res = DX ^ m68ki_read_32(ea);\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eor_32_al(void)\r
-{\r
-       uint ea = EA_AL_32();\r
-       uint res = DX ^ m68ki_read_32(ea);\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_8_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_8(DY ^= OPER_I_8());\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_16_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(DY ^= OPER_I_16());\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_16(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_32_d(void)\r
-{\r
-       uint res = DY ^= OPER_I_32();\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_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
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_C = CFLAG_CLEAR;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_eori_16_toc(void)\r
-{\r
-       m68ki_set_ccr(m68ki_get_ccr() ^ OPER_I_16());\r
-}\r
-\r
-\r
-void m68k_op_eori_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_exg_32_dd(void)\r
-{\r
-       uint* reg_a = &DX;\r
-       uint* reg_b = &DY;\r
-       uint tmp = *reg_a;\r
-       *reg_a = *reg_b;\r
-       *reg_b = tmp;\r
-}\r
-\r
-\r
-void m68k_op_exg_32_aa(void)\r
-{\r
-       uint* reg_a = &AX;\r
-       uint* reg_b = &AY;\r
-       uint tmp = *reg_a;\r
-       *reg_a = *reg_b;\r
-       *reg_b = tmp;\r
-}\r
-\r
-\r
-void m68k_op_exg_32_da(void)\r
-{\r
-       uint* reg_a = &DX;\r
-       uint* reg_b = &AY;\r
-       uint tmp = *reg_a;\r
-       *reg_a = *reg_b;\r
-       *reg_b = tmp;\r
-}\r
-\r
-\r
-void m68k_op_ext_16(void)\r
-{\r
-       uint* r_dst = &DY;\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | MASK_OUT_ABOVE_8(*r_dst) | (GET_MSB_8(*r_dst) ? 0xff00 : 0);\r
-\r
-       FLAG_N = NFLAG_16(*r_dst);\r
-       FLAG_Z = MASK_OUT_ABOVE_16(*r_dst);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_ext_32(void)\r
-{\r
-       uint* r_dst = &DY;\r
-\r
-       *r_dst = MASK_OUT_ABOVE_16(*r_dst) | (GET_MSB_16(*r_dst) ? 0xffff0000 : 0);\r
-\r
-       FLAG_N = NFLAG_32(*r_dst);\r
-       FLAG_Z = *r_dst;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_extb_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint* r_dst = &DY;\r
-\r
-               *r_dst = MASK_OUT_ABOVE_8(*r_dst) | (GET_MSB_8(*r_dst) ? 0xffffff00 : 0);\r
-\r
-               FLAG_N = NFLAG_32(*r_dst);\r
-               FLAG_Z = *r_dst;\r
-               FLAG_V = VFLAG_CLEAR;\r
-               FLAG_C = CFLAG_CLEAR;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_illegal(void)\r
-{\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_jmp_32_ai(void)\r
-{\r
-       m68ki_jump(EA_AY_AI_32());\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       if(REG_PC == REG_PPC)\r
-               USE_ALL_CYCLES();\r
-}\r
-\r
-\r
-void m68k_op_jmp_32_di(void)\r
-{\r
-       m68ki_jump(EA_AY_DI_32());\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       if(REG_PC == REG_PPC)\r
-               USE_ALL_CYCLES();\r
-}\r
-\r
-\r
-void m68k_op_jmp_32_ix(void)\r
-{\r
-       m68ki_jump(EA_AY_IX_32());\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       if(REG_PC == REG_PPC)\r
-               USE_ALL_CYCLES();\r
-}\r
-\r
-\r
-void m68k_op_jmp_32_aw(void)\r
-{\r
-       m68ki_jump(EA_AW_32());\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       if(REG_PC == REG_PPC)\r
-               USE_ALL_CYCLES();\r
-}\r
-\r
-\r
-void m68k_op_jmp_32_al(void)\r
-{\r
-       m68ki_jump(EA_AL_32());\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       if(REG_PC == REG_PPC)\r
-               USE_ALL_CYCLES();\r
-}\r
-\r
-\r
-void m68k_op_jmp_32_pcdi(void)\r
-{\r
-       m68ki_jump(EA_PCDI_32());\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       if(REG_PC == REG_PPC)\r
-               USE_ALL_CYCLES();\r
-}\r
-\r
-\r
-void m68k_op_jmp_32_pcix(void)\r
-{\r
-       m68ki_jump(EA_PCIX_32());\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       if(REG_PC == REG_PPC)\r
-               USE_ALL_CYCLES();\r
-}\r
-\r
-\r
-void m68k_op_jsr_32_ai(void)\r
-{\r
-       uint ea = EA_AY_AI_32();\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       m68ki_push_32(MAKE_INT_24(REG_PC)); // notaz: Cyclone can't handle 32bit PC and I neet to debug it\r
-       m68ki_jump(ea);\r
-}\r
-\r
-\r
-void m68k_op_jsr_32_di(void)\r
-{\r
-       uint ea = EA_AY_DI_32();\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       m68ki_push_32(MAKE_INT_24(REG_PC)); // notaz: Cyclone can't handle 32bit PC and I neet to debug it\r
-       m68ki_jump(ea);\r
-}\r
-\r
-\r
-void m68k_op_jsr_32_ix(void)\r
-{\r
-       uint ea = EA_AY_IX_32();\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       m68ki_push_32(MAKE_INT_24(REG_PC)); // notaz: Cyclone can't handle 32bit PC and I neet to debug it\r
-       m68ki_jump(ea);\r
-}\r
-\r
-\r
-void m68k_op_jsr_32_aw(void)\r
-{\r
-       uint ea = EA_AW_32();\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       m68ki_push_32(MAKE_INT_24(REG_PC)); // notaz: Cyclone can't handle 32bit PC and I neet to debug it\r
-       m68ki_jump(ea);\r
-}\r
-\r
-\r
-void m68k_op_jsr_32_al(void)\r
-{\r
-       uint ea = EA_AL_32();\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       m68ki_push_32(MAKE_INT_24(REG_PC)); // notaz: Cyclone can't handle 32bit PC and I neet to debug it\r
-       m68ki_jump(ea);\r
-}\r
-\r
-\r
-void m68k_op_jsr_32_pcdi(void)\r
-{\r
-       uint ea = EA_PCDI_32();\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       m68ki_push_32(MAKE_INT_24(REG_PC)); // notaz: Cyclone can't handle 32bit PC and I neet to debug it\r
-       m68ki_jump(ea);\r
-}\r
-\r
-\r
-void m68k_op_jsr_32_pcix(void)\r
-{\r
-       uint ea = EA_PCIX_32();\r
-       m68ki_trace_t0();                                  /* auto-disable (see m68kcpu.h) */\r
-       m68ki_push_32(MAKE_INT_24(REG_PC)); // notaz: Cyclone can't handle 32bit PC and I neet to debug it\r
-       m68ki_jump(ea);\r
-}\r
-\r
-\r
-void m68k_op_lea_32_ai(void)\r
-{\r
-       AX = EA_AY_AI_32();\r
-}\r
-\r
-\r
-void m68k_op_lea_32_di(void)\r
-{\r
-       AX = EA_AY_DI_32();\r
-}\r
-\r
-\r
-void m68k_op_lea_32_ix(void)\r
-{\r
-       AX = EA_AY_IX_32();\r
-}\r
-\r
-\r
-void m68k_op_lea_32_aw(void)\r
-{\r
-       AX = EA_AW_32();\r
-}\r
-\r
-\r
-void m68k_op_lea_32_al(void)\r
-{\r
-       AX = EA_AL_32();\r
-}\r
-\r
-\r
-void m68k_op_lea_32_pcdi(void)\r
-{\r
-       AX = EA_PCDI_32();\r
-}\r
-\r
-\r
-void m68k_op_lea_32_pcix(void)\r
-{\r
-       AX = EA_PCIX_32();\r
-}\r
-\r
-\r
-void m68k_op_link_16_a7(void)\r
-{\r
-       REG_A[7] -= 4;\r
-       m68ki_write_32(REG_A[7], REG_A[7]);\r
-       REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + MAKE_INT_16(OPER_I_16()));\r
-}\r
-\r
-\r
-void m68k_op_link_16(void)\r
-{\r
-       uint* r_dst = &AY;\r
-\r
-       m68ki_push_32(*r_dst);\r
-       *r_dst = REG_A[7];\r
-       REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + MAKE_INT_16(OPER_I_16()));\r
-}\r
-\r
-\r
-void m68k_op_link_32_a7(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               REG_A[7] -= 4;\r
-               m68ki_write_32(REG_A[7], REG_A[7]);\r
-               REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + OPER_I_32());\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_link_32(void)\r
-{\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint* r_dst = &AY;\r
-\r
-               m68ki_push_32(*r_dst);\r
-               *r_dst = REG_A[7];\r
-               REG_A[7] = MASK_OUT_ABOVE_32(REG_A[7] + OPER_I_32());\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_lsr_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
-       *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_Z = res;\r
-       FLAG_X = FLAG_C = src << (9-shift);\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsr_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
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_Z = res;\r
-       FLAG_X = FLAG_C = src << (9-shift);\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsr_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
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_Z = res;\r
-       FLAG_X = FLAG_C = src << (9-shift);\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsr_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
-                       *r_dst = MASK_OUT_BELOW_8(*r_dst) | res;\r
-                       FLAG_X = FLAG_C = src << (9-shift);\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_Z = res;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               *r_dst &= 0xffffff00;\r
-               FLAG_X = XFLAG_CLEAR;\r
-               FLAG_C = CFLAG_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_lsr_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
-                       *r_dst = MASK_OUT_BELOW_16(*r_dst) | res;\r
-                       FLAG_C = FLAG_X = (src >> (shift - 1))<<8;\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_Z = res;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               *r_dst &= 0xffff0000;\r
-               FLAG_X = XFLAG_CLEAR;\r
-               FLAG_C = CFLAG_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_lsr_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
-                       *r_dst = res;\r
-                       FLAG_C = FLAG_X = (src >> (shift - 1))<<8;\r
-                       FLAG_N = NFLAG_CLEAR;\r
-                       FLAG_Z = res;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               *r_dst = 0;\r
-               FLAG_X = FLAG_C = (shift == 32 ? GET_MSB_32(src)>>23 : 0);\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_lsr_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
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_Z = res;\r
-       FLAG_C = FLAG_X = src << 8;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsr_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
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_Z = res;\r
-       FLAG_C = FLAG_X = src << 8;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsr_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
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_Z = res;\r
-       FLAG_C = FLAG_X = src << 8;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsr_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
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_Z = res;\r
-       FLAG_C = FLAG_X = src << 8;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsr_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
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_Z = res;\r
-       FLAG_C = FLAG_X = src << 8;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsr_16_aw(void)\r
-{\r
-       uint ea = EA_AW_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = src >> 1;\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_Z = res;\r
-       FLAG_C = FLAG_X = src << 8;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsr_16_al(void)\r
-{\r
-       uint ea = EA_AL_16();\r
-       uint src = m68ki_read_16(ea);\r
-       uint res = src >> 1;\r
-\r
-       m68ki_write_16(ea, res);\r
-\r
-       FLAG_N = NFLAG_CLEAR;\r
-       FLAG_Z = res;\r
-       FLAG_C = FLAG_X = src << 8;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsl_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_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_X = FLAG_C = src << shift;\r
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsl_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
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsl_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
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsl_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
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               *r_dst &= 0xffffff00;\r
-               FLAG_X = XFLAG_CLEAR;\r
-               FLAG_C = CFLAG_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_lsl_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
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               *r_dst &= 0xffff0000;\r
-               FLAG_X = XFLAG_CLEAR;\r
-               FLAG_C = CFLAG_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_lsl_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
-                       FLAG_V = VFLAG_CLEAR;\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 = 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_lsl_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
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsl_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
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsl_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
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsl_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
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsl_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
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsl_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
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_lsl_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
-       FLAG_V = VFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_d_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_8(DY);\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_d_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_8();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_d_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_8();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_d_pi7(void)\r
-{\r
-       uint res = OPER_A7_PI_8();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_d_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_8();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_d_pd7(void)\r
-{\r
-       uint res = OPER_A7_PD_8();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_d_di(void)\r
-{\r
-       uint res = OPER_AY_DI_8();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_d_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_8();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_d_aw(void)\r
-{\r
-       uint res = OPER_AW_8();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_d_al(void)\r
-{\r
-       uint res = OPER_AL_8();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_d_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_8();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_d_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_8();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_d_i(void)\r
-{\r
-       uint res = OPER_I_8();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ai_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_8(DY);\r
-       uint ea = EA_AX_AI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ai_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_8();\r
-       uint ea = EA_AX_AI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ai_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_8();\r
-       uint ea = EA_AX_AI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ai_pi7(void)\r
-{\r
-       uint res = OPER_A7_PI_8();\r
-       uint ea = EA_AX_AI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ai_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_8();\r
-       uint ea = EA_AX_AI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ai_pd7(void)\r
-{\r
-       uint res = OPER_A7_PD_8();\r
-       uint ea = EA_AX_AI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ai_di(void)\r
-{\r
-       uint res = OPER_AY_DI_8();\r
-       uint ea = EA_AX_AI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ai_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_8();\r
-       uint ea = EA_AX_AI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ai_aw(void)\r
-{\r
-       uint res = OPER_AW_8();\r
-       uint ea = EA_AX_AI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ai_al(void)\r
-{\r
-       uint res = OPER_AL_8();\r
-       uint ea = EA_AX_AI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ai_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_8();\r
-       uint ea = EA_AX_AI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ai_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_8();\r
-       uint ea = EA_AX_AI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ai_i(void)\r
-{\r
-       uint res = OPER_I_8();\r
-       uint ea = EA_AX_AI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi7_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_8(DY);\r
-       uint ea = EA_A7_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_8(DY);\r
-       uint ea = EA_AX_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi7_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_8();\r
-       uint ea = EA_A7_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi7_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_8();\r
-       uint ea = EA_A7_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi7_pi7(void)\r
-{\r
-       uint res = OPER_A7_PI_8();\r
-       uint ea = EA_A7_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi7_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_8();\r
-       uint ea = EA_A7_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi7_pd7(void)\r
-{\r
-       uint res = OPER_A7_PD_8();\r
-       uint ea = EA_A7_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi7_di(void)\r
-{\r
-       uint res = OPER_AY_DI_8();\r
-       uint ea = EA_A7_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi7_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_8();\r
-       uint ea = EA_A7_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi7_aw(void)\r
-{\r
-       uint res = OPER_AW_8();\r
-       uint ea = EA_A7_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi7_al(void)\r
-{\r
-       uint res = OPER_AL_8();\r
-       uint ea = EA_A7_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi7_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_8();\r
-       uint ea = EA_A7_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi7_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_8();\r
-       uint ea = EA_A7_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi7_i(void)\r
-{\r
-       uint res = OPER_I_8();\r
-       uint ea = EA_A7_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_8();\r
-       uint ea = EA_AX_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_8();\r
-       uint ea = EA_AX_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi_pi7(void)\r
-{\r
-       uint res = OPER_A7_PI_8();\r
-       uint ea = EA_AX_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_8();\r
-       uint ea = EA_AX_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi_pd7(void)\r
-{\r
-       uint res = OPER_A7_PD_8();\r
-       uint ea = EA_AX_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi_di(void)\r
-{\r
-       uint res = OPER_AY_DI_8();\r
-       uint ea = EA_AX_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_8();\r
-       uint ea = EA_AX_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi_aw(void)\r
-{\r
-       uint res = OPER_AW_8();\r
-       uint ea = EA_AX_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi_al(void)\r
-{\r
-       uint res = OPER_AL_8();\r
-       uint ea = EA_AX_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_8();\r
-       uint ea = EA_AX_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_8();\r
-       uint ea = EA_AX_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pi_i(void)\r
-{\r
-       uint res = OPER_I_8();\r
-       uint ea = EA_AX_PI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd7_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_8(DY);\r
-       uint ea = EA_A7_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_8(DY);\r
-       uint ea = EA_AX_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd7_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_8();\r
-       uint ea = EA_A7_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd7_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_8();\r
-       uint ea = EA_A7_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd7_pi7(void)\r
-{\r
-       uint res = OPER_A7_PI_8();\r
-       uint ea = EA_A7_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd7_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_8();\r
-       uint ea = EA_A7_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd7_pd7(void)\r
-{\r
-       uint res = OPER_A7_PD_8();\r
-       uint ea = EA_A7_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd7_di(void)\r
-{\r
-       uint res = OPER_AY_DI_8();\r
-       uint ea = EA_A7_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd7_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_8();\r
-       uint ea = EA_A7_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd7_aw(void)\r
-{\r
-       uint res = OPER_AW_8();\r
-       uint ea = EA_A7_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd7_al(void)\r
-{\r
-       uint res = OPER_AL_8();\r
-       uint ea = EA_A7_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd7_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_8();\r
-       uint ea = EA_A7_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd7_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_8();\r
-       uint ea = EA_A7_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd7_i(void)\r
-{\r
-       uint res = OPER_I_8();\r
-       uint ea = EA_A7_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_8();\r
-       uint ea = EA_AX_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_8();\r
-       uint ea = EA_AX_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd_pi7(void)\r
-{\r
-       uint res = OPER_A7_PI_8();\r
-       uint ea = EA_AX_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_8();\r
-       uint ea = EA_AX_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd_pd7(void)\r
-{\r
-       uint res = OPER_A7_PD_8();\r
-       uint ea = EA_AX_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd_di(void)\r
-{\r
-       uint res = OPER_AY_DI_8();\r
-       uint ea = EA_AX_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_8();\r
-       uint ea = EA_AX_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd_aw(void)\r
-{\r
-       uint res = OPER_AW_8();\r
-       uint ea = EA_AX_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd_al(void)\r
-{\r
-       uint res = OPER_AL_8();\r
-       uint ea = EA_AX_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_8();\r
-       uint ea = EA_AX_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_8();\r
-       uint ea = EA_AX_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_pd_i(void)\r
-{\r
-       uint res = OPER_I_8();\r
-       uint ea = EA_AX_PD_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_di_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_8(DY);\r
-       uint ea = EA_AX_DI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_di_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_8();\r
-       uint ea = EA_AX_DI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_di_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_8();\r
-       uint ea = EA_AX_DI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_di_pi7(void)\r
-{\r
-       uint res = OPER_A7_PI_8();\r
-       uint ea = EA_AX_DI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_di_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_8();\r
-       uint ea = EA_AX_DI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_di_pd7(void)\r
-{\r
-       uint res = OPER_A7_PD_8();\r
-       uint ea = EA_AX_DI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_di_di(void)\r
-{\r
-       uint res = OPER_AY_DI_8();\r
-       uint ea = EA_AX_DI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_di_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_8();\r
-       uint ea = EA_AX_DI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_di_aw(void)\r
-{\r
-       uint res = OPER_AW_8();\r
-       uint ea = EA_AX_DI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_di_al(void)\r
-{\r
-       uint res = OPER_AL_8();\r
-       uint ea = EA_AX_DI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_di_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_8();\r
-       uint ea = EA_AX_DI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_di_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_8();\r
-       uint ea = EA_AX_DI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_di_i(void)\r
-{\r
-       uint res = OPER_I_8();\r
-       uint ea = EA_AX_DI_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ix_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_8(DY);\r
-       uint ea = EA_AX_IX_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ix_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_8();\r
-       uint ea = EA_AX_IX_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ix_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_8();\r
-       uint ea = EA_AX_IX_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ix_pi7(void)\r
-{\r
-       uint res = OPER_A7_PI_8();\r
-       uint ea = EA_AX_IX_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ix_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_8();\r
-       uint ea = EA_AX_IX_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ix_pd7(void)\r
-{\r
-       uint res = OPER_A7_PD_8();\r
-       uint ea = EA_AX_IX_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ix_di(void)\r
-{\r
-       uint res = OPER_AY_DI_8();\r
-       uint ea = EA_AX_IX_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ix_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_8();\r
-       uint ea = EA_AX_IX_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ix_aw(void)\r
-{\r
-       uint res = OPER_AW_8();\r
-       uint ea = EA_AX_IX_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ix_al(void)\r
-{\r
-       uint res = OPER_AL_8();\r
-       uint ea = EA_AX_IX_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ix_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_8();\r
-       uint ea = EA_AX_IX_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ix_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_8();\r
-       uint ea = EA_AX_IX_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_ix_i(void)\r
-{\r
-       uint res = OPER_I_8();\r
-       uint ea = EA_AX_IX_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_aw_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_8(DY);\r
-       uint ea = EA_AW_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_aw_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_8();\r
-       uint ea = EA_AW_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_aw_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_8();\r
-       uint ea = EA_AW_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_aw_pi7(void)\r
-{\r
-       uint res = OPER_A7_PI_8();\r
-       uint ea = EA_AW_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_aw_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_8();\r
-       uint ea = EA_AW_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_aw_pd7(void)\r
-{\r
-       uint res = OPER_A7_PD_8();\r
-       uint ea = EA_AW_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_aw_di(void)\r
-{\r
-       uint res = OPER_AY_DI_8();\r
-       uint ea = EA_AW_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_aw_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_8();\r
-       uint ea = EA_AW_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_aw_aw(void)\r
-{\r
-       uint res = OPER_AW_8();\r
-       uint ea = EA_AW_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_aw_al(void)\r
-{\r
-       uint res = OPER_AL_8();\r
-       uint ea = EA_AW_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_aw_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_8();\r
-       uint ea = EA_AW_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_aw_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_8();\r
-       uint ea = EA_AW_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_aw_i(void)\r
-{\r
-       uint res = OPER_I_8();\r
-       uint ea = EA_AW_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_al_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_8(DY);\r
-       uint ea = EA_AL_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_al_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_8();\r
-       uint ea = EA_AL_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_al_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_8();\r
-       uint ea = EA_AL_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_al_pi7(void)\r
-{\r
-       uint res = OPER_A7_PI_8();\r
-       uint ea = EA_AL_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_al_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_8();\r
-       uint ea = EA_AL_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_al_pd7(void)\r
-{\r
-       uint res = OPER_A7_PD_8();\r
-       uint ea = EA_AL_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_al_di(void)\r
-{\r
-       uint res = OPER_AY_DI_8();\r
-       uint ea = EA_AL_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_al_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_8();\r
-       uint ea = EA_AL_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_al_aw(void)\r
-{\r
-       uint res = OPER_AW_8();\r
-       uint ea = EA_AL_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_al_al(void)\r
-{\r
-       uint res = OPER_AL_8();\r
-       uint ea = EA_AL_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_al_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_8();\r
-       uint ea = EA_AL_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_al_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_8();\r
-       uint ea = EA_AL_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_8_al_i(void)\r
-{\r
-       uint res = OPER_I_8();\r
-       uint ea = EA_AL_8();\r
-\r
-       m68ki_write_8(ea, res);\r
-\r
-       FLAG_N = NFLAG_8(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_d_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(DY);\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_d_a(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(AY);\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_d_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_16();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_d_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_16();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_d_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_16();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_d_di(void)\r
-{\r
-       uint res = OPER_AY_DI_16();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_d_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_16();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_d_aw(void)\r
-{\r
-       uint res = OPER_AW_16();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_d_al(void)\r
-{\r
-       uint res = OPER_AL_16();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_d_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_16();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_d_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_16();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_d_i(void)\r
-{\r
-       uint res = OPER_I_16();\r
-       uint* r_dst = &DX;\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_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ai_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(DY);\r
-       uint ea = EA_AX_AI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ai_a(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(AY);\r
-       uint ea = EA_AX_AI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ai_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_16();\r
-       uint ea = EA_AX_AI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ai_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_16();\r
-       uint ea = EA_AX_AI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ai_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_16();\r
-       uint ea = EA_AX_AI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ai_di(void)\r
-{\r
-       uint res = OPER_AY_DI_16();\r
-       uint ea = EA_AX_AI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ai_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_16();\r
-       uint ea = EA_AX_AI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ai_aw(void)\r
-{\r
-       uint res = OPER_AW_16();\r
-       uint ea = EA_AX_AI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ai_al(void)\r
-{\r
-       uint res = OPER_AL_16();\r
-       uint ea = EA_AX_AI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ai_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_16();\r
-       uint ea = EA_AX_AI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ai_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_16();\r
-       uint ea = EA_AX_AI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ai_i(void)\r
-{\r
-       uint res = OPER_I_16();\r
-       uint ea = EA_AX_AI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pi_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(DY);\r
-       uint ea = EA_AX_PI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pi_a(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(AY);\r
-       uint ea = EA_AX_PI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pi_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_16();\r
-       uint ea = EA_AX_PI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pi_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_16();\r
-       uint ea = EA_AX_PI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pi_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_16();\r
-       uint ea = EA_AX_PI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pi_di(void)\r
-{\r
-       uint res = OPER_AY_DI_16();\r
-       uint ea = EA_AX_PI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pi_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_16();\r
-       uint ea = EA_AX_PI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pi_aw(void)\r
-{\r
-       uint res = OPER_AW_16();\r
-       uint ea = EA_AX_PI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pi_al(void)\r
-{\r
-       uint res = OPER_AL_16();\r
-       uint ea = EA_AX_PI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pi_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_16();\r
-       uint ea = EA_AX_PI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pi_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_16();\r
-       uint ea = EA_AX_PI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pi_i(void)\r
-{\r
-       uint res = OPER_I_16();\r
-       uint ea = EA_AX_PI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pd_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(DY);\r
-       uint ea = EA_AX_PD_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pd_a(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(AY);\r
-       uint ea = EA_AX_PD_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pd_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_16();\r
-       uint ea = EA_AX_PD_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pd_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_16();\r
-       uint ea = EA_AX_PD_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pd_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_16();\r
-       uint ea = EA_AX_PD_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pd_di(void)\r
-{\r
-       uint res = OPER_AY_DI_16();\r
-       uint ea = EA_AX_PD_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pd_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_16();\r
-       uint ea = EA_AX_PD_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pd_aw(void)\r
-{\r
-       uint res = OPER_AW_16();\r
-       uint ea = EA_AX_PD_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pd_al(void)\r
-{\r
-       uint res = OPER_AL_16();\r
-       uint ea = EA_AX_PD_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pd_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_16();\r
-       uint ea = EA_AX_PD_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pd_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_16();\r
-       uint ea = EA_AX_PD_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_pd_i(void)\r
-{\r
-       uint res = OPER_I_16();\r
-       uint ea = EA_AX_PD_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_di_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(DY);\r
-       uint ea = EA_AX_DI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_di_a(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(AY);\r
-       uint ea = EA_AX_DI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_di_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_16();\r
-       uint ea = EA_AX_DI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_di_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_16();\r
-       uint ea = EA_AX_DI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_di_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_16();\r
-       uint ea = EA_AX_DI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_di_di(void)\r
-{\r
-       uint res = OPER_AY_DI_16();\r
-       uint ea = EA_AX_DI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_di_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_16();\r
-       uint ea = EA_AX_DI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_di_aw(void)\r
-{\r
-       uint res = OPER_AW_16();\r
-       uint ea = EA_AX_DI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_di_al(void)\r
-{\r
-       uint res = OPER_AL_16();\r
-       uint ea = EA_AX_DI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_di_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_16();\r
-       uint ea = EA_AX_DI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_di_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_16();\r
-       uint ea = EA_AX_DI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_di_i(void)\r
-{\r
-       uint res = OPER_I_16();\r
-       uint ea = EA_AX_DI_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ix_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(DY);\r
-       uint ea = EA_AX_IX_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ix_a(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(AY);\r
-       uint ea = EA_AX_IX_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ix_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_16();\r
-       uint ea = EA_AX_IX_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ix_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_16();\r
-       uint ea = EA_AX_IX_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ix_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_16();\r
-       uint ea = EA_AX_IX_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ix_di(void)\r
-{\r
-       uint res = OPER_AY_DI_16();\r
-       uint ea = EA_AX_IX_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ix_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_16();\r
-       uint ea = EA_AX_IX_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ix_aw(void)\r
-{\r
-       uint res = OPER_AW_16();\r
-       uint ea = EA_AX_IX_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ix_al(void)\r
-{\r
-       uint res = OPER_AL_16();\r
-       uint ea = EA_AX_IX_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ix_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_16();\r
-       uint ea = EA_AX_IX_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ix_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_16();\r
-       uint ea = EA_AX_IX_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_ix_i(void)\r
-{\r
-       uint res = OPER_I_16();\r
-       uint ea = EA_AX_IX_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_aw_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(DY);\r
-       uint ea = EA_AW_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_aw_a(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(AY);\r
-       uint ea = EA_AW_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_aw_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_16();\r
-       uint ea = EA_AW_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_aw_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_16();\r
-       uint ea = EA_AW_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_aw_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_16();\r
-       uint ea = EA_AW_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_aw_di(void)\r
-{\r
-       uint res = OPER_AY_DI_16();\r
-       uint ea = EA_AW_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_aw_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_16();\r
-       uint ea = EA_AW_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_aw_aw(void)\r
-{\r
-       uint res = OPER_AW_16();\r
-       uint ea = EA_AW_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_aw_al(void)\r
-{\r
-       uint res = OPER_AL_16();\r
-       uint ea = EA_AW_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_aw_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_16();\r
-       uint ea = EA_AW_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_aw_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_16();\r
-       uint ea = EA_AW_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_aw_i(void)\r
-{\r
-       uint res = OPER_I_16();\r
-       uint ea = EA_AW_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_al_d(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(DY);\r
-       uint ea = EA_AL_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_al_a(void)\r
-{\r
-       uint res = MASK_OUT_ABOVE_16(AY);\r
-       uint ea = EA_AL_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_al_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_16();\r
-       uint ea = EA_AL_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_al_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_16();\r
-       uint ea = EA_AL_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_al_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_16();\r
-       uint ea = EA_AL_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_al_di(void)\r
-{\r
-       uint res = OPER_AY_DI_16();\r
-       uint ea = EA_AL_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_al_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_16();\r
-       uint ea = EA_AL_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_al_aw(void)\r
-{\r
-       uint res = OPER_AW_16();\r
-       uint ea = EA_AL_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_al_al(void)\r
-{\r
-       uint res = OPER_AL_16();\r
-       uint ea = EA_AL_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_al_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_16();\r
-       uint ea = EA_AL_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_al_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_16();\r
-       uint ea = EA_AL_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_16_al_i(void)\r
-{\r
-       uint res = OPER_I_16();\r
-       uint ea = EA_AL_16();\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 = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_d_d(void)\r
-{\r
-       uint res = DY;\r
-       uint* r_dst = &DX;\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_d_a(void)\r
-{\r
-       uint res = AY;\r
-       uint* r_dst = &DX;\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_d_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_32();\r
-       uint* r_dst = &DX;\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_d_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_32();\r
-       uint* r_dst = &DX;\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_d_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_32();\r
-       uint* r_dst = &DX;\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_d_di(void)\r
-{\r
-       uint res = OPER_AY_DI_32();\r
-       uint* r_dst = &DX;\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_d_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_32();\r
-       uint* r_dst = &DX;\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_d_aw(void)\r
-{\r
-       uint res = OPER_AW_32();\r
-       uint* r_dst = &DX;\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_d_al(void)\r
-{\r
-       uint res = OPER_AL_32();\r
-       uint* r_dst = &DX;\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_d_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_32();\r
-       uint* r_dst = &DX;\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_d_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_32();\r
-       uint* r_dst = &DX;\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_d_i(void)\r
-{\r
-       uint res = OPER_I_32();\r
-       uint* r_dst = &DX;\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ai_d(void)\r
-{\r
-       uint res = DY;\r
-       uint ea = EA_AX_AI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ai_a(void)\r
-{\r
-       uint res = AY;\r
-       uint ea = EA_AX_AI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ai_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_32();\r
-       uint ea = EA_AX_AI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ai_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_32();\r
-       uint ea = EA_AX_AI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ai_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_32();\r
-       uint ea = EA_AX_AI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ai_di(void)\r
-{\r
-       uint res = OPER_AY_DI_32();\r
-       uint ea = EA_AX_AI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ai_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_32();\r
-       uint ea = EA_AX_AI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ai_aw(void)\r
-{\r
-       uint res = OPER_AW_32();\r
-       uint ea = EA_AX_AI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ai_al(void)\r
-{\r
-       uint res = OPER_AL_32();\r
-       uint ea = EA_AX_AI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ai_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_32();\r
-       uint ea = EA_AX_AI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ai_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_32();\r
-       uint ea = EA_AX_AI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ai_i(void)\r
-{\r
-       uint res = OPER_I_32();\r
-       uint ea = EA_AX_AI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pi_d(void)\r
-{\r
-       uint res = DY;\r
-       uint ea = EA_AX_PI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pi_a(void)\r
-{\r
-       uint res = AY;\r
-       uint ea = EA_AX_PI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pi_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_32();\r
-       uint ea = EA_AX_PI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pi_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_32();\r
-       uint ea = EA_AX_PI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pi_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_32();\r
-       uint ea = EA_AX_PI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pi_di(void)\r
-{\r
-       uint res = OPER_AY_DI_32();\r
-       uint ea = EA_AX_PI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pi_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_32();\r
-       uint ea = EA_AX_PI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pi_aw(void)\r
-{\r
-       uint res = OPER_AW_32();\r
-       uint ea = EA_AX_PI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pi_al(void)\r
-{\r
-       uint res = OPER_AL_32();\r
-       uint ea = EA_AX_PI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pi_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_32();\r
-       uint ea = EA_AX_PI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pi_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_32();\r
-       uint ea = EA_AX_PI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pi_i(void)\r
-{\r
-       uint res = OPER_I_32();\r
-       uint ea = EA_AX_PI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pd_d(void)\r
-{\r
-       uint res = DY;\r
-       uint ea = EA_AX_PD_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pd_a(void)\r
-{\r
-       uint res = AY;\r
-       uint ea = EA_AX_PD_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pd_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_32();\r
-       uint ea = EA_AX_PD_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pd_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_32();\r
-       uint ea = EA_AX_PD_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pd_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_32();\r
-       uint ea = EA_AX_PD_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pd_di(void)\r
-{\r
-       uint res = OPER_AY_DI_32();\r
-       uint ea = EA_AX_PD_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pd_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_32();\r
-       uint ea = EA_AX_PD_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pd_aw(void)\r
-{\r
-       uint res = OPER_AW_32();\r
-       uint ea = EA_AX_PD_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pd_al(void)\r
-{\r
-       uint res = OPER_AL_32();\r
-       uint ea = EA_AX_PD_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pd_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_32();\r
-       uint ea = EA_AX_PD_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pd_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_32();\r
-       uint ea = EA_AX_PD_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_pd_i(void)\r
-{\r
-       uint res = OPER_I_32();\r
-       uint ea = EA_AX_PD_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_di_d(void)\r
-{\r
-       uint res = DY;\r
-       uint ea = EA_AX_DI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_di_a(void)\r
-{\r
-       uint res = AY;\r
-       uint ea = EA_AX_DI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_di_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_32();\r
-       uint ea = EA_AX_DI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_di_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_32();\r
-       uint ea = EA_AX_DI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_di_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_32();\r
-       uint ea = EA_AX_DI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_di_di(void)\r
-{\r
-       uint res = OPER_AY_DI_32();\r
-       uint ea = EA_AX_DI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_di_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_32();\r
-       uint ea = EA_AX_DI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_di_aw(void)\r
-{\r
-       uint res = OPER_AW_32();\r
-       uint ea = EA_AX_DI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_di_al(void)\r
-{\r
-       uint res = OPER_AL_32();\r
-       uint ea = EA_AX_DI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_di_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_32();\r
-       uint ea = EA_AX_DI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_di_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_32();\r
-       uint ea = EA_AX_DI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_di_i(void)\r
-{\r
-       uint res = OPER_I_32();\r
-       uint ea = EA_AX_DI_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ix_d(void)\r
-{\r
-       uint res = DY;\r
-       uint ea = EA_AX_IX_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ix_a(void)\r
-{\r
-       uint res = AY;\r
-       uint ea = EA_AX_IX_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ix_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_32();\r
-       uint ea = EA_AX_IX_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ix_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_32();\r
-       uint ea = EA_AX_IX_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ix_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_32();\r
-       uint ea = EA_AX_IX_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ix_di(void)\r
-{\r
-       uint res = OPER_AY_DI_32();\r
-       uint ea = EA_AX_IX_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ix_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_32();\r
-       uint ea = EA_AX_IX_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ix_aw(void)\r
-{\r
-       uint res = OPER_AW_32();\r
-       uint ea = EA_AX_IX_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ix_al(void)\r
-{\r
-       uint res = OPER_AL_32();\r
-       uint ea = EA_AX_IX_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ix_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_32();\r
-       uint ea = EA_AX_IX_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ix_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_32();\r
-       uint ea = EA_AX_IX_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_ix_i(void)\r
-{\r
-       uint res = OPER_I_32();\r
-       uint ea = EA_AX_IX_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_aw_d(void)\r
-{\r
-       uint res = DY;\r
-       uint ea = EA_AW_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_aw_a(void)\r
-{\r
-       uint res = AY;\r
-       uint ea = EA_AW_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_aw_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_32();\r
-       uint ea = EA_AW_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_aw_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_32();\r
-       uint ea = EA_AW_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_aw_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_32();\r
-       uint ea = EA_AW_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_aw_di(void)\r
-{\r
-       uint res = OPER_AY_DI_32();\r
-       uint ea = EA_AW_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_aw_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_32();\r
-       uint ea = EA_AW_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_aw_aw(void)\r
-{\r
-       uint res = OPER_AW_32();\r
-       uint ea = EA_AW_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_aw_al(void)\r
-{\r
-       uint res = OPER_AL_32();\r
-       uint ea = EA_AW_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_aw_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_32();\r
-       uint ea = EA_AW_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_aw_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_32();\r
-       uint ea = EA_AW_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_aw_i(void)\r
-{\r
-       uint res = OPER_I_32();\r
-       uint ea = EA_AW_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_al_d(void)\r
-{\r
-       uint res = DY;\r
-       uint ea = EA_AL_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_al_a(void)\r
-{\r
-       uint res = AY;\r
-       uint ea = EA_AL_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_al_ai(void)\r
-{\r
-       uint res = OPER_AY_AI_32();\r
-       uint ea = EA_AL_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_al_pi(void)\r
-{\r
-       uint res = OPER_AY_PI_32();\r
-       uint ea = EA_AL_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_al_pd(void)\r
-{\r
-       uint res = OPER_AY_PD_32();\r
-       uint ea = EA_AL_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_al_di(void)\r
-{\r
-       uint res = OPER_AY_DI_32();\r
-       uint ea = EA_AL_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_al_ix(void)\r
-{\r
-       uint res = OPER_AY_IX_32();\r
-       uint ea = EA_AL_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_al_aw(void)\r
-{\r
-       uint res = OPER_AW_32();\r
-       uint ea = EA_AL_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_al_al(void)\r
-{\r
-       uint res = OPER_AL_32();\r
-       uint ea = EA_AL_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_al_pcdi(void)\r
-{\r
-       uint res = OPER_PCDI_32();\r
-       uint ea = EA_AL_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_al_pcix(void)\r
-{\r
-       uint res = OPER_PCIX_32();\r
-       uint ea = EA_AL_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move_32_al_i(void)\r
-{\r
-       uint res = OPER_I_32();\r
-       uint ea = EA_AL_32();\r
-\r
-       m68ki_write_32(ea, res);\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_movea_16_d(void)\r
-{\r
-       AX = MAKE_INT_16(DY);\r
-}\r
-\r
-\r
-void m68k_op_movea_16_a(void)\r
-{\r
-       AX = MAKE_INT_16(AY);\r
-}\r
-\r
-\r
-void m68k_op_movea_16_ai(void)\r
-{\r
-       AX = MAKE_INT_16(OPER_AY_AI_16());\r
-}\r
-\r
-\r
-void m68k_op_movea_16_pi(void)\r
-{\r
-       AX = MAKE_INT_16(OPER_AY_PI_16());\r
-}\r
-\r
-\r
-void m68k_op_movea_16_pd(void)\r
-{\r
-       AX = MAKE_INT_16(OPER_AY_PD_16());\r
-}\r
-\r
-\r
-void m68k_op_movea_16_di(void)\r
-{\r
-       AX = MAKE_INT_16(OPER_AY_DI_16());\r
-}\r
-\r
-\r
-void m68k_op_movea_16_ix(void)\r
-{\r
-       AX = MAKE_INT_16(OPER_AY_IX_16());\r
-}\r
-\r
-\r
-void m68k_op_movea_16_aw(void)\r
-{\r
-       AX = MAKE_INT_16(OPER_AW_16());\r
-}\r
-\r
-\r
-void m68k_op_movea_16_al(void)\r
-{\r
-       AX = MAKE_INT_16(OPER_AL_16());\r
-}\r
-\r
-\r
-void m68k_op_movea_16_pcdi(void)\r
-{\r
-       AX = MAKE_INT_16(OPER_PCDI_16());\r
-}\r
-\r
-\r
-void m68k_op_movea_16_pcix(void)\r
-{\r
-       AX = MAKE_INT_16(OPER_PCIX_16());\r
-}\r
-\r
-\r
-void m68k_op_movea_16_i(void)\r
-{\r
-       AX = MAKE_INT_16(OPER_I_16());\r
-}\r
-\r
-\r
-void m68k_op_movea_32_d(void)\r
-{\r
-       AX = DY;\r
-}\r
-\r
-\r
-void m68k_op_movea_32_a(void)\r
-{\r
-       AX = AY;\r
-}\r
-\r
-\r
-void m68k_op_movea_32_ai(void)\r
-{\r
-       AX = OPER_AY_AI_32();\r
-}\r
-\r
-\r
-void m68k_op_movea_32_pi(void)\r
-{\r
-       AX = OPER_AY_PI_32();\r
-}\r
-\r
-\r
-void m68k_op_movea_32_pd(void)\r
-{\r
-       AX = OPER_AY_PD_32();\r
-}\r
-\r
-\r
-void m68k_op_movea_32_di(void)\r
-{\r
-       AX = OPER_AY_DI_32();\r
-}\r
-\r
-\r
-void m68k_op_movea_32_ix(void)\r
-{\r
-       AX = OPER_AY_IX_32();\r
-}\r
-\r
-\r
-void m68k_op_movea_32_aw(void)\r
-{\r
-       AX = OPER_AW_32();\r
-}\r
-\r
-\r
-void m68k_op_movea_32_al(void)\r
-{\r
-       AX = OPER_AL_32();\r
-}\r
-\r
-\r
-void m68k_op_movea_32_pcdi(void)\r
-{\r
-       AX = OPER_PCDI_32();\r
-}\r
-\r
-\r
-void m68k_op_movea_32_pcix(void)\r
-{\r
-       AX = OPER_PCIX_32();\r
-}\r
-\r
-\r
-void m68k_op_movea_32_i(void)\r
-{\r
-       AX = OPER_I_32();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frc_d(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               DY = MASK_OUT_BELOW_16(DY) | m68ki_get_ccr();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frc_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               m68ki_write_16(EA_AY_AI_16(), m68ki_get_ccr());\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frc_pi(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               m68ki_write_16(EA_AY_PI_16(), m68ki_get_ccr());\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frc_pd(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               m68ki_write_16(EA_AY_PD_16(), m68ki_get_ccr());\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frc_di(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               m68ki_write_16(EA_AY_DI_16(), m68ki_get_ccr());\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frc_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               m68ki_write_16(EA_AY_IX_16(), m68ki_get_ccr());\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frc_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               m68ki_write_16(EA_AW_16(), m68ki_get_ccr());\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frc_al(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               m68ki_write_16(EA_AL_16(), m68ki_get_ccr());\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_move_16_toc_d(void)\r
-{\r
-       m68ki_set_ccr(DY);\r
-}\r
-\r
-\r
-void m68k_op_move_16_toc_ai(void)\r
-{\r
-       m68ki_set_ccr(OPER_AY_AI_16());\r
-}\r
-\r
-\r
-void m68k_op_move_16_toc_pi(void)\r
-{\r
-       m68ki_set_ccr(OPER_AY_PI_16());\r
-}\r
-\r
-\r
-void m68k_op_move_16_toc_pd(void)\r
-{\r
-       m68ki_set_ccr(OPER_AY_PD_16());\r
-}\r
-\r
-\r
-void m68k_op_move_16_toc_di(void)\r
-{\r
-       m68ki_set_ccr(OPER_AY_DI_16());\r
-}\r
-\r
-\r
-void m68k_op_move_16_toc_ix(void)\r
-{\r
-       m68ki_set_ccr(OPER_AY_IX_16());\r
-}\r
-\r
-\r
-void m68k_op_move_16_toc_aw(void)\r
-{\r
-       m68ki_set_ccr(OPER_AW_16());\r
-}\r
-\r
-\r
-void m68k_op_move_16_toc_al(void)\r
-{\r
-       m68ki_set_ccr(OPER_AL_16());\r
-}\r
-\r
-\r
-void m68k_op_move_16_toc_pcdi(void)\r
-{\r
-       m68ki_set_ccr(OPER_PCDI_16());\r
-}\r
-\r
-\r
-void m68k_op_move_16_toc_pcix(void)\r
-{\r
-       m68ki_set_ccr(OPER_PCIX_16());\r
-}\r
-\r
-\r
-void m68k_op_move_16_toc_i(void)\r
-{\r
-       m68ki_set_ccr(OPER_I_16());\r
-}\r
-\r
-\r
-void m68k_op_move_16_frs_d(void)\r
-{\r
-       if(CPU_TYPE_IS_000(CPU_TYPE) || FLAG_S) /* NS990408 */\r
-       {\r
-               DY = MASK_OUT_BELOW_16(DY) | m68ki_get_sr();\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frs_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_000(CPU_TYPE) || FLAG_S) /* NS990408 */\r
-       {\r
-               uint ea = EA_AY_AI_16();\r
-               m68ki_write_16(ea, m68ki_get_sr());\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frs_pi(void)\r
-{\r
-       if(CPU_TYPE_IS_000(CPU_TYPE) || FLAG_S) /* NS990408 */\r
-       {\r
-               uint ea = EA_AY_PI_16();\r
-               m68ki_write_16(ea, m68ki_get_sr());\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frs_pd(void)\r
-{\r
-       if(CPU_TYPE_IS_000(CPU_TYPE) || FLAG_S) /* NS990408 */\r
-       {\r
-               uint ea = EA_AY_PD_16();\r
-               m68ki_write_16(ea, m68ki_get_sr());\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frs_di(void)\r
-{\r
-       if(CPU_TYPE_IS_000(CPU_TYPE) || FLAG_S) /* NS990408 */\r
-       {\r
-               uint ea = EA_AY_DI_16();\r
-               m68ki_write_16(ea, m68ki_get_sr());\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frs_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_000(CPU_TYPE) || FLAG_S) /* NS990408 */\r
-       {\r
-               uint ea = EA_AY_IX_16();\r
-               m68ki_write_16(ea, m68ki_get_sr());\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frs_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_000(CPU_TYPE) || FLAG_S) /* NS990408 */\r
-       {\r
-               uint ea = EA_AW_16();\r
-               m68ki_write_16(ea, m68ki_get_sr());\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_frs_al(void)\r
-{\r
-       if(CPU_TYPE_IS_000(CPU_TYPE) || FLAG_S) /* NS990408 */\r
-       {\r
-               uint ea = EA_AL_16();\r
-               m68ki_write_16(ea, m68ki_get_sr());\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_tos_d(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               m68ki_set_sr(DY);\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_tos_ai(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               uint new_sr = OPER_AY_AI_16();\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_set_sr(new_sr);\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_tos_pi(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               uint new_sr = OPER_AY_PI_16();\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_set_sr(new_sr);\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_tos_pd(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               uint new_sr = OPER_AY_PD_16();\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_set_sr(new_sr);\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_tos_di(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               uint new_sr = OPER_AY_DI_16();\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_set_sr(new_sr);\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_tos_ix(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               uint new_sr = OPER_AY_IX_16();\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_set_sr(new_sr);\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_tos_aw(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               uint new_sr = OPER_AW_16();\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_set_sr(new_sr);\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_tos_al(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               uint new_sr = OPER_AL_16();\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_set_sr(new_sr);\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_tos_pcdi(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               uint new_sr = OPER_PCDI_16();\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_set_sr(new_sr);\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_tos_pcix(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               uint new_sr = OPER_PCIX_16();\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_set_sr(new_sr);\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_16_tos_i(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               uint new_sr = OPER_I_16();\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               m68ki_set_sr(new_sr);\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_32_fru(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               AY = REG_USP;\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_move_32_tou(void)\r
-{\r
-       if(FLAG_S)\r
-       {\r
-               m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-               REG_USP = AY;\r
-               return;\r
-       }\r
-       m68ki_exception_privilege_violation();\r
-}\r
-\r
-\r
-void m68k_op_movec_32_cr(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-\r
-                       m68ki_trace_t0();                  /* auto-disable (see m68kcpu.h) */\r
-                       switch (word2 & 0xfff)\r
-                       {\r
-                       case 0x000:                        /* SFC */\r
-                               REG_DA[(word2 >> 12) & 15] = REG_SFC;\r
-                               return;\r
-                       case 0x001:                        /* DFC */\r
-                               REG_DA[(word2 >> 12) & 15] = REG_DFC;\r
-                               return;\r
-                       case 0x002:                        /* CACR */\r
-                               if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-                               {\r
-                                       REG_DA[(word2 >> 12) & 15] = REG_CACR;\r
-                                       return;\r
-                               }\r
-                               return;\r
-                       case 0x800:                        /* USP */\r
-                               REG_DA[(word2 >> 12) & 15] = REG_USP;\r
-                               return;\r
-                       case 0x801:                        /* VBR */\r
-                               REG_DA[(word2 >> 12) & 15] = REG_VBR;\r
-                               return;\r
-                       case 0x802:                        /* CAAR */\r
-                               if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-                               {\r
-                                       REG_DA[(word2 >> 12) & 15] = REG_CAAR;\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               break;\r
-                       case 0x803:                        /* MSP */\r
-                               if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-                               {\r
-                                       REG_DA[(word2 >> 12) & 15] = FLAG_M ? REG_SP : REG_MSP;\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x804:                        /* ISP */\r
-                               if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-                               {\r
-                                       REG_DA[(word2 >> 12) & 15] = FLAG_M ? REG_ISP : REG_SP;\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x003:                             /* TC */\r
-                               if(CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x004:                             /* ITT0 */\r
-                               if(CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x005:                             /* ITT1 */\r
-                               if(CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x006:                             /* DTT0 */\r
-                               if(CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x007:                             /* DTT1 */\r
-                               if(CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x805:                             /* MMUSR */\r
-                               if(CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x806:                             /* URP */\r
-                               if(CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x807:                             /* SRP */\r
-                               if(CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       default:\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       }\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_movec_32_rc(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-\r
-                       m68ki_trace_t0();                  /* auto-disable (see m68kcpu.h) */\r
-                       switch (word2 & 0xfff)\r
-                       {\r
-                       case 0x000:                        /* SFC */\r
-                               REG_SFC = REG_DA[(word2 >> 12) & 15] & 7;\r
-                               return;\r
-                       case 0x001:                        /* DFC */\r
-                               REG_DFC = REG_DA[(word2 >> 12) & 15] & 7;\r
-                               return;\r
-                       case 0x002:                        /* CACR */\r
-                               if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-                               {\r
-                                       REG_CACR = REG_DA[(word2 >> 12) & 15];\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x800:                        /* USP */\r
-                               REG_USP = REG_DA[(word2 >> 12) & 15];\r
-                               return;\r
-                       case 0x801:                        /* VBR */\r
-                               REG_VBR = REG_DA[(word2 >> 12) & 15];\r
-                               return;\r
-                       case 0x802:                        /* CAAR */\r
-                               if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-                               {\r
-                                       REG_CAAR = REG_DA[(word2 >> 12) & 15];\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x803:                        /* MSP */\r
-                               if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* we are in supervisor mode so just check for M flag */\r
-                                       if(!FLAG_M)\r
-                                       {\r
-                                               REG_MSP = REG_DA[(word2 >> 12) & 15];\r
-                                               return;\r
-                                       }\r
-                                       REG_SP = REG_DA[(word2 >> 12) & 15];\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x804:                        /* ISP */\r
-                               if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-                               {\r
-                                       if(!FLAG_M)\r
-                                       {\r
-                                               REG_SP = REG_DA[(word2 >> 12) & 15];\r
-                                               return;\r
-                                       }\r
-                                       REG_ISP = REG_DA[(word2 >> 12) & 15];\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x003:                     /* TC */\r
-                               if (CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x004:                     /* ITT0 */\r
-                               if (CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x005:                     /* ITT1 */\r
-                               if (CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x006:                     /* DTT0 */\r
-                               if (CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x007:                     /* DTT1 */\r
-                               if (CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x805:                     /* MMUSR */\r
-                               if (CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x806:                     /* URP */\r
-                               if (CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       case 0x807:                     /* SRP */\r
-                               if (CPU_TYPE_IS_040_PLUS(CPU_TYPE))\r
-                               {\r
-                                       /* TODO */\r
-                                       return;\r
-                               }\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       default:\r
-                               m68ki_exception_illegal();\r
-                               return;\r
-                       }\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_movem_16_re_pd(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = AY;\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       ea -= 2;\r
-                       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[15-i]));\r
-                       count++;\r
-               }\r
-       AY = ea;\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_16_re_ai(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AY_AI_16();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i]));\r
-                       ea += 2;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_16_re_di(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AY_DI_16();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i]));\r
-                       ea += 2;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_16_re_ix(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AY_IX_16();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i]));\r
-                       ea += 2;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_16_re_aw(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AW_16();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i]));\r
-                       ea += 2;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_16_re_al(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AL_16();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       m68ki_write_16(ea, MASK_OUT_ABOVE_16(REG_DA[i]));\r
-                       ea += 2;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_re_pd(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = AY;\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       ea -= 4;\r
-                       m68ki_write_32(ea, REG_DA[15-i]);\r
-                       count++;\r
-               }\r
-       AY = ea;\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_re_ai(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AY_AI_32();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       m68ki_write_32(ea, REG_DA[i]);\r
-                       ea += 4;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_re_di(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AY_DI_32();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       m68ki_write_32(ea, REG_DA[i]);\r
-                       ea += 4;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_re_ix(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AY_IX_32();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       m68ki_write_32(ea, REG_DA[i]);\r
-                       ea += 4;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_re_aw(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AW_32();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       m68ki_write_32(ea, REG_DA[i]);\r
-                       ea += 4;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_re_al(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AL_32();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       m68ki_write_32(ea, REG_DA[i]);\r
-                       ea += 4;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movem_16_er_pi(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = AY;\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));\r
-                       ea += 2;\r
-                       count++;\r
-               }\r
-       AY = ea;\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_16_er_pcdi(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_PCDI_16();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16(ea)));\r
-                       ea += 2;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_16_er_pcix(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_PCIX_16();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_pcrel_16(ea)));\r
-                       ea += 2;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_16_er_ai(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AY_AI_16();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));\r
-                       ea += 2;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_16_er_di(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AY_DI_16();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));\r
-                       ea += 2;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_16_er_ix(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AY_IX_16();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));\r
-                       ea += 2;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_16_er_aw(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AW_16();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));\r
-                       ea += 2;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_16_er_al(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AL_16();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = MAKE_INT_16(MASK_OUT_ABOVE_16(m68ki_read_16(ea)));\r
-                       ea += 2;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_W);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_er_pi(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = AY;\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = m68ki_read_32(ea);\r
-                       ea += 4;\r
-                       count++;\r
-               }\r
-       AY = ea;\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_er_pcdi(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_PCDI_32();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = m68ki_read_pcrel_32(ea);\r
-                       ea += 4;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_er_pcix(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_PCIX_32();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = m68ki_read_pcrel_32(ea);\r
-                       ea += 4;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_er_ai(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AY_AI_32();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = m68ki_read_32(ea);\r
-                       ea += 4;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_er_di(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AY_DI_32();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = m68ki_read_32(ea);\r
-                       ea += 4;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_er_ix(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AY_IX_32();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = m68ki_read_32(ea);\r
-                       ea += 4;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_er_aw(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AW_32();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = m68ki_read_32(ea);\r
-                       ea += 4;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movem_32_er_al(void)\r
-{\r
-       uint i = 0;\r
-       uint register_list = OPER_I_16();\r
-       uint ea = EA_AL_32();\r
-       uint count = 0;\r
-\r
-       for(; i < 16; i++)\r
-               if(register_list & (1 << i))\r
-               {\r
-                       REG_DA[i] = m68ki_read_32(ea);\r
-                       ea += 4;\r
-                       count++;\r
-               }\r
-\r
-       USE_CYCLES(count<<CYC_MOVEM_L);\r
-}\r
-\r
-\r
-void m68k_op_movep_16_re(void)\r
-{\r
-       uint ea = EA_AY_DI_16();\r
-       uint src = DX;\r
-\r
-       m68ki_write_8(ea, MASK_OUT_ABOVE_8(src >> 8));\r
-       m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src));\r
-}\r
-\r
-\r
-void m68k_op_movep_32_re(void)\r
-{\r
-       uint ea = EA_AY_DI_32();\r
-       uint src = DX;\r
-\r
-       m68ki_write_8(ea, MASK_OUT_ABOVE_8(src >> 24));\r
-       m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src >> 16));\r
-       m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src >> 8));\r
-       m68ki_write_8(ea += 2, MASK_OUT_ABOVE_8(src));\r
-}\r
-\r
-\r
-void m68k_op_movep_16_er(void)\r
-{\r
-       uint ea = EA_AY_DI_16();\r
-       uint* r_dst = &DX;\r
-\r
-       *r_dst = MASK_OUT_BELOW_16(*r_dst) | ((m68ki_read_8(ea) << 8) + m68ki_read_8(ea + 2));\r
-}\r
-\r
-\r
-void m68k_op_movep_32_er(void)\r
-{\r
-       uint ea = EA_AY_DI_32();\r
-\r
-       DX = (m68ki_read_8(ea) << 24) + (m68ki_read_8(ea + 2) << 16)\r
-               + (m68ki_read_8(ea + 4) << 8) + m68ki_read_8(ea + 6);\r
-}\r
-\r
-\r
-void m68k_op_moves_8_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_AI_8();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_8_fc(ea, REG_DFC, MASK_OUT_ABOVE_8(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D[(word2 >> 12) & 7]) | m68ki_read_8_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_8_pi(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_PI_8();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_8_fc(ea, REG_DFC, MASK_OUT_ABOVE_8(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D[(word2 >> 12) & 7]) | m68ki_read_8_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_8_pi7(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_A7_PI_8();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_8_fc(ea, REG_DFC, MASK_OUT_ABOVE_8(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D[(word2 >> 12) & 7]) | m68ki_read_8_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_8_pd(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_PD_8();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_8_fc(ea, REG_DFC, MASK_OUT_ABOVE_8(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D[(word2 >> 12) & 7]) | m68ki_read_8_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_8_pd7(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_A7_PD_8();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_8_fc(ea, REG_DFC, MASK_OUT_ABOVE_8(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D[(word2 >> 12) & 7]) | m68ki_read_8_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_8_di(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_DI_8();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_8_fc(ea, REG_DFC, MASK_OUT_ABOVE_8(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D[(word2 >> 12) & 7]) | m68ki_read_8_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_8_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_IX_8();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_8_fc(ea, REG_DFC, MASK_OUT_ABOVE_8(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D[(word2 >> 12) & 7]) | m68ki_read_8_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_8_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AW_8();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_8_fc(ea, REG_DFC, MASK_OUT_ABOVE_8(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D[(word2 >> 12) & 7]) | m68ki_read_8_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_8_al(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AL_8();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_8_fc(ea, REG_DFC, MASK_OUT_ABOVE_8(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_8(m68ki_read_8_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_8(REG_D[(word2 >> 12) & 7]) | m68ki_read_8_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_16_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_AI_16();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_16_fc(ea, REG_DFC, MASK_OUT_ABOVE_16(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D[(word2 >> 12) & 7]) | m68ki_read_16_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_16_pi(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_PI_16();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_16_fc(ea, REG_DFC, MASK_OUT_ABOVE_16(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D[(word2 >> 12) & 7]) | m68ki_read_16_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_16_pd(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_PD_16();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_16_fc(ea, REG_DFC, MASK_OUT_ABOVE_16(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D[(word2 >> 12) & 7]) | m68ki_read_16_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_16_di(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_DI_16();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_16_fc(ea, REG_DFC, MASK_OUT_ABOVE_16(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D[(word2 >> 12) & 7]) | m68ki_read_16_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_16_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_IX_16();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_16_fc(ea, REG_DFC, MASK_OUT_ABOVE_16(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D[(word2 >> 12) & 7]) | m68ki_read_16_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_16_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AW_16();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_16_fc(ea, REG_DFC, MASK_OUT_ABOVE_16(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D[(word2 >> 12) & 7]) | m68ki_read_16_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_16_al(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AL_16();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_16_fc(ea, REG_DFC, MASK_OUT_ABOVE_16(REG_DA[(word2 >> 12) & 15]));\r
-                               return;\r
-                       }\r
-                       if(BIT_F(word2))                   /* Memory to address register */\r
-                       {\r
-                               REG_A[(word2 >> 12) & 7] = MAKE_INT_16(m68ki_read_16_fc(ea, REG_SFC));\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to data register */\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_BELOW_16(REG_D[(word2 >> 12) & 7]) | m68ki_read_16_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_32_ai(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_AI_32();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_32_fc(ea, REG_DFC, REG_DA[(word2 >> 12) & 15]);\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to register */\r
-                       REG_DA[(word2 >> 12) & 15] = m68ki_read_32_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_32_pi(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_PI_32();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_32_fc(ea, REG_DFC, REG_DA[(word2 >> 12) & 15]);\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to register */\r
-                       REG_DA[(word2 >> 12) & 15] = m68ki_read_32_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_32_pd(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_PD_32();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_32_fc(ea, REG_DFC, REG_DA[(word2 >> 12) & 15]);\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to register */\r
-                       REG_DA[(word2 >> 12) & 15] = m68ki_read_32_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_32_di(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_DI_32();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_32_fc(ea, REG_DFC, REG_DA[(word2 >> 12) & 15]);\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to register */\r
-                       REG_DA[(word2 >> 12) & 15] = m68ki_read_32_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_32_ix(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AY_IX_32();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_32_fc(ea, REG_DFC, REG_DA[(word2 >> 12) & 15]);\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to register */\r
-                       REG_DA[(word2 >> 12) & 15] = m68ki_read_32_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_32_aw(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AW_32();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_32_fc(ea, REG_DFC, REG_DA[(word2 >> 12) & 15]);\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to register */\r
-                       REG_DA[(word2 >> 12) & 15] = m68ki_read_32_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moves_32_al(void)\r
-{\r
-       if(CPU_TYPE_IS_010_PLUS(CPU_TYPE))\r
-       {\r
-               if(FLAG_S)\r
-               {\r
-                       uint word2 = OPER_I_16();\r
-                       uint ea = EA_AL_32();\r
-\r
-                       m68ki_trace_t0();                          /* auto-disable (see m68kcpu.h) */\r
-                       if(BIT_B(word2))                   /* Register to memory */\r
-                       {\r
-                               m68ki_write_32_fc(ea, REG_DFC, REG_DA[(word2 >> 12) & 15]);\r
-                               if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                                       USE_CYCLES(2);\r
-                               return;\r
-                       }\r
-                       /* Memory to register */\r
-                       REG_DA[(word2 >> 12) & 15] = m68ki_read_32_fc(ea, REG_SFC);\r
-                       if(CPU_TYPE_IS_020_VARIANT(CPU_TYPE))\r
-                               USE_CYCLES(2);\r
-                       return;\r
-               }\r
-               m68ki_exception_privilege_violation();\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-}\r
-\r
-\r
-void m68k_op_moveq_32(void)\r
-{\r
-       uint res = DX = MAKE_INT_8(MASK_OUT_ABOVE_8(REG_IR));\r
-\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_Z = res;\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_move16_32(void)\r
-{\r
-       UINT16 w2 = OPER_I_16();\r
-       int ax = REG_IR & 7;\r
-       int ay = (w2 >> 12) & 7;\r
-\r
-       m68ki_write_32(REG_A[ay],    m68ki_read_32(REG_A[ax]));\r
-       m68ki_write_32(REG_A[ay]+4,  m68ki_read_32(REG_A[ax]+4));\r
-       m68ki_write_32(REG_A[ay]+8,  m68ki_read_32(REG_A[ax]+8));\r
-       m68ki_write_32(REG_A[ay]+12, m68ki_read_32(REG_A[ax]+12));\r
-\r
-       REG_A[ax] += 16;\r
-       REG_A[ay] += 16;\r
-}\r
-\r
-\r
-void m68k_op_muls_16_d(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = MASK_OUT_ABOVE_32(MAKE_INT_16(DY) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_muls_16_ai(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_AI_16()) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_muls_16_pi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_PI_16()) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_muls_16_pd(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_PD_16()) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_muls_16_di(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_DI_16()) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_muls_16_ix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AY_IX_16()) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_muls_16_aw(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AW_16()) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_muls_16_al(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_AL_16()) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_muls_16_pcdi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_PCDI_16()) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_muls_16_pcix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_PCIX_16()) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_muls_16_i(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = MASK_OUT_ABOVE_32(MAKE_INT_16(OPER_I_16()) * MAKE_INT_16(MASK_OUT_ABOVE_16(*r_dst)));\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_mulu_16_d(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = MASK_OUT_ABOVE_16(DY) * MASK_OUT_ABOVE_16(*r_dst);\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_mulu_16_ai(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = OPER_AY_AI_16() * MASK_OUT_ABOVE_16(*r_dst);\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_mulu_16_pi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = OPER_AY_PI_16() * MASK_OUT_ABOVE_16(*r_dst);\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_mulu_16_pd(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = OPER_AY_PD_16() * MASK_OUT_ABOVE_16(*r_dst);\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_mulu_16_di(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = OPER_AY_DI_16() * MASK_OUT_ABOVE_16(*r_dst);\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_mulu_16_ix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = OPER_AY_IX_16() * MASK_OUT_ABOVE_16(*r_dst);\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_mulu_16_aw(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = OPER_AW_16() * MASK_OUT_ABOVE_16(*r_dst);\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_mulu_16_al(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = OPER_AL_16() * MASK_OUT_ABOVE_16(*r_dst);\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_mulu_16_pcdi(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = OPER_PCDI_16() * MASK_OUT_ABOVE_16(*r_dst);\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_mulu_16_pcix(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = OPER_PCIX_16() * MASK_OUT_ABOVE_16(*r_dst);\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_mulu_16_i(void)\r
-{\r
-       uint* r_dst = &DX;\r
-       uint res = OPER_I_16() * MASK_OUT_ABOVE_16(*r_dst);\r
-\r
-       *r_dst = res;\r
-\r
-       FLAG_Z = res;\r
-       FLAG_N = NFLAG_32(res);\r
-       FLAG_V = VFLAG_CLEAR;\r
-       FLAG_C = CFLAG_CLEAR;\r
-}\r
-\r
-\r
-void m68k_op_mull_32_d(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 src = DY;\r
-               uint64 dst = REG_D[(word2 >> 12) & 7];\r
-               uint64 res;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       res = (sint64)((sint32)src) * (sint64)((sint32)dst);\r
-                       if(!BIT_A(word2))\r
-                       {\r
-                               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                               FLAG_N = NFLAG_32(res);\r
-                               FLAG_V = ((sint64)res != (sint32)res)<<7;\r
-                               REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                               return;\r
-                       }\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-                       FLAG_N = NFLAG_64(res);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       REG_D[word2 & 7] = (res >> 32);\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-                       return;\r
-               }\r
-\r
-               res = src * dst;\r
-               if(!BIT_A(word2))\r
-               {\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                       FLAG_N = NFLAG_32(res);\r
-                       FLAG_V = (res > 0xffffffff)<<7;\r
-                       REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                       return;\r
-               }\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-               FLAG_N = NFLAG_64(res);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               REG_D[word2 & 7] = (res >> 32);\r
-               REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint src = DY;\r
-               uint dst = REG_D[(word2 >> 12) & 7];\r
-               uint neg = GET_MSB_32(src ^ dst);\r
-               uint src1;\r
-               uint src2;\r
-               uint dst1;\r
-               uint dst2;\r
-               uint r1;\r
-               uint r2;\r
-               uint r3;\r
-               uint r4;\r
-               uint lo;\r
-               uint hi;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       if(GET_MSB_32(src))\r
-                               src = (uint)MASK_OUT_ABOVE_32(-(sint)src);\r
-                       if(GET_MSB_32(dst))\r
-                               dst = (uint)MASK_OUT_ABOVE_32(-(sint)dst);\r
-               }\r
-\r
-               src1 = MASK_OUT_ABOVE_16(src);\r
-               src2 = src>>16;\r
-               dst1 = MASK_OUT_ABOVE_16(dst);\r
-               dst2 = dst>>16;\r
-\r
-\r
-               r1 = src1 * dst1;\r
-               r2 = src1 * dst2;\r
-               r3 = src2 * dst1;\r
-               r4 = src2 * dst2;\r
-\r
-               lo = r1 + (MASK_OUT_ABOVE_16(r2)<<16) + (MASK_OUT_ABOVE_16(r3)<<16);\r
-               hi = r4 + (r2>>16) + (r3>>16) + (((r1>>16) + MASK_OUT_ABOVE_16(r2) + MASK_OUT_ABOVE_16(r3)) >> 16);\r
-\r
-               if(BIT_B(word2) && neg)\r
-               {\r
-                       hi = (uint)MASK_OUT_ABOVE_32((-(sint)hi) - (lo != 0));\r
-                       lo = (uint)MASK_OUT_ABOVE_32(-(sint)lo);\r
-               }\r
-\r
-               if(BIT_A(word2))\r
-               {\r
-                       REG_D[word2 & 7] = hi;\r
-                       REG_D[(word2 >> 12) & 7] = lo;\r
-                       FLAG_N = NFLAG_32(hi);\r
-                       FLAG_Z = hi | lo;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               REG_D[(word2 >> 12) & 7] = lo;\r
-               FLAG_N = NFLAG_32(lo);\r
-               FLAG_Z = lo;\r
-               if(BIT_B(word2))\r
-                       FLAG_V = (!((GET_MSB_32(lo) && hi == 0xffffffff) || (!GET_MSB_32(lo) && !hi)))<<7;\r
-               else\r
-                       FLAG_V = (hi != 0) << 7;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_mull_32_ai(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 src = OPER_AY_AI_32();\r
-               uint64 dst = REG_D[(word2 >> 12) & 7];\r
-               uint64 res;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       res = (sint64)((sint32)src) * (sint64)((sint32)dst);\r
-                       if(!BIT_A(word2))\r
-                       {\r
-                               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                               FLAG_N = NFLAG_32(res);\r
-                               FLAG_V = ((sint64)res != (sint32)res)<<7;\r
-                               REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                               return;\r
-                       }\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-                       FLAG_N = NFLAG_64(res);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       REG_D[word2 & 7] = (res >> 32);\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-                       return;\r
-               }\r
-\r
-               res = src * dst;\r
-               if(!BIT_A(word2))\r
-               {\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                       FLAG_N = NFLAG_32(res);\r
-                       FLAG_V = (res > 0xffffffff)<<7;\r
-                       REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                       return;\r
-               }\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-               FLAG_N = NFLAG_64(res);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               REG_D[word2 & 7] = (res >> 32);\r
-               REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint src = OPER_AY_AI_32();\r
-               uint dst = REG_D[(word2 >> 12) & 7];\r
-               uint neg = GET_MSB_32(src ^ dst);\r
-               uint src1;\r
-               uint src2;\r
-               uint dst1;\r
-               uint dst2;\r
-               uint r1;\r
-               uint r2;\r
-               uint r3;\r
-               uint r4;\r
-               uint lo;\r
-               uint hi;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       if(GET_MSB_32(src))\r
-                               src = (uint)MASK_OUT_ABOVE_32(-(sint)src);\r
-                       if(GET_MSB_32(dst))\r
-                               dst = (uint)MASK_OUT_ABOVE_32(-(sint)dst);\r
-               }\r
-\r
-               src1 = MASK_OUT_ABOVE_16(src);\r
-               src2 = src>>16;\r
-               dst1 = MASK_OUT_ABOVE_16(dst);\r
-               dst2 = dst>>16;\r
-\r
-\r
-               r1 = src1 * dst1;\r
-               r2 = src1 * dst2;\r
-               r3 = src2 * dst1;\r
-               r4 = src2 * dst2;\r
-\r
-               lo = r1 + (MASK_OUT_ABOVE_16(r2)<<16) + (MASK_OUT_ABOVE_16(r3)<<16);\r
-               hi = r4 + (r2>>16) + (r3>>16) + (((r1>>16) + MASK_OUT_ABOVE_16(r2) + MASK_OUT_ABOVE_16(r3)) >> 16);\r
-\r
-               if(BIT_B(word2) && neg)\r
-               {\r
-                       hi = (uint)MASK_OUT_ABOVE_32((-(sint)hi) - (lo != 0));\r
-                       lo = (uint)MASK_OUT_ABOVE_32(-(sint)lo);\r
-               }\r
-\r
-               if(BIT_A(word2))\r
-               {\r
-                       REG_D[word2 & 7] = hi;\r
-                       REG_D[(word2 >> 12) & 7] = lo;\r
-                       FLAG_N = NFLAG_32(hi);\r
-                       FLAG_Z = hi | lo;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               REG_D[(word2 >> 12) & 7] = lo;\r
-               FLAG_N = NFLAG_32(lo);\r
-               FLAG_Z = lo;\r
-               if(BIT_B(word2))\r
-                       FLAG_V = (!((GET_MSB_32(lo) && hi == 0xffffffff) || (!GET_MSB_32(lo) && !hi)))<<7;\r
-               else\r
-                       FLAG_V = (hi != 0) << 7;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_mull_32_pi(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 src = OPER_AY_PI_32();\r
-               uint64 dst = REG_D[(word2 >> 12) & 7];\r
-               uint64 res;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       res = (sint64)((sint32)src) * (sint64)((sint32)dst);\r
-                       if(!BIT_A(word2))\r
-                       {\r
-                               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                               FLAG_N = NFLAG_32(res);\r
-                               FLAG_V = ((sint64)res != (sint32)res)<<7;\r
-                               REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                               return;\r
-                       }\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-                       FLAG_N = NFLAG_64(res);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       REG_D[word2 & 7] = (res >> 32);\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-                       return;\r
-               }\r
-\r
-               res = src * dst;\r
-               if(!BIT_A(word2))\r
-               {\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                       FLAG_N = NFLAG_32(res);\r
-                       FLAG_V = (res > 0xffffffff)<<7;\r
-                       REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                       return;\r
-               }\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-               FLAG_N = NFLAG_64(res);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               REG_D[word2 & 7] = (res >> 32);\r
-               REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint src = OPER_AY_PI_32();\r
-               uint dst = REG_D[(word2 >> 12) & 7];\r
-               uint neg = GET_MSB_32(src ^ dst);\r
-               uint src1;\r
-               uint src2;\r
-               uint dst1;\r
-               uint dst2;\r
-               uint r1;\r
-               uint r2;\r
-               uint r3;\r
-               uint r4;\r
-               uint lo;\r
-               uint hi;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       if(GET_MSB_32(src))\r
-                               src = (uint)MASK_OUT_ABOVE_32(-(sint)src);\r
-                       if(GET_MSB_32(dst))\r
-                               dst = (uint)MASK_OUT_ABOVE_32(-(sint)dst);\r
-               }\r
-\r
-               src1 = MASK_OUT_ABOVE_16(src);\r
-               src2 = src>>16;\r
-               dst1 = MASK_OUT_ABOVE_16(dst);\r
-               dst2 = dst>>16;\r
-\r
-\r
-               r1 = src1 * dst1;\r
-               r2 = src1 * dst2;\r
-               r3 = src2 * dst1;\r
-               r4 = src2 * dst2;\r
-\r
-               lo = r1 + (MASK_OUT_ABOVE_16(r2)<<16) + (MASK_OUT_ABOVE_16(r3)<<16);\r
-               hi = r4 + (r2>>16) + (r3>>16) + (((r1>>16) + MASK_OUT_ABOVE_16(r2) + MASK_OUT_ABOVE_16(r3)) >> 16);\r
-\r
-               if(BIT_B(word2) && neg)\r
-               {\r
-                       hi = (uint)MASK_OUT_ABOVE_32((-(sint)hi) - (lo != 0));\r
-                       lo = (uint)MASK_OUT_ABOVE_32(-(sint)lo);\r
-               }\r
-\r
-               if(BIT_A(word2))\r
-               {\r
-                       REG_D[word2 & 7] = hi;\r
-                       REG_D[(word2 >> 12) & 7] = lo;\r
-                       FLAG_N = NFLAG_32(hi);\r
-                       FLAG_Z = hi | lo;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               REG_D[(word2 >> 12) & 7] = lo;\r
-               FLAG_N = NFLAG_32(lo);\r
-               FLAG_Z = lo;\r
-               if(BIT_B(word2))\r
-                       FLAG_V = (!((GET_MSB_32(lo) && hi == 0xffffffff) || (!GET_MSB_32(lo) && !hi)))<<7;\r
-               else\r
-                       FLAG_V = (hi != 0) << 7;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_mull_32_pd(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 src = OPER_AY_PD_32();\r
-               uint64 dst = REG_D[(word2 >> 12) & 7];\r
-               uint64 res;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       res = (sint64)((sint32)src) * (sint64)((sint32)dst);\r
-                       if(!BIT_A(word2))\r
-                       {\r
-                               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                               FLAG_N = NFLAG_32(res);\r
-                               FLAG_V = ((sint64)res != (sint32)res)<<7;\r
-                               REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                               return;\r
-                       }\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-                       FLAG_N = NFLAG_64(res);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       REG_D[word2 & 7] = (res >> 32);\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-                       return;\r
-               }\r
-\r
-               res = src * dst;\r
-               if(!BIT_A(word2))\r
-               {\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                       FLAG_N = NFLAG_32(res);\r
-                       FLAG_V = (res > 0xffffffff)<<7;\r
-                       REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                       return;\r
-               }\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-               FLAG_N = NFLAG_64(res);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               REG_D[word2 & 7] = (res >> 32);\r
-               REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint src = OPER_AY_PD_32();\r
-               uint dst = REG_D[(word2 >> 12) & 7];\r
-               uint neg = GET_MSB_32(src ^ dst);\r
-               uint src1;\r
-               uint src2;\r
-               uint dst1;\r
-               uint dst2;\r
-               uint r1;\r
-               uint r2;\r
-               uint r3;\r
-               uint r4;\r
-               uint lo;\r
-               uint hi;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       if(GET_MSB_32(src))\r
-                               src = (uint)MASK_OUT_ABOVE_32(-(sint)src);\r
-                       if(GET_MSB_32(dst))\r
-                               dst = (uint)MASK_OUT_ABOVE_32(-(sint)dst);\r
-               }\r
-\r
-               src1 = MASK_OUT_ABOVE_16(src);\r
-               src2 = src>>16;\r
-               dst1 = MASK_OUT_ABOVE_16(dst);\r
-               dst2 = dst>>16;\r
-\r
-\r
-               r1 = src1 * dst1;\r
-               r2 = src1 * dst2;\r
-               r3 = src2 * dst1;\r
-               r4 = src2 * dst2;\r
-\r
-               lo = r1 + (MASK_OUT_ABOVE_16(r2)<<16) + (MASK_OUT_ABOVE_16(r3)<<16);\r
-               hi = r4 + (r2>>16) + (r3>>16) + (((r1>>16) + MASK_OUT_ABOVE_16(r2) + MASK_OUT_ABOVE_16(r3)) >> 16);\r
-\r
-               if(BIT_B(word2) && neg)\r
-               {\r
-                       hi = (uint)MASK_OUT_ABOVE_32((-(sint)hi) - (lo != 0));\r
-                       lo = (uint)MASK_OUT_ABOVE_32(-(sint)lo);\r
-               }\r
-\r
-               if(BIT_A(word2))\r
-               {\r
-                       REG_D[word2 & 7] = hi;\r
-                       REG_D[(word2 >> 12) & 7] = lo;\r
-                       FLAG_N = NFLAG_32(hi);\r
-                       FLAG_Z = hi | lo;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               REG_D[(word2 >> 12) & 7] = lo;\r
-               FLAG_N = NFLAG_32(lo);\r
-               FLAG_Z = lo;\r
-               if(BIT_B(word2))\r
-                       FLAG_V = (!((GET_MSB_32(lo) && hi == 0xffffffff) || (!GET_MSB_32(lo) && !hi)))<<7;\r
-               else\r
-                       FLAG_V = (hi != 0) << 7;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_mull_32_di(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 src = OPER_AY_DI_32();\r
-               uint64 dst = REG_D[(word2 >> 12) & 7];\r
-               uint64 res;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       res = (sint64)((sint32)src) * (sint64)((sint32)dst);\r
-                       if(!BIT_A(word2))\r
-                       {\r
-                               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                               FLAG_N = NFLAG_32(res);\r
-                               FLAG_V = ((sint64)res != (sint32)res)<<7;\r
-                               REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                               return;\r
-                       }\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-                       FLAG_N = NFLAG_64(res);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       REG_D[word2 & 7] = (res >> 32);\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-                       return;\r
-               }\r
-\r
-               res = src * dst;\r
-               if(!BIT_A(word2))\r
-               {\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                       FLAG_N = NFLAG_32(res);\r
-                       FLAG_V = (res > 0xffffffff)<<7;\r
-                       REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                       return;\r
-               }\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-               FLAG_N = NFLAG_64(res);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               REG_D[word2 & 7] = (res >> 32);\r
-               REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint src = OPER_AY_DI_32();\r
-               uint dst = REG_D[(word2 >> 12) & 7];\r
-               uint neg = GET_MSB_32(src ^ dst);\r
-               uint src1;\r
-               uint src2;\r
-               uint dst1;\r
-               uint dst2;\r
-               uint r1;\r
-               uint r2;\r
-               uint r3;\r
-               uint r4;\r
-               uint lo;\r
-               uint hi;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       if(GET_MSB_32(src))\r
-                               src = (uint)MASK_OUT_ABOVE_32(-(sint)src);\r
-                       if(GET_MSB_32(dst))\r
-                               dst = (uint)MASK_OUT_ABOVE_32(-(sint)dst);\r
-               }\r
-\r
-               src1 = MASK_OUT_ABOVE_16(src);\r
-               src2 = src>>16;\r
-               dst1 = MASK_OUT_ABOVE_16(dst);\r
-               dst2 = dst>>16;\r
-\r
-\r
-               r1 = src1 * dst1;\r
-               r2 = src1 * dst2;\r
-               r3 = src2 * dst1;\r
-               r4 = src2 * dst2;\r
-\r
-               lo = r1 + (MASK_OUT_ABOVE_16(r2)<<16) + (MASK_OUT_ABOVE_16(r3)<<16);\r
-               hi = r4 + (r2>>16) + (r3>>16) + (((r1>>16) + MASK_OUT_ABOVE_16(r2) + MASK_OUT_ABOVE_16(r3)) >> 16);\r
-\r
-               if(BIT_B(word2) && neg)\r
-               {\r
-                       hi = (uint)MASK_OUT_ABOVE_32((-(sint)hi) - (lo != 0));\r
-                       lo = (uint)MASK_OUT_ABOVE_32(-(sint)lo);\r
-               }\r
-\r
-               if(BIT_A(word2))\r
-               {\r
-                       REG_D[word2 & 7] = hi;\r
-                       REG_D[(word2 >> 12) & 7] = lo;\r
-                       FLAG_N = NFLAG_32(hi);\r
-                       FLAG_Z = hi | lo;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               REG_D[(word2 >> 12) & 7] = lo;\r
-               FLAG_N = NFLAG_32(lo);\r
-               FLAG_Z = lo;\r
-               if(BIT_B(word2))\r
-                       FLAG_V = (!((GET_MSB_32(lo) && hi == 0xffffffff) || (!GET_MSB_32(lo) && !hi)))<<7;\r
-               else\r
-                       FLAG_V = (hi != 0) << 7;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_mull_32_ix(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 src = OPER_AY_IX_32();\r
-               uint64 dst = REG_D[(word2 >> 12) & 7];\r
-               uint64 res;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       res = (sint64)((sint32)src) * (sint64)((sint32)dst);\r
-                       if(!BIT_A(word2))\r
-                       {\r
-                               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                               FLAG_N = NFLAG_32(res);\r
-                               FLAG_V = ((sint64)res != (sint32)res)<<7;\r
-                               REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                               return;\r
-                       }\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-                       FLAG_N = NFLAG_64(res);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       REG_D[word2 & 7] = (res >> 32);\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-                       return;\r
-               }\r
-\r
-               res = src * dst;\r
-               if(!BIT_A(word2))\r
-               {\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                       FLAG_N = NFLAG_32(res);\r
-                       FLAG_V = (res > 0xffffffff)<<7;\r
-                       REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                       return;\r
-               }\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-               FLAG_N = NFLAG_64(res);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               REG_D[word2 & 7] = (res >> 32);\r
-               REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint src = OPER_AY_IX_32();\r
-               uint dst = REG_D[(word2 >> 12) & 7];\r
-               uint neg = GET_MSB_32(src ^ dst);\r
-               uint src1;\r
-               uint src2;\r
-               uint dst1;\r
-               uint dst2;\r
-               uint r1;\r
-               uint r2;\r
-               uint r3;\r
-               uint r4;\r
-               uint lo;\r
-               uint hi;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       if(GET_MSB_32(src))\r
-                               src = (uint)MASK_OUT_ABOVE_32(-(sint)src);\r
-                       if(GET_MSB_32(dst))\r
-                               dst = (uint)MASK_OUT_ABOVE_32(-(sint)dst);\r
-               }\r
-\r
-               src1 = MASK_OUT_ABOVE_16(src);\r
-               src2 = src>>16;\r
-               dst1 = MASK_OUT_ABOVE_16(dst);\r
-               dst2 = dst>>16;\r
-\r
-\r
-               r1 = src1 * dst1;\r
-               r2 = src1 * dst2;\r
-               r3 = src2 * dst1;\r
-               r4 = src2 * dst2;\r
-\r
-               lo = r1 + (MASK_OUT_ABOVE_16(r2)<<16) + (MASK_OUT_ABOVE_16(r3)<<16);\r
-               hi = r4 + (r2>>16) + (r3>>16) + (((r1>>16) + MASK_OUT_ABOVE_16(r2) + MASK_OUT_ABOVE_16(r3)) >> 16);\r
-\r
-               if(BIT_B(word2) && neg)\r
-               {\r
-                       hi = (uint)MASK_OUT_ABOVE_32((-(sint)hi) - (lo != 0));\r
-                       lo = (uint)MASK_OUT_ABOVE_32(-(sint)lo);\r
-               }\r
-\r
-               if(BIT_A(word2))\r
-               {\r
-                       REG_D[word2 & 7] = hi;\r
-                       REG_D[(word2 >> 12) & 7] = lo;\r
-                       FLAG_N = NFLAG_32(hi);\r
-                       FLAG_Z = hi | lo;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               REG_D[(word2 >> 12) & 7] = lo;\r
-               FLAG_N = NFLAG_32(lo);\r
-               FLAG_Z = lo;\r
-               if(BIT_B(word2))\r
-                       FLAG_V = (!((GET_MSB_32(lo) && hi == 0xffffffff) || (!GET_MSB_32(lo) && !hi)))<<7;\r
-               else\r
-                       FLAG_V = (hi != 0) << 7;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_mull_32_aw(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 src = OPER_AW_32();\r
-               uint64 dst = REG_D[(word2 >> 12) & 7];\r
-               uint64 res;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       res = (sint64)((sint32)src) * (sint64)((sint32)dst);\r
-                       if(!BIT_A(word2))\r
-                       {\r
-                               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                               FLAG_N = NFLAG_32(res);\r
-                               FLAG_V = ((sint64)res != (sint32)res)<<7;\r
-                               REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                               return;\r
-                       }\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-                       FLAG_N = NFLAG_64(res);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       REG_D[word2 & 7] = (res >> 32);\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-                       return;\r
-               }\r
-\r
-               res = src * dst;\r
-               if(!BIT_A(word2))\r
-               {\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                       FLAG_N = NFLAG_32(res);\r
-                       FLAG_V = (res > 0xffffffff)<<7;\r
-                       REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                       return;\r
-               }\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-               FLAG_N = NFLAG_64(res);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               REG_D[word2 & 7] = (res >> 32);\r
-               REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint src = OPER_AW_32();\r
-               uint dst = REG_D[(word2 >> 12) & 7];\r
-               uint neg = GET_MSB_32(src ^ dst);\r
-               uint src1;\r
-               uint src2;\r
-               uint dst1;\r
-               uint dst2;\r
-               uint r1;\r
-               uint r2;\r
-               uint r3;\r
-               uint r4;\r
-               uint lo;\r
-               uint hi;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       if(GET_MSB_32(src))\r
-                               src = (uint)MASK_OUT_ABOVE_32(-(sint)src);\r
-                       if(GET_MSB_32(dst))\r
-                               dst = (uint)MASK_OUT_ABOVE_32(-(sint)dst);\r
-               }\r
-\r
-               src1 = MASK_OUT_ABOVE_16(src);\r
-               src2 = src>>16;\r
-               dst1 = MASK_OUT_ABOVE_16(dst);\r
-               dst2 = dst>>16;\r
-\r
-\r
-               r1 = src1 * dst1;\r
-               r2 = src1 * dst2;\r
-               r3 = src2 * dst1;\r
-               r4 = src2 * dst2;\r
-\r
-               lo = r1 + (MASK_OUT_ABOVE_16(r2)<<16) + (MASK_OUT_ABOVE_16(r3)<<16);\r
-               hi = r4 + (r2>>16) + (r3>>16) + (((r1>>16) + MASK_OUT_ABOVE_16(r2) + MASK_OUT_ABOVE_16(r3)) >> 16);\r
-\r
-               if(BIT_B(word2) && neg)\r
-               {\r
-                       hi = (uint)MASK_OUT_ABOVE_32((-(sint)hi) - (lo != 0));\r
-                       lo = (uint)MASK_OUT_ABOVE_32(-(sint)lo);\r
-               }\r
-\r
-               if(BIT_A(word2))\r
-               {\r
-                       REG_D[word2 & 7] = hi;\r
-                       REG_D[(word2 >> 12) & 7] = lo;\r
-                       FLAG_N = NFLAG_32(hi);\r
-                       FLAG_Z = hi | lo;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               REG_D[(word2 >> 12) & 7] = lo;\r
-               FLAG_N = NFLAG_32(lo);\r
-               FLAG_Z = lo;\r
-               if(BIT_B(word2))\r
-                       FLAG_V = (!((GET_MSB_32(lo) && hi == 0xffffffff) || (!GET_MSB_32(lo) && !hi)))<<7;\r
-               else\r
-                       FLAG_V = (hi != 0) << 7;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_mull_32_al(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 src = OPER_AL_32();\r
-               uint64 dst = REG_D[(word2 >> 12) & 7];\r
-               uint64 res;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       res = (sint64)((sint32)src) * (sint64)((sint32)dst);\r
-                       if(!BIT_A(word2))\r
-                       {\r
-                               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                               FLAG_N = NFLAG_32(res);\r
-                               FLAG_V = ((sint64)res != (sint32)res)<<7;\r
-                               REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                               return;\r
-                       }\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-                       FLAG_N = NFLAG_64(res);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       REG_D[word2 & 7] = (res >> 32);\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-                       return;\r
-               }\r
-\r
-               res = src * dst;\r
-               if(!BIT_A(word2))\r
-               {\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                       FLAG_N = NFLAG_32(res);\r
-                       FLAG_V = (res > 0xffffffff)<<7;\r
-                       REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                       return;\r
-               }\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-               FLAG_N = NFLAG_64(res);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               REG_D[word2 & 7] = (res >> 32);\r
-               REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint src = OPER_AL_32();\r
-               uint dst = REG_D[(word2 >> 12) & 7];\r
-               uint neg = GET_MSB_32(src ^ dst);\r
-               uint src1;\r
-               uint src2;\r
-               uint dst1;\r
-               uint dst2;\r
-               uint r1;\r
-               uint r2;\r
-               uint r3;\r
-               uint r4;\r
-               uint lo;\r
-               uint hi;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       if(GET_MSB_32(src))\r
-                               src = (uint)MASK_OUT_ABOVE_32(-(sint)src);\r
-                       if(GET_MSB_32(dst))\r
-                               dst = (uint)MASK_OUT_ABOVE_32(-(sint)dst);\r
-               }\r
-\r
-               src1 = MASK_OUT_ABOVE_16(src);\r
-               src2 = src>>16;\r
-               dst1 = MASK_OUT_ABOVE_16(dst);\r
-               dst2 = dst>>16;\r
-\r
-\r
-               r1 = src1 * dst1;\r
-               r2 = src1 * dst2;\r
-               r3 = src2 * dst1;\r
-               r4 = src2 * dst2;\r
-\r
-               lo = r1 + (MASK_OUT_ABOVE_16(r2)<<16) + (MASK_OUT_ABOVE_16(r3)<<16);\r
-               hi = r4 + (r2>>16) + (r3>>16) + (((r1>>16) + MASK_OUT_ABOVE_16(r2) + MASK_OUT_ABOVE_16(r3)) >> 16);\r
-\r
-               if(BIT_B(word2) && neg)\r
-               {\r
-                       hi = (uint)MASK_OUT_ABOVE_32((-(sint)hi) - (lo != 0));\r
-                       lo = (uint)MASK_OUT_ABOVE_32(-(sint)lo);\r
-               }\r
-\r
-               if(BIT_A(word2))\r
-               {\r
-                       REG_D[word2 & 7] = hi;\r
-                       REG_D[(word2 >> 12) & 7] = lo;\r
-                       FLAG_N = NFLAG_32(hi);\r
-                       FLAG_Z = hi | lo;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               REG_D[(word2 >> 12) & 7] = lo;\r
-               FLAG_N = NFLAG_32(lo);\r
-               FLAG_Z = lo;\r
-               if(BIT_B(word2))\r
-                       FLAG_V = (!((GET_MSB_32(lo) && hi == 0xffffffff) || (!GET_MSB_32(lo) && !hi)))<<7;\r
-               else\r
-                       FLAG_V = (hi != 0) << 7;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_mull_32_pcdi(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 src = OPER_PCDI_32();\r
-               uint64 dst = REG_D[(word2 >> 12) & 7];\r
-               uint64 res;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       res = (sint64)((sint32)src) * (sint64)((sint32)dst);\r
-                       if(!BIT_A(word2))\r
-                       {\r
-                               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                               FLAG_N = NFLAG_32(res);\r
-                               FLAG_V = ((sint64)res != (sint32)res)<<7;\r
-                               REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                               return;\r
-                       }\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-                       FLAG_N = NFLAG_64(res);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       REG_D[word2 & 7] = (res >> 32);\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-                       return;\r
-               }\r
-\r
-               res = src * dst;\r
-               if(!BIT_A(word2))\r
-               {\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                       FLAG_N = NFLAG_32(res);\r
-                       FLAG_V = (res > 0xffffffff)<<7;\r
-                       REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                       return;\r
-               }\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-               FLAG_N = NFLAG_64(res);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               REG_D[word2 & 7] = (res >> 32);\r
-               REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint src = OPER_PCDI_32();\r
-               uint dst = REG_D[(word2 >> 12) & 7];\r
-               uint neg = GET_MSB_32(src ^ dst);\r
-               uint src1;\r
-               uint src2;\r
-               uint dst1;\r
-               uint dst2;\r
-               uint r1;\r
-               uint r2;\r
-               uint r3;\r
-               uint r4;\r
-               uint lo;\r
-               uint hi;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       if(GET_MSB_32(src))\r
-                               src = (uint)MASK_OUT_ABOVE_32(-(sint)src);\r
-                       if(GET_MSB_32(dst))\r
-                               dst = (uint)MASK_OUT_ABOVE_32(-(sint)dst);\r
-               }\r
-\r
-               src1 = MASK_OUT_ABOVE_16(src);\r
-               src2 = src>>16;\r
-               dst1 = MASK_OUT_ABOVE_16(dst);\r
-               dst2 = dst>>16;\r
-\r
-\r
-               r1 = src1 * dst1;\r
-               r2 = src1 * dst2;\r
-               r3 = src2 * dst1;\r
-               r4 = src2 * dst2;\r
-\r
-               lo = r1 + (MASK_OUT_ABOVE_16(r2)<<16) + (MASK_OUT_ABOVE_16(r3)<<16);\r
-               hi = r4 + (r2>>16) + (r3>>16) + (((r1>>16) + MASK_OUT_ABOVE_16(r2) + MASK_OUT_ABOVE_16(r3)) >> 16);\r
-\r
-               if(BIT_B(word2) && neg)\r
-               {\r
-                       hi = (uint)MASK_OUT_ABOVE_32((-(sint)hi) - (lo != 0));\r
-                       lo = (uint)MASK_OUT_ABOVE_32(-(sint)lo);\r
-               }\r
-\r
-               if(BIT_A(word2))\r
-               {\r
-                       REG_D[word2 & 7] = hi;\r
-                       REG_D[(word2 >> 12) & 7] = lo;\r
-                       FLAG_N = NFLAG_32(hi);\r
-                       FLAG_Z = hi | lo;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               REG_D[(word2 >> 12) & 7] = lo;\r
-               FLAG_N = NFLAG_32(lo);\r
-               FLAG_Z = lo;\r
-               if(BIT_B(word2))\r
-                       FLAG_V = (!((GET_MSB_32(lo) && hi == 0xffffffff) || (!GET_MSB_32(lo) && !hi)))<<7;\r
-               else\r
-                       FLAG_V = (hi != 0) << 7;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_mull_32_pcix(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 src = OPER_PCIX_32();\r
-               uint64 dst = REG_D[(word2 >> 12) & 7];\r
-               uint64 res;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       res = (sint64)((sint32)src) * (sint64)((sint32)dst);\r
-                       if(!BIT_A(word2))\r
-                       {\r
-                               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                               FLAG_N = NFLAG_32(res);\r
-                               FLAG_V = ((sint64)res != (sint32)res)<<7;\r
-                               REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                               return;\r
-                       }\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-                       FLAG_N = NFLAG_64(res);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       REG_D[word2 & 7] = (res >> 32);\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-                       return;\r
-               }\r
-\r
-               res = src * dst;\r
-               if(!BIT_A(word2))\r
-               {\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                       FLAG_N = NFLAG_32(res);\r
-                       FLAG_V = (res > 0xffffffff)<<7;\r
-                       REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                       return;\r
-               }\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-               FLAG_N = NFLAG_64(res);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               REG_D[word2 & 7] = (res >> 32);\r
-               REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint src = OPER_PCIX_32();\r
-               uint dst = REG_D[(word2 >> 12) & 7];\r
-               uint neg = GET_MSB_32(src ^ dst);\r
-               uint src1;\r
-               uint src2;\r
-               uint dst1;\r
-               uint dst2;\r
-               uint r1;\r
-               uint r2;\r
-               uint r3;\r
-               uint r4;\r
-               uint lo;\r
-               uint hi;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       if(GET_MSB_32(src))\r
-                               src = (uint)MASK_OUT_ABOVE_32(-(sint)src);\r
-                       if(GET_MSB_32(dst))\r
-                               dst = (uint)MASK_OUT_ABOVE_32(-(sint)dst);\r
-               }\r
-\r
-               src1 = MASK_OUT_ABOVE_16(src);\r
-               src2 = src>>16;\r
-               dst1 = MASK_OUT_ABOVE_16(dst);\r
-               dst2 = dst>>16;\r
-\r
-\r
-               r1 = src1 * dst1;\r
-               r2 = src1 * dst2;\r
-               r3 = src2 * dst1;\r
-               r4 = src2 * dst2;\r
-\r
-               lo = r1 + (MASK_OUT_ABOVE_16(r2)<<16) + (MASK_OUT_ABOVE_16(r3)<<16);\r
-               hi = r4 + (r2>>16) + (r3>>16) + (((r1>>16) + MASK_OUT_ABOVE_16(r2) + MASK_OUT_ABOVE_16(r3)) >> 16);\r
-\r
-               if(BIT_B(word2) && neg)\r
-               {\r
-                       hi = (uint)MASK_OUT_ABOVE_32((-(sint)hi) - (lo != 0));\r
-                       lo = (uint)MASK_OUT_ABOVE_32(-(sint)lo);\r
-               }\r
-\r
-               if(BIT_A(word2))\r
-               {\r
-                       REG_D[word2 & 7] = hi;\r
-                       REG_D[(word2 >> 12) & 7] = lo;\r
-                       FLAG_N = NFLAG_32(hi);\r
-                       FLAG_Z = hi | lo;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               REG_D[(word2 >> 12) & 7] = lo;\r
-               FLAG_N = NFLAG_32(lo);\r
-               FLAG_Z = lo;\r
-               if(BIT_B(word2))\r
-                       FLAG_V = (!((GET_MSB_32(lo) && hi == 0xffffffff) || (!GET_MSB_32(lo) && !hi)))<<7;\r
-               else\r
-                       FLAG_V = (hi != 0) << 7;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-void m68k_op_mull_32_i(void)\r
-{\r
-#if M68K_USE_64_BIT\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint64 src = OPER_I_32();\r
-               uint64 dst = REG_D[(word2 >> 12) & 7];\r
-               uint64 res;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       res = (sint64)((sint32)src) * (sint64)((sint32)dst);\r
-                       if(!BIT_A(word2))\r
-                       {\r
-                               FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                               FLAG_N = NFLAG_32(res);\r
-                               FLAG_V = ((sint64)res != (sint32)res)<<7;\r
-                               REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                               return;\r
-                       }\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-                       FLAG_N = NFLAG_64(res);\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       REG_D[word2 & 7] = (res >> 32);\r
-                       REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-                       return;\r
-               }\r
-\r
-               res = src * dst;\r
-               if(!BIT_A(word2))\r
-               {\r
-                       FLAG_Z = MASK_OUT_ABOVE_32(res);\r
-                       FLAG_N = NFLAG_32(res);\r
-                       FLAG_V = (res > 0xffffffff)<<7;\r
-                       REG_D[(word2 >> 12) & 7] = FLAG_Z;\r
-                       return;\r
-               }\r
-               FLAG_Z = MASK_OUT_ABOVE_32(res) | (res>>32);\r
-               FLAG_N = NFLAG_64(res);\r
-               FLAG_V = VFLAG_CLEAR;\r
-               REG_D[word2 & 7] = (res >> 32);\r
-               REG_D[(word2 >> 12) & 7] = MASK_OUT_ABOVE_32(res);\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#else\r
-\r
-       if(CPU_TYPE_IS_EC020_PLUS(CPU_TYPE))\r
-       {\r
-               uint word2 = OPER_I_16();\r
-               uint src = OPER_I_32();\r
-               uint dst = REG_D[(word2 >> 12) & 7];\r
-               uint neg = GET_MSB_32(src ^ dst);\r
-               uint src1;\r
-               uint src2;\r
-               uint dst1;\r
-               uint dst2;\r
-               uint r1;\r
-               uint r2;\r
-               uint r3;\r
-               uint r4;\r
-               uint lo;\r
-               uint hi;\r
-\r
-               FLAG_C = CFLAG_CLEAR;\r
-\r
-               if(BIT_B(word2))                           /* signed */\r
-               {\r
-                       if(GET_MSB_32(src))\r
-                               src = (uint)MASK_OUT_ABOVE_32(-(sint)src);\r
-                       if(GET_MSB_32(dst))\r
-                               dst = (uint)MASK_OUT_ABOVE_32(-(sint)dst);\r
-               }\r
-\r
-               src1 = MASK_OUT_ABOVE_16(src);\r
-               src2 = src>>16;\r
-               dst1 = MASK_OUT_ABOVE_16(dst);\r
-               dst2 = dst>>16;\r
-\r
-\r
-               r1 = src1 * dst1;\r
-               r2 = src1 * dst2;\r
-               r3 = src2 * dst1;\r
-               r4 = src2 * dst2;\r
-\r
-               lo = r1 + (MASK_OUT_ABOVE_16(r2)<<16) + (MASK_OUT_ABOVE_16(r3)<<16);\r
-               hi = r4 + (r2>>16) + (r3>>16) + (((r1>>16) + MASK_OUT_ABOVE_16(r2) + MASK_OUT_ABOVE_16(r3)) >> 16);\r
-\r
-               if(BIT_B(word2) && neg)\r
-               {\r
-                       hi = (uint)MASK_OUT_ABOVE_32((-(sint)hi) - (lo != 0));\r
-                       lo = (uint)MASK_OUT_ABOVE_32(-(sint)lo);\r
-               }\r
-\r
-               if(BIT_A(word2))\r
-               {\r
-                       REG_D[word2 & 7] = hi;\r
-                       REG_D[(word2 >> 12) & 7] = lo;\r
-                       FLAG_N = NFLAG_32(hi);\r
-                       FLAG_Z = hi | lo;\r
-                       FLAG_V = VFLAG_CLEAR;\r
-                       return;\r
-               }\r
-\r
-               REG_D[(word2 >> 12) & 7] = lo;\r
-               FLAG_N = NFLAG_32(lo);\r
-               FLAG_Z = lo;\r
-               if(BIT_B(word2))\r
-                       FLAG_V = (!((GET_MSB_32(lo) && hi == 0xffffffff) || (!GET_MSB_32(lo) && !hi)))<<7;\r
-               else\r
-                       FLAG_V = (hi != 0) << 7;\r
-               return;\r
-       }\r
-       m68ki_exception_illegal();\r
-\r
-#endif\r
-}\r
-\r
-\r
-/* ======================================================================== */\r
-/* ============================== END OF FILE ============================= */\r
-/* ======================================================================== */\r
-\r
-\r