2 SHARP MZ-5500 Emulator 'EmuZ-5500'
4 Author : Takeda.Toshiya
10 #ifndef _MZ5500_MEMORY_H_
11 #define _MZ5500_MEMORY_H_
14 #include "../../emu.h"
15 #include "../device.h"
17 #define SIG_MEMORY_BANK 0
19 class MZ5500_MEMORY : public DEVICE
24 uint8_t* rbank[64]; // 1MB / 16KB
29 uint8_t ipl[0x8000]; // IPL 32KB
31 uint8_t ipl[0x4000]; // IPL 16KB
33 #if defined(_MZ6500) || defined(_MZ6550)
34 uint8_t ram[0x90000]; // Main RAM 640KB
36 uint8_t ram[0x80000]; // Main RAM 512KB
38 uint8_t vram[0x80000]; // VRAM 192KB + 1024B + padding
39 uint8_t kanji[0x40000]; // Kanji ROM 256KB
40 uint8_t dic[0x40000]; // Dictionary ROM 256KB
42 uint8_t dic2[0x100000]; // New Dictionary ROM 1MB
44 #if defined(_MZ6500) || defined(_MZ6550)
45 uint8_t mz1r32[0x100000]; // MZ-1R32 512KB * 2
48 uint32_t haddr; // DMAC high-order address latch
53 MZ5500_MEMORY(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
55 set_device_name(_T("Memory Bus"));
62 void write_data8(uint32_t addr, uint32_t data);
63 uint32_t read_data8(uint32_t addr);
64 void write_dma_data8(uint32_t addr, uint32_t data);
65 uint32_t read_dma_data8(uint32_t addr);
66 void write_signal(int id, uint32_t data, uint32_t mask);
67 void write_io8(uint32_t addr, uint32_t data);
68 uint32_t read_io8(uint32_t addr);
69 bool process_state(FILEIO* state_fio, bool loading);
72 void set_context_cpu(DEVICE* device)