OSDN Git Service

[INITIAL] Import 20141226 version of http://homepage3.nifty.com/takeda-toshiya/common...
[csp-qt/common_source_project-fm7.git] / source / src / vm / mz80k / memory.h
diff --git a/source/src/vm/mz80k/memory.h b/source/src/vm/mz80k/memory.h
new file mode 100644 (file)
index 0000000..3550bda
--- /dev/null
@@ -0,0 +1,94 @@
+/*\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