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
36 class SLOT0 : public DEVICE
48 SLOT0(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
50 set_device_name(_T("Slot #0"));
56 void __FASTCALL write_data8(uint32_t addr, uint32_t data);
57 uint32_t __FASTCALL read_data8(uint32_t addr);
58 bool process_state(FILEIO* state_fio, bool loading);
63 class SLOT1 : public DEVICE
77 SLOT1(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
79 set_device_name(_T("Slot #1"));
85 void __FASTCALL write_data8(uint32_t addr, uint32_t data);
86 uint32_t __FASTCALL read_data8(uint32_t addr);
87 bool process_state(FILEIO* state_fio, bool loading);
90 void open_cart(const _TCHAR *file_path);
92 bool is_cart_inserted()
101 class SLOT2 : public DEVICE
104 DEVICE *d_cpu, *d_ldp, *d_vdp;
106 uint8_t wdmy[0x2000];
107 uint8_t rdmy[0x2000];
116 bool pc4, mute_l, mute_r;
119 SLOT2(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
121 set_device_name(_T("Slot #2"));
128 void __FASTCALL write_data8(uint32_t addr, uint32_t data);
129 uint32_t __FASTCALL read_data8(uint32_t addr);
130 void __FASTCALL write_signal(int id, uint32_t data, uint32_t mask);
131 void __FASTCALL event_callback(int event_id, int err);
132 bool process_state(FILEIO* state_fio, bool loading);
135 void set_context_cpu(DEVICE* device)
139 void set_context_ldp(DEVICE* device)
143 void set_context_vdp(DEVICE* device)
149 class SLOT2 : public DEVICE
152 uint8_t wdmy[0x2000];
153 uint8_t rdmy[0x2000];
159 SLOT2(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
161 set_device_name(_T("Slot #2"));
167 void __FASTCALL write_data8(uint32_t addr, uint32_t data);
168 uint32_t __FASTCALL read_data8(uint32_t addr);
174 class SLOT3 : public DEVICE
177 uint8_t wdmy[0x2000];
178 uint8_t rdmy[0x2000];
181 uint8_t rom[0x10000];
182 uint8_t ram[0x20000];
187 SLOT3(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
189 set_device_name(_T("Slot #3"));
195 void __FASTCALL write_data8(uint32_t addr, uint32_t data);
196 uint32_t __FASTCALL read_data8(uint32_t addr);
197 void __FASTCALL write_io8(uint32_t addr, uint32_t data);
198 bool process_state(FILEIO* state_fio, bool loading);
201 void open_cart(const _TCHAR *file_path);
203 bool is_cart_inserted()
211 class MSX_MEMORY : public DEVICE
217 DISK* disk[MAX_DRIVE];
218 bool access[MAX_DRIVE]
220 uint32_t slot_select;
221 void update_map(uint32_t val);
224 MSX_MEMORY(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
226 set_device_name(_T("Memory Bus"));
236 void __FASTCALL write_data8(uint32_t addr, uint32_t data);
237 uint32_t __FASTCALL read_data8(uint32_t addr);
238 uint32_t __FASTCALL fetch_op(uint32_t addr, int* wait);
239 void __FASTCALL write_io8(uint32_t addr, uint32_t data);
240 void __FASTCALL write_signal(int id, uint32_t data, uint32_t mask);
242 uint32_t __FASTCALL read_signal(int id);
243 bool bios_ret_z80(uint16_t PC, pair32_t* af, pair32_t* bc, pair32_t* de, pair32_t* hl, pair32_t* ix, pair32_t* iy, uint8_t* iff1);
245 bool process_state(FILEIO* state_fio, bool loading);
248 void set_context_slot(int drv, DEVICE *device)
250 d_slot[drv] = device;
253 void open_disk(int drv, const _TCHAR* file_path, int bank);
254 void close_disk(int drv);
255 bool is_disk_inserted(int drv);
256 void is_disk_protected(int drv, bool value);
257 bool is_disk_protected(int drv);