OSDN Git Service

45aa9c20fe5bdc886417783fe74c2020d3e8fb78
[csp-qt/common_source_project-fm7.git] / source / src / vm / j3100 / slmemory.h
1 /*\r
2         TOSHIBA J-3100SL Emulator 'eJ-3100SL'\r
3 \r
4         Author : Takeda.Toshiya\r
5         Date   : 2011.08.16-\r
6 \r
7         [ memory ]\r
8 */\r
9 \r
10 #ifndef _SL_MEMORY_H_\r
11 #define _SL_MEMORY_H_\r
12 \r
13 #include "../vm.h"\r
14 #include "../../emu.h"\r
15 #include "../device.h"\r
16 \r
17 class MEMORY : public DEVICE\r
18 {\r
19 private:\r
20         uint8* rbank[512];      // 1MB / 2KB\r
21         uint8* wbank[512];\r
22         uint8 wdmy[0x800];\r
23         uint8 rdmy[0x800];\r
24         uint8 ram[0xa0000];     // RAM 640KB\r
25         uint8 vram[0x8000];     // VRAM 32KB\r
26         uint8 ems[0x4000*56];   // EMS 16KB * 56\r
27         uint8 kanji[0x100000];  // KANJI ROM 1MB\r
28 #ifdef _J3100SE\r
29         uint8 backup[0x4000];   // Backuped RAM 16KB\r
30         uint8 ipl[0xc000];      // IPL 48KB\r
31 #else\r
32         uint8 backup[0x800];    // Backuped RAM 2KB\r
33         uint8 ipl[0x8000];      // IPL 32KB\r
34 #endif\r
35         \r
36         int kanji_bank;\r
37         \r
38         int ems_index;\r
39         int ems_regs[2];\r
40         int ems_page[4];\r
41         int ems_bsl;\r
42         \r
43         uint32 ems_crc32;\r
44         uint32 backup_crc32;\r
45         \r
46         void update_ems(int page);\r
47         \r
48 public:\r
49         MEMORY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu) {}\r
50         ~MEMORY() {}\r
51         \r
52         // common functions\r
53         void initialize();\r
54         void release();\r
55         void reset();\r
56         void write_data8(uint32 addr, uint32 data);\r
57         uint32 read_data8(uint32 addr);\r
58         void write_io8(uint32 addr, uint32 data);\r
59         uint32 read_io8(uint32 addr);\r
60         \r
61         // unitque function\r
62         uint8* get_vram()\r
63         {\r
64                 return vram;\r
65         }\r
66 };\r
67 \r
68 #endif\r
69 \r