--- /dev/null
+/*\r
+ SHARP MZ-80K Emulator 'EmuZ-80K'\r
+ SHARP MZ-1200 Emulator 'EmuZ-1200'\r
+\r
+ Author : Takeda.Toshiya\r
+ Date : 2010.08.18-\r
+\r
+ SHARP MZ-80A Emulator 'EmuZ-80A'\r
+ Modify : Hideki Suga\r
+ Date : 2014.12.10 -\r
+\r
+ [ memory ]\r
+*/\r
+\r
+#ifndef _MEMORY_H_\r
+#define _MEMORY_H_\r
+\r
+#include "../vm.h"\r
+#include "../../emu.h"\r
+#include "../device.h"\r
+\r
+class MEMORY : public DEVICE\r
+{\r
+private:\r
+ DEVICE *d_ctc, *d_pio;\r
+#if defined(_MZ1200) || defined(_MZ80A)\r
+ DEVICE *d_disp;\r
+#endif\r
+ \r
+ uint8* rbank[64];\r
+ uint8* wbank[64];\r
+ uint8 wdmy[0x400];\r
+ uint8 rdmy[0x400];\r
+ \r
+ uint8 ram[0xd000]; // RAM 48KB + swap 4KB\r
+#if defined(_MZ80A)\r
+ uint8 e200; // scroll\r
+ uint8 vram[0x800]; // VRAM 2KB\r
+#else\r
+ uint8 vram[0x400]; // VRAM 1KB\r
+#endif\r
+\r
+ uint8 ipl[0x1000]; // IPL 4KB\r
+#if defined(_MZ1200) || defined(_MZ80A)\r
+ uint8 ext[0x1800]; // EXT 6KB1024\r
+#endif\r
+ \r
+ bool tempo, blink;\r
+#if defined(_MZ1200) || defined(_MZ80A)\r
+ bool hblank;\r
+#endif\r
+ \r
+public:\r
+ MEMORY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}\r
+ ~MEMORY() {}\r
+ \r
+ // common functions\r
+ void initialize();\r
+ void reset();\r
+ void event_vline(int v, int clock);\r
+ void event_callback(int event_id, int err);\r
+ \r
+ void write_data8(uint32 addr, uint32 data);\r
+ uint32 read_data8(uint32 addr);\r
+ \r
+ // unitque function\r
+ void set_context_ctc(DEVICE* device)\r
+ {\r
+ d_ctc = device;\r
+ }\r
+ void set_context_pio(DEVICE* device)\r
+ {\r
+ d_pio = device;\r
+ }\r
+#if defined(_MZ1200) || defined(_MZ80A)\r
+ void set_context_disp(DEVICE* device)\r
+ {\r
+ d_disp = device;\r
+ }\r
+#endif\r
+#if defined(_MZ80A)\r
+ uint8* get_e200()\r
+ {\r
+ return &e200;\r
+ }\r
+#endif\r
+ uint8* get_vram()\r
+ {\r
+ return vram;\r
+ }\r
+};\r
+\r
+#endif\r
+\r