2 Skelton for retropc emulator
5 Author : Takeda.Toshiya
18 #define MCS48_PORT_P0 0x100 /* Not used */
19 #define MCS48_PORT_P1 0x101 /* P10-P17 */
20 #define MCS48_PORT_P2 0x102 /* P20-P28 */
21 #define MCS48_PORT_T0 0x110
22 #define MCS48_PORT_T1 0x111
23 #define MCS48_PORT_BUS 0x120 /* DB0-DB7 */
24 #define MCS48_PORT_PROG 0x121 /* PROG line to 8243 expander */
30 class MCS48MEM : public DEVICE
35 MCS48MEM(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
37 memset(ram, 0, sizeof(ram));
38 set_device_name(_T("MCS48 MEMORY BUS"));
42 uint32_t read_data8(uint32_t addr)
44 return ram[addr & 0xff];
46 void write_data8(uint32_t addr, uint32_t data)
48 ram[addr & 0xff] = data;
50 void save_state(FILEIO* state_fio);
51 bool load_state(FILEIO* state_fio);
54 class MCS48 : public DEVICE
57 /* ---------------------------------------------------------------------------
59 --------------------------------------------------------------------------- */
61 DEVICE *d_mem, *d_io, *d_intr;
64 DEVICE *d_mem_stored, *d_io_stored;
69 MCS48(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
71 d_mem = d_io = d_intr = NULL;
72 set_device_name(_T("MCS48 MCU"));
81 void write_signal(int id, uint32_t data, uint32_t mask);
83 uint32_t get_next_pc();
89 uint32_t get_debug_prog_addr_mask()
93 uint32_t get_debug_data_addr_mask()
97 void write_debug_data8(uint32_t addr, uint32_t data);
98 uint32_t read_debug_data8(uint32_t addr);
99 void write_debug_io8(uint32_t addr, uint32_t data);
100 uint32_t read_debug_io8(uint32_t addr);
101 bool write_debug_reg(const _TCHAR *reg, uint32_t data);
102 void get_debug_regs_info(_TCHAR *buffer, size_t buffer_len);
103 int debug_dasm(uint32_t pc, _TCHAR *buffer, size_t buffer_len);
105 void save_state(FILEIO* state_state_fio);
106 bool load_state(FILEIO* state_state_fio);
109 void set_context_mem(DEVICE* device)
113 void set_context_io(DEVICE* device)
117 void set_context_intr(DEVICE* device)
122 void set_context_debugger(DEBUGGER* device)
127 void load_rom_image(const _TCHAR *file_path);
128 uint8_t *get_rom_ptr();