OSDN Git Service

[VM][FMTOWNS] Add FONT ROMS, MSDOS ROM, SYSTEM ROM and SERIAL ROM.
[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 - 0x000effff]
8 */
9
10 #pragma once
11
12 #include "../../common.h"
13 #include "../device.h"
14
15 #define SIG_FMTOWNS_DICTSEL 0x1000
16 #define SIG_FMTOWNS_DICTBANK 0x1001
17
18 namespace FMTOWNS {
19
20 class DICTIONARY : public DEVICE
21 {
22 protected:
23         DEVICE *d_sysrom;
24         
25         uint8_t dict_rom[0x80000]; // 512KB
26         uint8_t dict_ram[0x2000];  // 2 + 6KB
27         uint8_t ram_0d0[0x20000]; // 128KB
28
29         bool bankd0_dict;
30         uint8_t dict_bank;
31         int wait_val;
32
33         bool cmos_dirty;
34
35 public:
36         DICTIONARY(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
37         {
38                 set_device_name("FM-Towns Dictionary ROM/RAM 0x000d0000 - 0x000effff with CMOS RAM");
39         }
40         ~DICTIONARY() {}
41         void initialize();
42         void release();
43         void reset();
44
45         uint32_t read_data8(uint32_t addr);
46         uint32_t read_data16(uint32_t addr);
47         uint32_t read_data32(uint32_t addr);
48
49         uint32_t read_data8w(uint32_t addr, int* wait);
50         uint32_t read_data16w(uint32_t addr, int* wait);
51         uint32_t read_data32w(uint32_t addr, int* wait);
52
53         void write_data8(uint32_t addr, uint32_t data);
54         void write_data16(uint32_t addr, uint32_t data);
55         void write_data32(uint32_t addr, uint32_t data);
56
57         void write_data8w(uint32_t addr, uint32_t data, int* wait);
58         void write_data16w(uint32_t addr, uint32_t data, int* wait);
59         void write_data32w(uint32_t addr, uint32_t data, int* wait);
60
61         void write_io8(uint32_t addr, uint32_t data);
62         void read_io8(uint32_t addr, uint32_t data);
63
64         void write_signal(int ch, uint32_t data, uint32_t mask);
65         uint32_t read_signal(int ch);
66
67         bool process_state(FILEIO* state_fio, bool loading);
68
69         void set_context_sysrom(DEVICE* dev)
70         {
71                 d_sysrom = dev;
72         }
73 };
74
75 }
76
77 // END