OSDN Git Service

47747e54d6774ca5890c59d38048a7948e855d87
[csp-qt/common_source_project-fm7.git] / source / src / vm / fmtowns / towns_dictionary.h
1 /*
2         FUJITSU FM Towns Emulator 'eFMTowns'
3
4         Author : Kyuma.Ohta <whatisthis.sowhat _at_ gmail.com>
5         Date   : 2019.01.09-
6
7         [ dictionary rom/ram & cmos & RAM area 0x000d0000 - 0x000dffff]
8         * MEMORY :
9         *   0x000d0000 - 0x000d7fff : DICTIONARY ROM (BANKED)
10         *   0x000d8000 - 0x000d9fff : DICTIONARY RAM / GAIJI RAM
11         *   0x000da000 - 0x000dffff : RESERVED
12         *   0xc2080000 - 0xc20fffff : DICTIONARY ROM (NOT BANKED)
13         *   0xc2140000 - 0xc2141fff : DICTIONARY RAM
14         * I/O : 
15         *   0x0484                         : DICTIONARY BANK (for 0xd0000 - 0xd7ffff)
16         *   0x3000 - 0x3ffe (even address) : DICTIONARY RAM
17 */
18
19 #pragma once
20
21 #include "../../common.h"
22 #include "../device.h"
23
24 #define SIG_FMTOWNS_DICT_BANK 1
25
26 namespace FMTOWNS {
27
28 class DICTIONARY : public DEVICE
29 {
30 protected:
31         uint8_t dict_rom[0x80000]; // 512KB
32         uint8_t dict_ram[0x2000];  // 2 + 6KB
33 //      uint8_t ram_d0[0x8000];  // 32KB
34
35         uint8_t dict_bank;
36         bool cmos_dirty;
37
38 public:
39         DICTIONARY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
40         {
41                 dict_bank = 0x00;
42                 cmos_dirty = false;
43                 set_device_name("FM-Towns Dictionary ROM/RAM 0x000d0000 - 0x000dffff with CMOS RAM");
44         }
45         ~DICTIONARY() {}
46         void initialize();
47         void release();
48         void reset();
49
50         uint32_t __FASTCALL read_memory_mapped_io8(uint32_t addr);
51         uint32_t __FASTCALL read_memory_mapped_io16(uint32_t addr);
52         uint32_t __FASTCALL read_memory_mapped_io32(uint32_t addr);
53         
54         void __FASTCALL write_memory_mapped_io8(uint32_t addr, uint32_t data);
55         void __FASTCALL write_memory_mapped_io16(uint32_t addr, uint32_t data);
56         void __FASTCALL write_memory_mapped_io32(uint32_t addr, uint32_t data);
57
58         void __FASTCALL write_io8(uint32_t addr, uint32_t data);
59         uint32_t __FASTCALL read_io8(uint32_t addr);
60
61         void __FASTCALL write_signal(int ch, uint32_t data, uint32_t mask);
62         uint32_t __FASTCALL read_signal(int ch);
63
64         bool process_state(FILEIO* state_fio, bool loading);
65 };
66
67 }
68
69 // END