2 SHARP MZ-700 Emulator 'EmuZ-700'
3 SHARP MZ-800 Emulator 'EmuZ-800'
4 SHARP MZ-1500 Emulator 'EmuZ-1500'
6 Author : Takeda.Toshiya
12 #ifndef _MZ700_MEMORY_H_
13 #define _MZ700_MEMORY_H_
16 #include "../../emu.h"
17 #include "../device.h"
25 class MEMORY : public DEVICE
28 DEVICE *d_cpu, *d_pit, *d_pio;
32 #if defined(_MZ700) || defined(_MZ1500)
42 uint8_t ipl[0x1000]; // IPL 4KB
44 uint8_t ext[0x2000]; // MZ-800 IPL 8KB
45 #elif defined(_MZ1500)
46 uint8_t ext[0x1800]; // MZ-1500 EXT 6KB
48 uint8_t font[0x1000]; // CGROM 4KB
50 uint8_t pcg[0x1000]; // PCG-700 2KB + Lower CGROM 2KB
51 #elif defined(_MZ1500)
52 uint8_t pcg[0x6000]; // MZ-1500 PCG 8KB * 3
54 uint8_t ram[0x10000]; // Main RAM 64KB
56 uint8_t vram[0x8000]; // MZ-800 VRAM 32KB
58 uint8_t vram[0x1000]; // MZ-700/1500 VRAM 4KB
68 uint32_t vram_addr_top;
70 #elif defined(_MZ1500)
74 void update_map_low();
75 void update_map_middle();
76 void update_map_high();
78 int __FASTCALL vram_page_mask(uint8_t f);
79 int __FASTCALL vram_addr(int addr);
86 uint8_t palette_sw, palette[4], palette16[16];
87 #elif defined(_MZ1500)
88 uint8_t priority, palette[8];
93 #if defined(_MZ700) || defined(_MZ1500)
99 void __FASTCALL set_vblank(bool val);
100 void __FASTCALL set_hblank(bool val);
104 uint8_t screen[200][640];
105 scrntype_t palette_mz800_pc[16];
107 uint8_t screen[200][320];
109 scrntype_t palette_pc[8];
112 void __FASTCALL draw_line_320x200_2bpp(int v);
113 void __FASTCALL draw_line_320x200_4bpp(int v);
114 void __FASTCALL draw_line_640x200_1bpp(int v);
115 void __FASTCALL draw_line_640x200_2bpp(int v);
116 void __FASTCALL draw_line_mz700(int v);
118 void __FASTCALL draw_line(int v);
121 MEMORY(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
123 set_device_name(_T("Memory Bus"));
131 void update_config();
133 void event_vline(int v, int clock);
134 void __FASTCALL event_callback(int event_id, int err);
135 void __FASTCALL write_data8(uint32_t addr, uint32_t data);
136 uint32_t __FASTCALL read_data8(uint32_t addr);
137 void __FASTCALL write_data8w(uint32_t addr, uint32_t data, int* wait);
138 uint32_t __FASTCALL read_data8w(uint32_t addr, int* wait);
139 void __FASTCALL write_io8(uint32_t addr, uint32_t data);
141 uint32_t __FASTCALL read_io8(uint32_t addr);
143 bool process_state(FILEIO* state_fio, bool loading);
146 void set_context_cpu(DEVICE* device)
150 void set_context_pit(DEVICE* device)
154 void set_context_pio(DEVICE* device)
159 void set_context_pio_int(DEVICE* device)
164 #if defined(_MZ700) || defined(_MZ1500)
165 void set_context_joystick(DEVICE* device)