2 ASCII MSX1 Emulator 'yaMSX1'
3 ASCII MSX2 Emulator 'yaMSX2'
4 Pioneer PX-7 Emulator 'ePX-7'
6 Author : Takeda.Toshiya
15 #ifndef _MSX_MEMORY_H_
16 #define _MSX_MEMORY_H_
19 #include "../../emu.h"
20 #include "../device.h"
22 #define SIG_SLOT2_EXV 0
23 #define SIG_SLOT2_ACK 1
24 #define SIG_SLOT2_MUTE 2
26 #define SIG_MEMORY_SEL 0
34 class SLOT0 : public DEVICE
46 SLOT0(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
48 set_device_name(_T("Slot #0"));
54 void write_data8(uint32_t addr, uint32_t data);
55 uint32_t read_data8(uint32_t addr);
56 bool process_state(FILEIO* state_fio, bool loading);
61 class SLOT1 : public DEVICE
75 SLOT1(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
77 set_device_name(_T("Slot #1"));
83 void write_data8(uint32_t addr, uint32_t data);
84 uint32_t read_data8(uint32_t addr);
85 bool process_state(FILEIO* state_fio, bool loading);
88 void open_cart(const _TCHAR *file_path);
90 bool is_cart_inserted()
99 class SLOT2 : public DEVICE
102 DEVICE *d_cpu, *d_ldp, *d_vdp;
104 uint8_t wdmy[0x2000];
105 uint8_t rdmy[0x2000];
114 bool pc4, mute_l, mute_r;
117 SLOT2(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
119 set_device_name(_T("Slot #2"));
126 void write_data8(uint32_t addr, uint32_t data);
127 uint32_t read_data8(uint32_t addr);
128 void write_signal(int id, uint32_t data, uint32_t mask);
129 void event_callback(int event_id, int err);
130 bool process_state(FILEIO* state_fio, bool loading);
133 void set_context_cpu(DEVICE* device)
137 void set_context_ldp(DEVICE* device)
141 void set_context_vdp(DEVICE* device)
147 class SLOT2 : public DEVICE
150 uint8_t wdmy[0x2000];
151 uint8_t rdmy[0x2000];
157 SLOT2(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
159 set_device_name(_T("Slot #2"));
165 void write_data8(uint32_t addr, uint32_t data);
166 uint32_t read_data8(uint32_t addr);
172 class SLOT3 : public DEVICE
175 uint8_t wdmy[0x2000];
176 uint8_t rdmy[0x2000];
179 uint8_t rom[0x10000];
180 uint8_t ram[0x20000];
185 SLOT3(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
187 set_device_name(_T("Slot #3"));
193 void write_data8(uint32_t addr, uint32_t data);
194 uint32_t read_data8(uint32_t addr);
195 void write_io8(uint32_t addr, uint32_t data);
196 bool process_state(FILEIO* state_fio, bool loading);
199 void open_cart(const _TCHAR *file_path);
201 bool is_cart_inserted()
209 class MSX_MEMORY : public DEVICE
215 DISK* disk[MAX_DRIVE];
216 bool access[MAX_DRIVE]
218 uint32_t slot_select;
219 void update_map(uint32_t val);
222 MSX_MEMORY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
224 set_device_name(_T("Memory Bus"));
234 void write_data8(uint32_t addr, uint32_t data);
235 uint32_t read_data8(uint32_t addr);
236 uint32_t fetch_op(uint32_t addr, int* wait);
237 void write_io8(uint32_t addr, uint32_t data);
238 void write_signal(int id, uint32_t data, uint32_t mask);
240 uint32_t read_signal(int id);
241 bool bios_ret_z80(uint16_t PC, pair_t* af, pair_t* bc, pair_t* de, pair_t* hl, pair_t* ix, pair_t* iy, uint8_t* iff1);
243 bool process_state(FILEIO* state_fio, bool loading);
246 void set_context_slot(int drv, DEVICE *device)
248 d_slot[drv] = device;
251 void open_disk(int drv, const _TCHAR* file_path, int bank);
252 void close_disk(int drv);
253 bool is_disk_inserted(int drv);
254 void is_disk_protected(int drv, bool value);
255 bool is_disk_protected(int drv);