?? cpuemu_02.c
字號:
#include "raine.h"#include "newmem.h"#include "readcpu.h"#include "newcpu.h"#include "cputbl.h"#pragma warning( disable : 4702 4100 )unsigned long op_4c40_0(UINT32 opcode) /* DIVL */{ UINT32 dstreg = opcode & 7;{m68k_incpc(2);{ unsigned int oldpc = m68k_getpc();{ INT16 extra = get_iword(0);{ INT32 dst = m68k_dreg(regs, dstreg);m68k_incpc(2); m68k_divl(opcode, dst, extra, oldpc);}}}}return 4;}unsigned long op_4c50_0(UINT32 opcode) /* DIVL */{ UINT32 dstreg = opcode & 7;{m68k_incpc(2);{ unsigned int oldpc = m68k_getpc();{ INT16 extra = get_iword(0);{ unsigned int dsta = m68k_areg(regs, dstreg);{ INT32 dst = cpu_readmem24_dword(dsta);m68k_incpc(2); m68k_divl(opcode, dst, extra, oldpc);}}}}}return 8;}unsigned long op_4c58_0(UINT32 opcode) /* DIVL */{ UINT32 dstreg = opcode & 7;{m68k_incpc(2);{ unsigned int oldpc = m68k_getpc();{ INT16 extra = get_iword(0);{ unsigned int dsta = m68k_areg(regs, dstreg);{ INT32 dst = cpu_readmem24_dword(dsta); m68k_areg(regs, dstreg) += 4;m68k_incpc(2); m68k_divl(opcode, dst, extra, oldpc);}}}}}return 8;}unsigned long op_4c60_0(UINT32 opcode) /* DIVL */{ UINT32 dstreg = opcode & 7;{m68k_incpc(2);{ unsigned int oldpc = m68k_getpc();{ INT16 extra = get_iword(0);{ unsigned int dsta = m68k_areg(regs, dstreg) - 4;{ INT32 dst = cpu_readmem24_dword(dsta); m68k_areg (regs, dstreg) = dsta;m68k_incpc(2); m68k_divl(opcode, dst, extra, oldpc);}}}}}return 9;}unsigned long op_4c68_0(UINT32 opcode) /* DIVL */{ UINT32 dstreg = opcode & 7;{m68k_incpc(2);{ unsigned int oldpc = m68k_getpc();{ INT16 extra = get_iword(0);{ unsigned int dsta = m68k_areg(regs, dstreg) + (INT32)(INT16)get_iword(2);{ INT32 dst = cpu_readmem24_dword(dsta);m68k_incpc(4); m68k_divl(opcode, dst, extra, oldpc);}}}}}return 10;}unsigned long op_4c70_0(UINT32 opcode) /* DIVL */{ UINT32 dstreg = opcode & 7;{m68k_incpc(2);{ unsigned int oldpc = m68k_getpc();{ INT16 extra = get_iword(0);{m68k_incpc(2);{ unsigned int dsta = get_disp_ea_020(m68k_areg(regs, dstreg), next_iword());{ INT32 dst = cpu_readmem24_dword(dsta); m68k_divl(opcode, dst, extra, oldpc);}}}}}}return 11;}unsigned long op_4c78_0(UINT32 opcode) /* DIVL */{{m68k_incpc(2);{ unsigned int oldpc = m68k_getpc();{ INT16 extra = get_iword(0);{ unsigned int dsta = (INT32)(INT16)get_iword(2);{ INT32 dst = cpu_readmem24_dword(dsta);m68k_incpc(4); m68k_divl(opcode, dst, extra, oldpc);}}}}}return 10;}unsigned long op_4c79_0(UINT32 opcode) /* DIVL */{{m68k_incpc(2);{ unsigned int oldpc = m68k_getpc();{ INT16 extra = get_iword(0);{ unsigned int dsta = get_ilong(2);{ INT32 dst = cpu_readmem24_dword(dsta);m68k_incpc(6); m68k_divl(opcode, dst, extra, oldpc);}}}}}return 12;}unsigned long op_4c7a_0(UINT32 opcode) /* DIVL */{{m68k_incpc(2);{ unsigned int oldpc = m68k_getpc();{ INT16 extra = get_iword(0);{ unsigned int dsta = m68k_getpc () + 2; dsta += (INT32)(INT16)get_iword(2);{ INT32 dst = cpu_readmem24_dword(dsta);m68k_incpc(4); m68k_divl(opcode, dst, extra, oldpc);}}}}}return 10;}unsigned long op_4c7b_0(UINT32 opcode) /* DIVL */{{m68k_incpc(2);{ unsigned int oldpc = m68k_getpc();{ INT16 extra = get_iword(0);{m68k_incpc(2);{ unsigned int tmppc = m68k_getpc(); unsigned int dsta = get_disp_ea_020(tmppc, next_iword());{ INT32 dst = cpu_readmem24_dword(dsta); m68k_divl(opcode, dst, extra, oldpc);}}}}}}return 11;}unsigned long op_4c7c_0(UINT32 opcode) /* DIVL */{{m68k_incpc(2);{ unsigned int oldpc = m68k_getpc();{ INT16 extra = get_iword(0);{ INT32 dst = get_ilong(2);m68k_incpc(6); m68k_divl(opcode, dst, extra, oldpc);}}}}return 8;}unsigned long op_4c90_0(UINT32 opcode) /* MVMEL */{ UINT32 dstreg = opcode & 7;{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{ unsigned int srca = m68k_areg(regs, dstreg);{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; amask = movem_next[amask]; }}}}m68k_incpc(4);return 4;}unsigned long op_4c98_0(UINT32 opcode) /* MVMEL */{ UINT32 dstreg = opcode & 7;{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{ unsigned int srca = m68k_areg(regs, dstreg);{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; amask = movem_next[amask]; } m68k_areg(regs, dstreg) = srca;}}}m68k_incpc(4);return 4;}unsigned long op_4ca8_0(UINT32 opcode) /* MVMEL */{ UINT32 dstreg = opcode & 7;{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{ unsigned int srca = m68k_areg(regs, dstreg) + (INT32)(INT16)get_iword(4);{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; amask = movem_next[amask]; }}}}m68k_incpc(6);return 6;}unsigned long op_4cb0_0(UINT32 opcode) /* MVMEL */{ UINT32 dstreg = opcode & 7;{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{m68k_incpc(4);{ unsigned int srca = get_disp_ea_020(m68k_areg(regs, dstreg), next_iword());{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; amask = movem_next[amask]; }}}}}return 7;}unsigned long op_4cb8_0(UINT32 opcode) /* MVMEL */{ (void)(opcode);{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{ unsigned int srca = (INT32)(INT16)get_iword(4);{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; amask = movem_next[amask]; }}}}m68k_incpc(6);return 6;}unsigned long op_4cb9_0(UINT32 opcode) /* MVMEL */{ (void)(opcode);{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{ unsigned int srca = get_ilong(4);{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; amask = movem_next[amask]; }}}}m68k_incpc(8);return 8;}unsigned long op_4cba_0(UINT32 opcode) /* MVMEL */{ (void)(opcode);{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{ unsigned int srca = m68k_getpc () + 4; srca += (INT32)(INT16)get_iword(4);{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; amask = movem_next[amask]; }}}}m68k_incpc(6);return 6;}unsigned long op_4cbb_0(UINT32 opcode) /* MVMEL */{ (void)(opcode);{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{m68k_incpc(4);{ unsigned int tmppc = m68k_getpc(); unsigned int srca = get_disp_ea_020(tmppc, next_iword());{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = (INT32)(INT16)cpu_readmem24_word(srca); srca += 2; amask = movem_next[amask]; }}}}}return 7;}unsigned long op_4cd0_0(UINT32 opcode) /* MVMEL */{ UINT32 dstreg = opcode & 7;{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{ unsigned int srca = m68k_areg(regs, dstreg);{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = cpu_readmem24_dword(srca); srca += 4; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = cpu_readmem24_dword(srca); srca += 4; amask = movem_next[amask]; }}}}m68k_incpc(4);return 4;}unsigned long op_4cd8_0(UINT32 opcode) /* MVMEL */{ UINT32 dstreg = opcode & 7;{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{ unsigned int srca = m68k_areg(regs, dstreg);{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = cpu_readmem24_dword(srca); srca += 4; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = cpu_readmem24_dword(srca); srca += 4; amask = movem_next[amask]; } m68k_areg(regs, dstreg) = srca;}}}m68k_incpc(4);return 4;}unsigned long op_4ce8_0(UINT32 opcode) /* MVMEL */{ UINT32 dstreg = opcode & 7;{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{ unsigned int srca = m68k_areg(regs, dstreg) + (INT32)(INT16)get_iword(4);{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = cpu_readmem24_dword(srca); srca += 4; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = cpu_readmem24_dword(srca); srca += 4; amask = movem_next[amask]; }}}}m68k_incpc(6);return 6;}unsigned long op_4cf0_0(UINT32 opcode) /* MVMEL */{ UINT32 dstreg = opcode & 7;{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{m68k_incpc(4);{ unsigned int srca = get_disp_ea_020(m68k_areg(regs, dstreg), next_iword());{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = cpu_readmem24_dword(srca); srca += 4; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = cpu_readmem24_dword(srca); srca += 4; amask = movem_next[amask]; }}}}}return 7;}unsigned long op_4cf8_0(UINT32 opcode) /* MVMEL */{ (void)(opcode);{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{ unsigned int srca = (INT32)(INT16)get_iword(4);{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = cpu_readmem24_dword(srca); srca += 4; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = cpu_readmem24_dword(srca); srca += 4; amask = movem_next[amask]; }}}}m68k_incpc(6);return 6;}unsigned long op_4cf9_0(UINT32 opcode) /* MVMEL */{ (void)(opcode);{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{ unsigned int srca = get_ilong(4);{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = cpu_readmem24_dword(srca); srca += 4; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = cpu_readmem24_dword(srca); srca += 4; amask = movem_next[amask]; }}}}m68k_incpc(8);return 8;}unsigned long op_4cfa_0(UINT32 opcode) /* MVMEL */{ (void)(opcode);{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{ unsigned int srca = m68k_getpc () + 4; srca += (INT32)(INT16)get_iword(4);{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = cpu_readmem24_dword(srca); srca += 4; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = cpu_readmem24_dword(srca); srca += 4; amask = movem_next[amask]; }}}}m68k_incpc(6);return 6;}unsigned long op_4cfb_0(UINT32 opcode) /* MVMEL */{ (void)(opcode);{ UINT16 mask = get_iword(2); unsigned int dmask = mask & 0xff, amask = (mask >> 8) & 0xff;{m68k_incpc(4);{ unsigned int tmppc = m68k_getpc(); unsigned int srca = get_disp_ea_020(tmppc, next_iword());{ while (dmask) { m68k_dreg(regs, movem_index1[dmask]) = cpu_readmem24_dword(srca); srca += 4; dmask = movem_next[dmask]; } while (amask) { m68k_areg(regs, movem_index1[amask]) = cpu_readmem24_dword(srca); srca += 4; amask = movem_next[amask]; }}}}}return 7;}unsigned long op_4e40_0(UINT32 opcode) /* TRAP */{ UINT32 srcreg = (opcode & 15);{{ UINT32 src = srcreg;m68k_incpc(2); Exception(src+32,0);}}return 2;}unsigned long op_4e50_0(UINT32 opcode) /* LINK */{ UINT32 srcreg = (opcode & 7);{{ unsigned int olda = m68k_areg(regs, 7) - 4; m68k_areg (regs, 7) = olda;{ INT32 src = m68k_areg(regs, srcreg); cpu_writemem24_dword(olda,src); m68k_areg(regs, srcreg) = (m68k_areg(regs, 7));{ INT16 offs = get_iword(2); m68k_areg(regs, 7) += offs;}}}}m68k_incpc(4);return 9;}unsigned long op_4e58_0(UINT32 opcode) /* UNLK */{ UINT32 srcreg = (opcode & 7);{{ INT32 src = m68k_areg(regs, srcreg); m68k_areg(regs, 7) = src;{ unsigned int olda = m68k_areg(regs, 7);{ INT32 old = cpu_readmem24_dword(olda); m68k_areg(regs, 7) += 4; m68k_areg(regs, srcreg) = (old);}}}}m68k_incpc(2);return 6;}unsigned long op_4e60_0(UINT32 opcode) /* MVR2USP */{ UINT32 srcreg = (opcode & 7);{if (!regs.s) { Exception(8,0); goto endlabel901; }{{ INT32 src = m68k_areg(regs, srcreg); regs.usp = src;}}}m68k_incpc(2);endlabel901: ;return 2;}unsigned long op_4e68_0(UINT32 opcode) /* MVUSP2R */{ UINT32 srcreg = (opcode & 7);{if (!regs.s) { Exception(8,0); goto endlabel902; }{{ m68k_areg(regs, srcreg) = (regs.usp);}}}m68k_incpc(2);endlabel902: ;return 2;}unsigned long op_4e70_0(UINT32 opcode) /* RESET */{ (void)(opcode);{if (!regs.s) { Exception(8,0); goto endlabel903; }}m68k_incpc(2);endlabel903: ;return 2;}unsigned long op_4e71_0(UINT32 opcode) /* NOP */{ (void)(opcode);{}m68k_incpc(2);return 2;}unsigned long op_4e72_0(UINT32 opcode) /* STOP */{ (void)(opcode);{if (!regs.s) { Exception(8,0); goto endlabel905; }{{ INT16 src = get_iword(2); regs.sr = src; MakeFromSR(); m68k_setstopped(1);}}}m68k_incpc(4);endlabel905: ;return 4;}unsigned long op_4e73_0(UINT32 opcode) /* RTE */{ (void)(opcode);{if (!regs.s) { Exception(8,0); goto endlabel906; }{ UINT16 newsr; UINT32 newpc; for (;;) {{ unsigned int sra = m68k_areg(regs, 7);{ INT16 sr = cpu_readmem24_word(sra); m68k_areg(regs, 7) += 2;{ unsigned int pca = m68k_areg(regs, 7);{ INT32 pc = cpu_readmem24_dword(pca); m68k_areg(regs, 7) += 4;{ unsigned int formata = m68k_areg(regs, 7);{ INT16 format = cpu_readmem24_word(formata); m68k_areg(regs, 7) += 2; newsr = sr; newpc = pc; if ((format & 0xF000) == 0x0000) { break; } else if ((format & 0xF000) == 0x1000) { ; } else if ((format & 0xF000) == 0x2000) { m68k_areg(regs, 7) += 4; break; } else if ((format & 0xF000) == 0x8000) { m68k_areg(regs, 7) += 50; break; } else if ((format & 0xF000) == 0x9000) { m68k_areg(regs, 7) += 12; break; } else if ((format & 0xF000) == 0xa000) { m68k_areg(regs, 7) += 24; break; } else if ((format & 0xF000) == 0xb000) { m68k_areg(regs, 7) += 84; break; } else { Exception(14,0); goto endlabel906; } regs.sr = newsr; MakeFromSR();}}}}}}} regs.sr = newsr; MakeFromSR(); m68k_setpc_rte(newpc);}}endlabel906: ;return 10;}unsigned long op_4e74_0(UINT32 opcode) /* RTD */{ (void)(opcode);{{ unsigned int pca = m68k_areg(regs, 7);{ INT32 pc = cpu_readmem24_dword(pca); m68k_areg(regs, 7) += 4;{ INT16 offs = get_iword(2); m68k_areg(regs, 7) += offs; m68k_setpc_rte(pc);}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -