OSDN Git Service

[General] Tracking to upstream, rev 2015-01-14.
[csp-qt/common_source_project-fm7.git] / source / src / vm / mz80k / memory.h
1 /*\r
2         SHARP MZ-80K Emulator 'EmuZ-80K'\r
3         SHARP MZ-1200 Emulator 'EmuZ-1200'\r
4 \r
5         Author : Takeda.Toshiya\r
6         Date   : 2010.08.18-\r
7 \r
8         SHARP MZ-80A Emulator 'EmuZ-80A'\r
9         Modify : Hideki Suga\r
10         Date   : 2014.12.10 -\r
11 \r
12         [ memory ]\r
13 */\r
14 \r
15 #ifndef _MEMORY_H_\r
16 #define _MEMORY_H_\r
17 \r
18 #include "../vm.h"\r
19 #include "../../emu.h"\r
20 #include "../device.h"\r
21 \r
22 #if defined(SUPPORT_MZ80AIF)\r
23 #define SIG_MEMORY_FDC_IRQ      1\r
24 #define SIG_MEMORY_FDC_DRQ      2\r
25 #endif\r
26 \r
27 class MEMORY : public DEVICE\r
28 {\r
29 private:\r
30         DEVICE *d_ctc, *d_pio;\r
31 #if defined(_MZ1200) || defined(_MZ80A)\r
32         DEVICE *d_disp;\r
33 #endif\r
34         \r
35         uint8* rbank[64];\r
36         uint8* wbank[64];\r
37         uint8 wdmy[0x400];\r
38         uint8 rdmy[0x400];\r
39         \r
40         uint8 ram[0xd000];      // RAM 48KB + swap 4KB\r
41 #if defined(_MZ1200) || defined(_MZ80A)\r
42         uint8 vram[0x800];      // VRAM 2KB\r
43 #else\r
44         uint8 vram[0x400];      // VRAM 1KB\r
45 #endif\r
46         uint8 ipl[0x1000];      // IPL 4KB\r
47 #if defined(_MZ1200) || defined(_MZ80A)\r
48         uint8 ext[0x800];       // EXT 2KB\r
49 #endif\r
50         \r
51         bool tempo, blink;\r
52 #if defined(_MZ1200) || defined(_MZ80A)\r
53         bool hblank;\r
54         bool memory_swap;\r
55         void update_memory_swap();\r
56 #endif\r
57 #if defined(_MZ80A)\r
58         uint8 e200;             // scroll\r
59 #endif\r
60         \r
61 #if defined(SUPPORT_MZ80AIF)\r
62         uint8 fdif[0x800];      // FD IF ROM 2KB\r
63         bool fdc_irq, fdc_drq;\r
64         void update_fdif_rom_bank();\r
65 #endif\r
66         \r
67 public:\r
68         MEMORY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}\r
69         ~MEMORY() {}\r
70         \r
71         // common functions\r
72         void initialize();\r
73         void reset();\r
74         void event_vline(int v, int clock);\r
75         void event_callback(int event_id, int err);\r
76         void write_data8(uint32 addr, uint32 data);\r
77         uint32 read_data8(uint32 addr);\r
78 #if defined(SUPPORT_MZ80AIF)\r
79         void write_signal(int id, uint32 data, uint32 mask);\r
80 #endif\r
81         void save_state(FILEIO* state_fio);\r
82         bool load_state(FILEIO* state_fio);\r
83         \r
84         // unitque functions\r
85         void set_context_ctc(DEVICE* device)\r
86         {\r
87                 d_ctc = device;\r
88         }\r
89         void set_context_pio(DEVICE* device)\r
90         {\r
91                 d_pio = device;\r
92         }\r
93 #if defined(_MZ1200) || defined(_MZ80A)\r
94         void set_context_disp(DEVICE* device)\r
95         {\r
96                 d_disp = device;\r
97         }\r
98 #endif\r
99 #if defined(_MZ80A)\r
100         uint8* get_e200()\r
101         {\r
102                 return &e200;\r
103         }\r
104 #endif\r
105         uint8* get_vram()\r
106         {\r
107                 return vram;\r
108         }\r
109 };\r
110 \r
111 #endif\r
112 \r