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;
39 uint8_t ipl[0x1000]; // IPL 4KB
41 uint8_t ext[0x2000]; // MZ-800 IPL 8KB
42 #elif defined(_MZ1500)
43 uint8_t ext[0x1800]; // MZ-1500 EXT 6KB
45 uint8_t font[0x1000]; // CGROM 4KB
47 uint8_t pcg[0x1000]; // PCG-700 2KB + Lower CGROM 2KB
48 #elif defined(_MZ1500)
49 uint8_t pcg[0x6000]; // MZ-1500 PCG 8KB * 3
51 uint8_t ram[0x10000]; // Main RAM 64KB
53 uint8_t vram[0x8000]; // MZ-800 VRAM 32KB
55 uint8_t vram[0x1000]; // MZ-700/1500 VRAM 4KB
65 uint32_t vram_addr_top;
67 #elif defined(_MZ1500)
71 void update_map_low();
72 void update_map_middle();
73 void update_map_high();
75 int vram_page_mask(uint8_t f);
76 int vram_addr(int addr);
83 uint8_t palette_sw, palette[4], palette16[16];
84 #elif defined(_MZ1500)
85 uint8_t priority, palette[8];
90 #if defined(_MZ700) || defined(_MZ1500)
96 void set_vblank(bool val);
97 void set_hblank(bool val);
101 uint8_t screen[200][640];
102 scrntype_t palette_mz800_pc[16];
104 uint8_t screen[200][320];
106 scrntype_t palette_pc[8];
109 void draw_line_320x200_2bpp(int v);
110 void draw_line_320x200_4bpp(int v);
111 void draw_line_640x200_1bpp(int v);
112 void draw_line_640x200_2bpp(int v);
113 void draw_line_mz700(int v);
115 void draw_line(int v);
119 MEMORY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
121 set_device_name(_T("Memory Bus"));
129 void update_config();
131 void event_vline(int v, int clock);
132 void event_callback(int event_id, int err);
133 void write_data8(uint32_t addr, uint32_t data);
134 uint32_t read_data8(uint32_t addr);
135 void write_data8w(uint32_t addr, uint32_t data, int* wait);
136 uint32_t read_data8w(uint32_t addr, int* wait);
137 void write_io8(uint32_t addr, uint32_t data);
139 uint32_t read_io8(uint32_t addr);
141 bool process_state(FILEIO* state_fio, bool loading);
144 void set_context_cpu(DEVICE* device)
148 void set_context_pit(DEVICE* device)
152 void set_context_pio(DEVICE* device)
157 void set_context_pio_int(DEVICE* device)