OSDN Git Service

[VM][FM7] Add Japanese communication board (日本語通信カード) .
[csp-qt/common_source_project-fm7.git] / source / src / vm / fm7 / jcommcard.h
1 /*
2  * Emulation of Fujitsu Japanese Communication Card.
3  * (C) 2018 K.Ohta.
4  * Note:
5  * Based on XM7 L70 , with permittion from Ryu Takegami. 
6  */
7
8 #include "../device.h"
9 class MC6809;
10
11 class FM7_JCOMMCARD : public DEVICE {
12 private:
13         MC6809 *cpu;
14         
15         uint8_t n_bank;
16         uint8_t rcb_address;
17         uint32_t kanji_address;
18         
19         bool jis78_emulation;
20
21         bool cpu_ba;
22         bool cpu_bs;
23         bool halted;
24
25         bool modified;
26         bool firmware_ok;
27         
28         uint8_t prog_rom[0x4000];
29         uint8_t dict_rom[0x40000];
30         uint8_t kanji_rom[0x20000];
31         uint8_t backup_ram[0x2000];
32 public:
33         FM7_JCOMMCARD(VM *parent_vm, EMU *parent_emu);
34         ~FM7_JCOMMCARD();
35         void initialize(void);
36         void release(void);
37         
38         void reset(void);
39         void write_signal(int id, uint32_t data, uint32_t mask);
40         /* 
41          *  I/O port:
42      * Read:   $FD28 : SYNC Flag (JSUB HALTED = 0x7F)
43      *         $FD29 : RCB Data.
44      *         $FD2A : KANJI ROM UPPER
45      *         $FD2B : KANJI ROM LOWER
46      *
47      * Write : $FD28 : KANJI ROM ADDRESS LOWER
48      *         $FD29 : KANJI ROM ADDRESS UPPER
49      *         $FD2A : Bit7: "0" = HALTREQ. Clear address.
50      *         $FD2B : Write Data to RCB.
51      */
52         uint32_t read_io8(uint32_t address);
53         void write_io8(uint32_t address, uint32_t data);
54         uint32_t read_data8(uint32_t address);
55         void write_data8(uint32_t address, uint32_t data);
56
57         void set_context_cpu(MC6809 *p) {
58                 cpu = p;
59         }
60         void save_state(FILEIO *state_fio);
61         bool load_state(FILEIO *state_fio);
62
63         
64 };
65