X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=cpu%2Ffame%2Ffamec_opcodes.h;h=03a64de5f3bd3941d93a6f6303cb3996ccba540e;hb=b5e5172d049a83251874fb33e65a53c9654dc0bc;hp=a9cc991715eac042ee956723e4aed2b3b01fd522;hpb=70357ce52578dee0dd3b3663902cf872c3d34258;p=picodrive.git diff --git a/cpu/fame/famec_opcodes.h b/cpu/fame/famec_opcodes.h index a9cc991..03a64de 100644 --- a/cpu/fame/famec_opcodes.h +++ b/cpu/fame/famec_opcodes.h @@ -638,9 +638,7 @@ OPCODE(0x007C) } else { - u32 newPC = (u32)(PC) - BasePC; - SET_PC(newPC-2); - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); #ifdef USE_CYCLONE_TIMING RET(0) #else @@ -1298,9 +1296,7 @@ OPCODE(0x027C) } else { - u32 newPC = (u32)(PC) - BasePC; - SET_PC(newPC-2); - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(20) @@ -1950,10 +1946,8 @@ OPCODE(0x0A7C) } else { - u32 newPC = (u32)(PC) - BasePC; - SET_PC(newPC-2); - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); - RET(4) + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); + RET(0) } RET(20) } @@ -5213,7 +5207,11 @@ OPCODE(0x0108) READ_BYTE_F(adr + 2, src) DREGu16((Opcode >> 9) & 7) = (res << 8) | src; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(16) +#else RET(24) +#endif } // MOVEPLaD @@ -5237,7 +5235,11 @@ OPCODE(0x0148) READ_BYTE_F(adr, src) DREG((Opcode >> 9) & 7) = res | src; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(24) +#else RET(32) +#endif } // MOVEPWDa @@ -5253,7 +5255,11 @@ OPCODE(0x0188) WRITE_BYTE_F(adr + 0, res >> 8) WRITE_BYTE_F(adr + 2, res >> 0) POST_IO +#ifdef USE_CYCLONE_TIMING +RET(16) +#else RET(24) +#endif } // MOVEPLDa @@ -5274,7 +5280,11 @@ OPCODE(0x01C8) adr += 2; WRITE_BYTE_F(adr, res >> 0) POST_IO +#ifdef USE_CYCLONE_TIMING +RET(24) +#else RET(32) +#endif } // MOVEB @@ -5460,6 +5470,7 @@ OPCODE(0x1F00) RET(8) } +#if 0 // MOVEB OPCODE(0x1008) { @@ -5692,6 +5703,7 @@ OPCODE(0x1F08) */ RET(8) } +#endif // MOVEB OPCODE(0x1010) @@ -8167,7 +8179,7 @@ OPCODE(0x2100) adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; PRE_IO - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(12) } @@ -8279,7 +8291,7 @@ OPCODE(0x2F00) adr = AREG(7) - 4; AREG(7) = adr; PRE_IO - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(12) } @@ -8350,7 +8362,7 @@ OPCODE(0x2108) adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; PRE_IO - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(12) } @@ -8462,7 +8474,7 @@ OPCODE(0x2F08) adr = AREG(7) - 4; AREG(7) = adr; PRE_IO - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(12) } @@ -8539,7 +8551,7 @@ OPCODE(0x2110) flag_N = res >> 24; adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(20) } @@ -8657,7 +8669,7 @@ OPCODE(0x2F10) flag_N = res >> 24; adr = AREG(7) - 4; AREG(7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(20) } @@ -8738,7 +8750,7 @@ OPCODE(0x2118) flag_N = res >> 24; adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(20) } @@ -8862,7 +8874,7 @@ OPCODE(0x2F18) flag_N = res >> 24; adr = AREG(7) - 4; AREG(7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(20) } @@ -8943,7 +8955,7 @@ OPCODE(0x2120) flag_N = res >> 24; adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(22) } @@ -9067,7 +9079,7 @@ OPCODE(0x2F20) flag_N = res >> 24; adr = AREG(7) - 4; AREG(7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(22) } @@ -9148,7 +9160,7 @@ OPCODE(0x2128) flag_N = res >> 24; adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(24) } @@ -9272,7 +9284,7 @@ OPCODE(0x2F28) flag_N = res >> 24; adr = AREG(7) - 4; AREG(7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(24) } @@ -9353,7 +9365,7 @@ OPCODE(0x2130) flag_N = res >> 24; adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(26) } @@ -9477,7 +9489,7 @@ OPCODE(0x2F30) flag_N = res >> 24; adr = AREG(7) - 4; AREG(7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(26) } @@ -9554,7 +9566,7 @@ OPCODE(0x2138) flag_N = res >> 24; adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(24) } @@ -9672,7 +9684,7 @@ OPCODE(0x2F38) flag_N = res >> 24; adr = AREG(7) - 4; AREG(7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(24) } @@ -9749,7 +9761,7 @@ OPCODE(0x2139) flag_N = res >> 24; adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(28) } @@ -9867,7 +9879,7 @@ OPCODE(0x2F39) flag_N = res >> 24; adr = AREG(7) - 4; AREG(7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(28) } @@ -9948,7 +9960,7 @@ OPCODE(0x213A) flag_N = res >> 24; adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(24) } @@ -10072,7 +10084,7 @@ OPCODE(0x2F3A) flag_N = res >> 24; adr = AREG(7) - 4; AREG(7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(24) } @@ -10153,7 +10165,7 @@ OPCODE(0x213B) flag_N = res >> 24; adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(26) } @@ -10277,7 +10289,7 @@ OPCODE(0x2F3B) flag_N = res >> 24; adr = AREG(7) - 4; AREG(7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(26) } @@ -10348,7 +10360,7 @@ OPCODE(0x213C) adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; PRE_IO - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(20) } @@ -10460,7 +10472,7 @@ OPCODE(0x2F3C) adr = AREG(7) - 4; AREG(7) = adr; PRE_IO - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(20) } @@ -10541,7 +10553,7 @@ OPCODE(0x211F) flag_N = res >> 24; adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(20) } @@ -10665,7 +10677,7 @@ OPCODE(0x2F1F) flag_N = res >> 24; adr = AREG(7) - 4; AREG(7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(20) } @@ -10746,7 +10758,7 @@ OPCODE(0x2127) flag_N = res >> 24; adr = AREG((Opcode >> 9) & 7) - 4; AREG((Opcode >> 9) & 7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(22) } @@ -10870,7 +10882,7 @@ OPCODE(0x2F27) flag_N = res >> 24; adr = AREG(7) - 4; AREG(7) = adr; - WRITE_LONG_F(adr, res) + WRITE_LONG_DEC_F(adr, res) POST_IO RET(22) } @@ -16552,9 +16564,7 @@ OPCODE(0x46C0) } else { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(12) @@ -16583,9 +16593,7 @@ OPCODE(0x46D0) } else { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(16) @@ -16615,9 +16623,7 @@ OPCODE(0x46D8) } else { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(16) @@ -16647,9 +16653,7 @@ OPCODE(0x46E0) } else { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(18) @@ -16679,9 +16683,7 @@ OPCODE(0x46E8) } else { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(20) @@ -16711,9 +16713,7 @@ OPCODE(0x46F0) } else { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(22) @@ -16743,9 +16743,7 @@ OPCODE(0x46F8) } else { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(20) @@ -16774,9 +16772,7 @@ OPCODE(0x46F9) } else { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(24) @@ -16802,13 +16798,11 @@ OPCODE(0x46FA) ASP = res; } POST_IO - CHECK_INT_TO_JUMP(24) + CHECK_INT_TO_JUMP(20) } else { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(20) @@ -16838,9 +16832,7 @@ OPCODE(0x46FB) } else { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(22) @@ -16866,9 +16858,7 @@ OPCODE(0x46FC) } else { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(16) @@ -16898,9 +16888,7 @@ OPCODE(0x46DF) } else { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(16) @@ -16930,9 +16918,7 @@ OPCODE(0x46E7) } else { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } RET(18) @@ -18306,8 +18292,19 @@ OPCODE(0x4AD0) flag_V = 0; flag_NotZ = res; flag_N = res; +#ifdef PICODRIVE_HACK + if (g_m68kcontext == &PicoCpuFS68k) { + res |= 0x80; + WRITE_BYTE_F(adr, res); + } +#endif + POST_IO +#ifdef USE_CYCLONE_TIMING +RET(18) +#else RET(8) +#endif } // TAS @@ -18324,8 +18321,20 @@ OPCODE(0x4AD8) flag_V = 0; flag_NotZ = res; flag_N = res; + +#ifdef PICODRIVE_HACK + if (g_m68kcontext == &PicoCpuFS68k) { + res |= 0x80; + WRITE_BYTE_F(adr, res); + } +#endif + POST_IO +#ifdef USE_CYCLONE_TIMING +RET(18) +#else RET(8) +#endif } // TAS @@ -18342,8 +18351,20 @@ OPCODE(0x4AE0) flag_V = 0; flag_NotZ = res; flag_N = res; + +#ifdef PICODRIVE_HACK + if (g_m68kcontext == &PicoCpuFS68k) { + res |= 0x80; + WRITE_BYTE_F(adr, res); + } +#endif + POST_IO +#ifdef USE_CYCLONE_TIMING +RET(20) +#else RET(10) +#endif } // TAS @@ -18360,8 +18381,20 @@ OPCODE(0x4AE8) flag_V = 0; flag_NotZ = res; flag_N = res; + +#ifdef PICODRIVE_HACK + if (g_m68kcontext == &PicoCpuFS68k) { + res |= 0x80; + WRITE_BYTE_F(adr, res); + } +#endif + POST_IO +#ifdef USE_CYCLONE_TIMING +RET(22) +#else RET(12) +#endif } // TAS @@ -18378,8 +18411,20 @@ OPCODE(0x4AF0) flag_V = 0; flag_NotZ = res; flag_N = res; + +#ifdef PICODRIVE_HACK + if (g_m68kcontext == &PicoCpuFS68k) { + res |= 0x80; + WRITE_BYTE_F(adr, res); + } +#endif + POST_IO +#ifdef USE_CYCLONE_TIMING +RET(24) +#else RET(14) +#endif } // TAS @@ -18395,8 +18440,20 @@ OPCODE(0x4AF8) flag_V = 0; flag_NotZ = res; flag_N = res; + +#ifdef PICODRIVE_HACK + if (g_m68kcontext == &PicoCpuFS68k) { + res |= 0x80; + WRITE_BYTE_F(adr, res); + } +#endif + POST_IO +#ifdef USE_CYCLONE_TIMING +RET(22) +#else RET(12) +#endif } // TAS @@ -18412,8 +18469,20 @@ OPCODE(0x4AF9) flag_V = 0; flag_NotZ = res; flag_N = res; + +#ifdef PICODRIVE_HACK + if (g_m68kcontext == &PicoCpuFS68k) { + res |= 0x80; + WRITE_BYTE_F(adr, res); + } +#endif + POST_IO +#ifdef USE_CYCLONE_TIMING +RET(26) +#else RET(16) +#endif } // TAS @@ -18430,8 +18499,20 @@ OPCODE(0x4ADF) flag_V = 0; flag_NotZ = res; flag_N = res; + +#ifdef PICODRIVE_HACK + if (g_m68kcontext == &PicoCpuFS68k) { + res |= 0x80; + WRITE_BYTE_F(adr, res); + } +#endif + POST_IO +#ifdef USE_CYCLONE_TIMING +RET(18) +#else RET(8) +#endif } // TAS @@ -18448,35 +18529,41 @@ OPCODE(0x4AE7) flag_V = 0; flag_NotZ = res; flag_N = res; + +#ifdef PICODRIVE_HACK + if (g_m68kcontext == &PicoCpuFS68k) { + res |= 0x80; + WRITE_BYTE_F(adr, res); + } +#endif + POST_IO -RET(10) +#ifdef USE_CYCLONE_TIMING +RET(20) +#else +RET(8) +#endif } // ILLEGAL OPCODE(0x4AFC) { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_ILLEGAL_INSTRUCTION_EX); -RET(4) + SET_PC(execute_exception(M68K_ILLEGAL_INSTRUCTION_EX, GET_PC-2, GET_SR)); +RET(0) } // ILLEGAL A000-AFFF OPCODE(0xA000) { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_1010_EX); -RET(4) + SET_PC(execute_exception(M68K_1010_EX, GET_PC-2, GET_SR)); +RET(0) } // ILLEGAL F000-FFFF OPCODE(0xF000) { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_1111_EX); -RET(4) + SET_PC(execute_exception(M68K_1111_EX, GET_PC-2, GET_SR)); +RET(0) // 4 already taken by exc. handler } // MOVEMaR @@ -19036,7 +19123,7 @@ RET(12) // TRAP OPCODE(0x4E40) { - execute_exception(M68K_TRAP_BASE_EX + (Opcode & 0xF)); + SET_PC(execute_exception(M68K_TRAP_BASE_EX + (Opcode & 0xF), GET_PC, GET_SR)); RET(4) } @@ -19107,9 +19194,7 @@ OPCODE(0x4E60) if (!flag_S) { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } res = AREGu32((Opcode >> 0) & 7); @@ -19125,9 +19210,7 @@ OPCODE(0x4E68) if (!flag_S) { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } res = ASP; @@ -19143,9 +19226,7 @@ OPCODE(0x4E70) if (!flag_S) { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } PRE_IO @@ -19169,9 +19250,7 @@ OPCODE(0x4E72) if (!flag_S) { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } FETCH_WORD(res); @@ -19183,7 +19262,7 @@ OPCODE(0x4E72) AREG(7) = ASP; ASP = res; } - m68kcontext.execinfo |= M68K_HALTED; + m68kcontext.execinfo |= FM68K_HALTED; m68kcontext.io_cycle_counter = 0; RET(4) } @@ -19196,9 +19275,7 @@ OPCODE(0x4E73) if (!flag_S) { - u32 oldPC=GET_PC; - SET_PC(oldPC-2) - execute_exception(M68K_PRIVILEGE_VIOLATION_EX); + SET_PC(execute_exception(M68K_PRIVILEGE_VIOLATION_EX, GET_PC-2, GET_SR)); RET(4) } PRE_IO @@ -19213,7 +19290,7 @@ OPCODE(0x4E73) ASP = res; } POST_IO - m68kcontext.execinfo &= ~(M68K_EMULATE_GROUP_0|M68K_EMULATE_TRACE|M68K_DO_TRACE); + m68kcontext.execinfo &= ~(FM68K_EMULATE_GROUP_0|FM68K_EMULATE_TRACE|FM68K_DO_TRACE); CHECK_INT_TO_JUMP(20) RET(20) } @@ -19236,7 +19313,7 @@ RET(16) OPCODE(0x4E76) { if (flag_V & 0x80) - execute_exception(M68K_TRAPV_EX); + SET_PC(execute_exception(M68K_TRAPV_EX, GET_PC, GET_SR)); RET(4) } @@ -19499,7 +19576,7 @@ OPCODE(0x4180) if (((s32)res < 0) || (res > src)) { flag_N = res >> 8; - execute_exception(M68K_CHK_EX); + SET_PC(execute_exception(M68K_CHK_EX, GET_PC, GET_SR)); } RET(10) } @@ -19517,7 +19594,7 @@ OPCODE(0x4190) if (((s32)res < 0) || (res > src)) { flag_N = res >> 8; - execute_exception(M68K_CHK_EX); + SET_PC(execute_exception(M68K_CHK_EX, GET_PC, GET_SR)); } POST_IO RET(14) @@ -19537,7 +19614,7 @@ OPCODE(0x4198) if (((s32)res < 0) || (res > src)) { flag_N = res >> 8; - execute_exception(M68K_CHK_EX); + SET_PC(execute_exception(M68K_CHK_EX, GET_PC, GET_SR)); } POST_IO RET(14) @@ -19557,7 +19634,7 @@ OPCODE(0x41A0) if (((s32)res < 0) || (res > src)) { flag_N = res >> 8; - execute_exception(M68K_CHK_EX); + SET_PC(execute_exception(M68K_CHK_EX, GET_PC, GET_SR)); } POST_IO RET(16) @@ -19577,7 +19654,7 @@ OPCODE(0x41A8) if (((s32)res < 0) || (res > src)) { flag_N = res >> 8; - execute_exception(M68K_CHK_EX); + SET_PC(execute_exception(M68K_CHK_EX, GET_PC, GET_SR)); } POST_IO RET(18) @@ -19597,7 +19674,7 @@ OPCODE(0x41B0) if (((s32)res < 0) || (res > src)) { flag_N = res >> 8; - execute_exception(M68K_CHK_EX); + SET_PC(execute_exception(M68K_CHK_EX, GET_PC, GET_SR)); } POST_IO RET(20) @@ -19616,7 +19693,7 @@ OPCODE(0x41B8) if (((s32)res < 0) || (res > src)) { flag_N = res >> 8; - execute_exception(M68K_CHK_EX); + SET_PC(execute_exception(M68K_CHK_EX, GET_PC, GET_SR)); } POST_IO RET(18) @@ -19635,7 +19712,7 @@ OPCODE(0x41B9) if (((s32)res < 0) || (res > src)) { flag_N = res >> 8; - execute_exception(M68K_CHK_EX); + SET_PC(execute_exception(M68K_CHK_EX, GET_PC, GET_SR)); } POST_IO RET(22) @@ -19655,7 +19732,7 @@ OPCODE(0x41BA) if (((s32)res < 0) || (res > src)) { flag_N = res >> 8; - execute_exception(M68K_CHK_EX); + SET_PC(execute_exception(M68K_CHK_EX, GET_PC, GET_SR)); } POST_IO RET(18) @@ -19675,7 +19752,7 @@ OPCODE(0x41BB) if (((s32)res < 0) || (res > src)) { flag_N = res >> 8; - execute_exception(M68K_CHK_EX); + SET_PC(execute_exception(M68K_CHK_EX, GET_PC, GET_SR)); } POST_IO RET(20) @@ -19692,7 +19769,7 @@ OPCODE(0x41BC) if (((s32)res < 0) || (res > src)) { flag_N = res >> 8; - execute_exception(M68K_CHK_EX); + SET_PC(execute_exception(M68K_CHK_EX, GET_PC, GET_SR)); } POST_IO RET(14) @@ -19712,7 +19789,7 @@ OPCODE(0x419F) if (((s32)res < 0) || (res > src)) { flag_N = res >> 8; - execute_exception(M68K_CHK_EX); + SET_PC(execute_exception(M68K_CHK_EX, GET_PC, GET_SR)); } POST_IO RET(14) @@ -19732,7 +19809,7 @@ OPCODE(0x41A7) if (((s32)res < 0) || (res > src)) { flag_N = res >> 8; - execute_exception(M68K_CHK_EX); + SET_PC(execute_exception(M68K_CHK_EX, GET_PC, GET_SR)); } POST_IO RET(16) @@ -23892,7 +23969,7 @@ OPCODE(0x5048) dst = AREGu32((Opcode >> 0) & 7); res = dst + src; AREG((Opcode >> 0) & 7) = res; -#ifdef USE_CYCLONE_TIMING_ // breaks Project-X +#ifdef USE_CYCLONE_TIMING RET(4) #else RET(8) @@ -26965,7 +27042,7 @@ OPCODE(0x80C0) src = DREGu16((Opcode >> 0) & 7); if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV RET(140) #else @@ -27013,7 +27090,7 @@ OPCODE(0x80D0) READ_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV RET(144) #else @@ -27062,7 +27139,7 @@ OPCODE(0x80D8) READ_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV RET(144) #else @@ -27111,7 +27188,7 @@ OPCODE(0x80E0) READ_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV RET(146) #else @@ -27160,7 +27237,7 @@ OPCODE(0x80E8) READ_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV RET(148) #else @@ -27209,7 +27286,7 @@ OPCODE(0x80F0) READ_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV RET(150) #else @@ -27257,7 +27334,7 @@ OPCODE(0x80F8) READ_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV RET(148) #else @@ -27305,7 +27382,7 @@ OPCODE(0x80F9) READ_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV RET(162) #else @@ -27354,7 +27431,7 @@ OPCODE(0x80FA) READ_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV RET(148) #else @@ -27403,7 +27480,7 @@ OPCODE(0x80FB) READ_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV RET(160) #else @@ -27449,7 +27526,7 @@ OPCODE(0x80FC) FETCH_WORD(src); if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV RET(144) #else @@ -27498,7 +27575,7 @@ OPCODE(0x80DF) READ_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV RET(144) #else @@ -27547,7 +27624,7 @@ OPCODE(0x80E7) READ_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV RET(146) #else @@ -27593,9 +27670,9 @@ OPCODE(0x81C0) src = (s32)DREGs16((Opcode >> 0) & 7); if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81C0; #endif RET(10) } @@ -27607,7 +27684,7 @@ goto end; res = 0; DREGu32((Opcode >> 9) & 7) = res; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81C0; #endif RET(50) } @@ -27621,7 +27698,7 @@ goto end; { flag_V = M68K_SR_V; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81C0; #endif RET(80) } @@ -27633,7 +27710,7 @@ goto end; DREGu32((Opcode >> 9) & 7) = res; } #ifdef USE_CYCLONE_TIMING_DIV -end: m68kcontext.io_cycle_counter -= 50; +end81C0: m68kcontext.io_cycle_counter -= 50; #endif RET(108) } @@ -27649,9 +27726,9 @@ OPCODE(0x81D0) READSX_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81D0; #endif RET(14) } @@ -27663,7 +27740,7 @@ goto end; res = 0; DREGu32((Opcode >> 9) & 7) = res; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81D0; #endif RET(54) } @@ -27677,7 +27754,7 @@ goto end; { flag_V = M68K_SR_V; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81D0; #endif RET(84) } @@ -27689,7 +27766,7 @@ goto end; DREGu32((Opcode >> 9) & 7) = res; } #ifdef USE_CYCLONE_TIMING_DIV -end: m68kcontext.io_cycle_counter -= 50; +end81D0: m68kcontext.io_cycle_counter -= 50; #endif RET(112) } @@ -27706,9 +27783,9 @@ OPCODE(0x81D8) READSX_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81D8; #endif RET(14) } @@ -27720,7 +27797,7 @@ goto end; res = 0; DREGu32((Opcode >> 9) & 7) = res; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81D8; #endif RET(54) } @@ -27734,7 +27811,7 @@ goto end; { flag_V = M68K_SR_V; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81D8; #endif RET(84) } @@ -27746,7 +27823,7 @@ goto end; DREGu32((Opcode >> 9) & 7) = res; } #ifdef USE_CYCLONE_TIMING_DIV -end: m68kcontext.io_cycle_counter -= 50; +end81D8: m68kcontext.io_cycle_counter -= 50; #endif RET(112) } @@ -27763,9 +27840,9 @@ OPCODE(0x81E0) READSX_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81E0; #endif RET(16) } @@ -27777,7 +27854,7 @@ goto end; res = 0; DREGu32((Opcode >> 9) & 7) = res; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81E0; #endif RET(56) } @@ -27791,7 +27868,7 @@ goto end; { flag_V = M68K_SR_V; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81E0; #endif RET(86) } @@ -27803,7 +27880,7 @@ goto end; DREGu32((Opcode >> 9) & 7) = res; } #ifdef USE_CYCLONE_TIMING_DIV -end: m68kcontext.io_cycle_counter -= 50; +end81E0: m68kcontext.io_cycle_counter -= 50; #endif RET(114) } @@ -27820,9 +27897,9 @@ OPCODE(0x81E8) READSX_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81E8; #endif RET(18) } @@ -27834,7 +27911,7 @@ goto end; res = 0; DREGu32((Opcode >> 9) & 7) = res; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81E8; #endif RET(58) } @@ -27848,7 +27925,7 @@ goto end; { flag_V = M68K_SR_V; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81E8; #endif RET(88) } @@ -27860,7 +27937,7 @@ goto end; DREGu32((Opcode >> 9) & 7) = res; } #ifdef USE_CYCLONE_TIMING_DIV -end: m68kcontext.io_cycle_counter -= 50; +end81E8: m68kcontext.io_cycle_counter -= 50; #endif RET(116) } @@ -27877,9 +27954,9 @@ OPCODE(0x81F0) READSX_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81F0; #endif RET(20) } @@ -27891,7 +27968,7 @@ goto end; res = 0; DREGu32((Opcode >> 9) & 7) = res; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81F0; #endif RET(60) } @@ -27905,7 +27982,7 @@ goto end; { flag_V = M68K_SR_V; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81F0; #endif RET(90) } @@ -27917,7 +27994,7 @@ goto end; DREGu32((Opcode >> 9) & 7) = res; } #ifdef USE_CYCLONE_TIMING_DIV -end: m68kcontext.io_cycle_counter -= 50; +end81F0: m68kcontext.io_cycle_counter -= 50; #endif RET(118) } @@ -27933,9 +28010,9 @@ OPCODE(0x81F8) READSX_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81F8; #endif RET(18) } @@ -27947,7 +28024,7 @@ goto end; res = 0; DREGu32((Opcode >> 9) & 7) = res; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81F8; #endif RET(58) } @@ -27961,7 +28038,7 @@ goto end; { flag_V = M68K_SR_V; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81F8; #endif RET(88) } @@ -27973,7 +28050,7 @@ goto end; DREGu32((Opcode >> 9) & 7) = res; } #ifdef USE_CYCLONE_TIMING_DIV -end: m68kcontext.io_cycle_counter -= 50; +end81F8: m68kcontext.io_cycle_counter -= 50; #endif RET(116) } @@ -27989,9 +28066,9 @@ OPCODE(0x81F9) READSX_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81F9; #endif RET(22) } @@ -28003,7 +28080,7 @@ goto end; res = 0; DREGu32((Opcode >> 9) & 7) = res; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81F9; #endif RET(62) } @@ -28017,7 +28094,7 @@ goto end; { flag_V = M68K_SR_V; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81F9; #endif RET(92) } @@ -28029,7 +28106,7 @@ goto end; DREGu32((Opcode >> 9) & 7) = res; } #ifdef USE_CYCLONE_TIMING_DIV -end: m68kcontext.io_cycle_counter -= 50; +end81F9: m68kcontext.io_cycle_counter -= 50; #endif RET(120) } @@ -28046,9 +28123,9 @@ OPCODE(0x81FA) READSX_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81FA; #endif RET(18) } @@ -28060,7 +28137,7 @@ goto end; res = 0; DREGu32((Opcode >> 9) & 7) = res; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81FA; #endif RET(58) } @@ -28074,7 +28151,7 @@ goto end; { flag_V = M68K_SR_V; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81FA; #endif RET(88) } @@ -28086,7 +28163,7 @@ goto end; DREGu32((Opcode >> 9) & 7) = res; } #ifdef USE_CYCLONE_TIMING_DIV -end: m68kcontext.io_cycle_counter -= 50; +end81FA: m68kcontext.io_cycle_counter -= 50; #endif RET(116) } @@ -28103,9 +28180,9 @@ OPCODE(0x81FB) READSX_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81FB; #endif RET(20) } @@ -28117,7 +28194,7 @@ goto end; res = 0; DREGu32((Opcode >> 9) & 7) = res; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81FB; #endif RET(60) } @@ -28131,7 +28208,7 @@ goto end; { flag_V = M68K_SR_V; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81FB; #endif RET(90) } @@ -28143,7 +28220,7 @@ goto end; DREGu32((Opcode >> 9) & 7) = res; } #ifdef USE_CYCLONE_TIMING_DIV -end: m68kcontext.io_cycle_counter -= 50; +end81FB: m68kcontext.io_cycle_counter -= 50; #endif RET(118) } @@ -28157,9 +28234,9 @@ OPCODE(0x81FC) FETCH_SWORD(src); if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81FC; #endif RET(14) } @@ -28171,7 +28248,7 @@ goto end; res = 0; DREGu32((Opcode >> 9) & 7) = res; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81FC; #endif RET(54) } @@ -28185,7 +28262,7 @@ goto end; { flag_V = M68K_SR_V; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81FC; #endif RET(84) } @@ -28197,7 +28274,7 @@ goto end; DREGu32((Opcode >> 9) & 7) = res; } #ifdef USE_CYCLONE_TIMING_DIV -end: m68kcontext.io_cycle_counter -= 50; +end81FC: m68kcontext.io_cycle_counter -= 50; #endif RET(112) } @@ -28214,9 +28291,9 @@ OPCODE(0x81DF) READSX_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81DF; #endif RET(14) } @@ -28228,7 +28305,7 @@ goto end; res = 0; DREGu32((Opcode >> 9) & 7) = res; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81DF; #endif RET(54) } @@ -28242,7 +28319,7 @@ goto end; { flag_V = M68K_SR_V; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81DF; #endif RET(84) } @@ -28254,7 +28331,7 @@ goto end; DREGu32((Opcode >> 9) & 7) = res; } #ifdef USE_CYCLONE_TIMING_DIV -end: m68kcontext.io_cycle_counter -= 50; +end81DF: m68kcontext.io_cycle_counter -= 50; #endif RET(112) } @@ -28271,9 +28348,9 @@ OPCODE(0x81E7) READSX_WORD_F(adr, src) if (src == 0) { - execute_exception(M68K_ZERO_DIVIDE_EX); + SET_PC(execute_exception(M68K_ZERO_DIVIDE_EX, GET_PC, GET_SR)); #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81E7; #endif RET(16) } @@ -28285,7 +28362,7 @@ goto end; res = 0; DREGu32((Opcode >> 9) & 7) = res; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81E7; #endif RET(56) } @@ -28299,7 +28376,7 @@ goto end; { flag_V = M68K_SR_V; #ifdef USE_CYCLONE_TIMING_DIV -goto end; +goto end81E7; #endif RET(86) } @@ -28311,7 +28388,7 @@ goto end; DREGu32((Opcode >> 9) & 7) = res; } #ifdef USE_CYCLONE_TIMING_DIV -end: m68kcontext.io_cycle_counter -= 50; +end81E7: m68kcontext.io_cycle_counter -= 50; #endif RET(114) } @@ -28333,6 +28410,7 @@ RET(4) } // SUBaD +#if 0 OPCODE(0x9008) { u32 adr, res; @@ -28352,6 +28430,7 @@ OPCODE(0x9008) */ RET(4) } +#endif // SUBaD OPCODE(0x9010) @@ -30026,7 +30105,11 @@ OPCODE(0x90D0) res = dst - src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(12) +#else RET(10) +#endif } // SUBA @@ -30043,7 +30126,11 @@ OPCODE(0x90D8) res = dst - src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(12) +#else RET(10) +#endif } // SUBA @@ -30060,7 +30147,11 @@ OPCODE(0x90E0) res = dst - src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(14) +#else RET(12) +#endif } // SUBA @@ -30077,7 +30168,11 @@ OPCODE(0x90E8) res = dst - src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(16) +#else RET(14) +#endif } // SUBA @@ -30094,7 +30189,11 @@ OPCODE(0x90F0) res = dst - src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(18) +#else RET(16) +#endif } // SUBA @@ -30110,7 +30209,11 @@ OPCODE(0x90F8) res = dst - src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(16) +#else RET(14) +#endif } // SUBA @@ -30126,7 +30229,11 @@ OPCODE(0x90F9) res = dst - src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(20) +#else RET(18) +#endif } // SUBA @@ -30143,7 +30250,11 @@ OPCODE(0x90FA) res = dst - src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(16) +#else RET(14) +#endif } // SUBA @@ -30160,7 +30271,11 @@ OPCODE(0x90FB) res = dst - src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(18) +#else RET(16) +#endif } // SUBA @@ -30190,7 +30305,11 @@ OPCODE(0x90DF) res = dst - src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(12) +#else RET(10) +#endif } // SUBA @@ -30207,7 +30326,11 @@ OPCODE(0x90E7) res = dst - src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(14) +#else RET(12) +#endif } // SUBA @@ -30461,6 +30584,7 @@ RET(4) } // CMP +#if 0 OPCODE(0xB008) { u32 adr, res; @@ -30479,6 +30603,7 @@ OPCODE(0xB008) */ RET(4) } +#endif // CMP OPCODE(0xB010) @@ -34756,6 +34881,7 @@ RET(4) } // ADDaD +#if 0 OPCODE(0xD008) { u32 adr, res; @@ -34775,6 +34901,7 @@ OPCODE(0xD008) */ RET(4) } +#endif // ADDaD OPCODE(0xD010) @@ -36449,7 +36576,11 @@ OPCODE(0xD0D0) res = dst + src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(12) +#else RET(10) +#endif } // ADDA @@ -36466,7 +36597,11 @@ OPCODE(0xD0D8) res = dst + src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(12) +#else RET(10) +#endif } // ADDA @@ -36483,7 +36618,11 @@ OPCODE(0xD0E0) res = dst + src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(14) +#else RET(12) +#endif } // ADDA @@ -36500,7 +36639,11 @@ OPCODE(0xD0E8) res = dst + src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(16) +#else RET(14) +#endif } // ADDA @@ -36517,7 +36660,11 @@ OPCODE(0xD0F0) res = dst + src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(18) +#else RET(16) +#endif } // ADDA @@ -36533,7 +36680,11 @@ OPCODE(0xD0F8) res = dst + src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(16) +#else RET(14) +#endif } // ADDA @@ -36549,7 +36700,11 @@ OPCODE(0xD0F9) res = dst + src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(20) +#else RET(18) +#endif } // ADDA @@ -36566,7 +36721,11 @@ OPCODE(0xD0FA) res = dst + src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(16) +#else RET(14) +#endif } // ADDA @@ -36583,7 +36742,11 @@ OPCODE(0xD0FB) res = dst + src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(18) +#else RET(16) +#endif } // ADDA @@ -36613,7 +36776,11 @@ OPCODE(0xD0DF) res = dst + src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(12) +#else RET(10) +#endif } // ADDA @@ -36630,7 +36797,11 @@ OPCODE(0xD0E7) res = dst + src; AREG((Opcode >> 9) & 7) = res; POST_IO +#ifdef USE_CYCLONE_TIMING +RET(14) +#else RET(12) +#endif } // ADDA