2 Skelton for retropc emulator
5 Author : Takeda.Toshiya
18 #define SIG_M6502_OVERFLOW 0
24 class M6502_BASE : public DEVICE
27 DEVICE *d_mem, *d_pic;
33 pair32_t pc, sp, zp, ea;
36 bool pending_irq, after_cli;
37 bool nmi_state, irq_state, so_state;
39 uint64_t total_icount;
40 uint64_t prev_total_icount;
45 void __FASTCALL run_one_opecode();
46 virtual void __FASTCALL OP(uint8_t code);
47 void __FASTCALL update_irq();
50 M6502_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
52 total_icount = prev_total_icount = 0;
58 set_device_name(_T("M6502 CPU"));
63 virtual void initialize();
65 virtual int __FASTCALL run(int clock);
67 void __FASTCALL write_signal(int id, uint32_t data, uint32_t mask);
68 void set_intr_line(bool line, bool pending, uint32_t bit)
70 write_signal(SIG_CPU_IRQ, line ? 1 : 0, 1);
76 uint32_t get_next_pc()
85 uint32_t get_debug_prog_addr_mask()
89 uint32_t get_debug_data_addr_mask()
93 void __FASTCALL write_debug_data8(uint32_t addr, uint32_t data);
94 uint32_t __FASTCALL read_debug_data8(uint32_t addr);
95 bool write_debug_reg(const _TCHAR *reg, uint32_t data);
96 bool get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
97 virtual int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
101 void set_context_mem(DEVICE* device)
105 void set_context_intr(DEVICE* device)
109 //#ifdef USE_DEBUGGER
110 void set_context_debugger(DEBUGGER* device)
117 class M6502 : public M6502_BASE
120 void __FASTCALL OP(uint8_t code);
122 M6502(VM_TEMPLATE* parent_vm, EMU* parent_emu) : M6502_BASE(parent_vm, parent_emu)
128 int __FASTCALL run(int clock);
129 int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
130 bool process_state(FILEIO* state_fio, bool loading);
133 class N2A03 : public M6502_BASE
136 void __FASTCALL OP(uint8_t code);
138 N2A03(VM_TEMPLATE* parent_vm, EMU* parent_emu) : M6502_BASE(parent_vm, parent_emu)
144 int __FASTCALL run(int clock);
145 int debug_dasm_with_userdata(uint32_t pc, _TCHAR *buffer, size_t buffer_len, uint32_t userdata = 0);
146 bool process_state(FILEIO* state_fio, bool loading);