2 Skelton for retropc emulator
4 Origin : MESS UPD7810 Core
5 Author : Takeda.Toshiya
18 #define SIG_UPD7801_INTF0 0
19 #define SIG_UPD7801_INTF1 1
20 #define SIG_UPD7801_INTF2 2
21 #define SIG_UPD7801_WAIT 3
22 #define SIG_UPD7801_SI 4
23 #define SIG_UPD7801_SCK 5
25 // virtual i/o port address
34 class UPD7801 : public DEVICE
37 /* ---------------------------------------------------------------------------
39 --------------------------------------------------------------------------- */
45 DEVICE *d_mem_stored, *d_io_stored;
48 /* ---------------------------------------------------------------------------
50 --------------------------------------------------------------------------- */
52 int count, period, scount, tcount;
56 uint16 SP, PC, prevPC;
57 uint8 PSW, IRR, IFF, SIRQ, HALT, MK, MB, MC, TM0, TM1, SR;
64 /* ---------------------------------------------------------------------------
65 virtual machine interface
66 --------------------------------------------------------------------------- */
69 inline uint8 RM8(uint16 addr);
70 inline void WM8(uint16 addr, uint8 val);
71 inline uint16 RM16(uint16 addr);
72 inline void WM16(uint16 addr, uint16 val);
73 inline uint8 FETCH8();
74 inline uint16 FETCH16();
75 inline uint16 FETCHWA();
77 inline void PUSH8(uint8 val);
78 inline uint16 POP16();
79 inline void PUSH16(uint16 val);
82 inline uint8 IN8(int port);
83 inline void OUT8(int port, uint8 val);
84 inline void UPDATE_PORTC(uint8 IOM);
86 /* ---------------------------------------------------------------------------
88 --------------------------------------------------------------------------- */
90 void run_one_opecode();
92 void run_one_opecode_debugger();
104 UPD7801(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
106 init_output_signals(&outputs_so);
115 void write_signal(int id, uint32 data, uint32 mask);
129 uint32 debug_prog_addr_mask()
133 uint32 debug_data_addr_mask()
137 void debug_write_data8(uint32 addr, uint32 data);
138 uint32 debug_read_data8(uint32 addr);
139 void debug_write_io8(uint32 addr, uint32 data);
140 uint32 debug_read_io8(uint32 addr);
141 bool debug_write_reg(const _TCHAR *reg, uint32 data);
142 void debug_regs_info(_TCHAR *buffer, size_t buffer_len);
143 int debug_dasm(uint32 pc, _TCHAR *buffer, size_t buffer_len);
145 void save_state(FILEIO* state_fio);
146 bool load_state(FILEIO* state_fio);
149 void set_context_mem(DEVICE* device)
153 void set_context_io(DEVICE* device)
158 void set_context_debugger(DEBUGGER* device)
163 void set_context_so(DEVICE* device, int id, uint32 mask)
165 register_output_signal(&outputs_so, device, id, mask);