OSDN Git Service

[VM][FM7][JCOMMCARD] JCOMMCARD has no backup battery.Not save ram.Thanks to Ryu Takegami.
[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 #include "../../common.h"
10
11 class MC6809;
12
13 class FM7_JCOMMCARD : public DEVICE {
14 private:
15         MC6809 *cpu;
16         
17         uint8_t n_bank;
18         uint8_t rcb_address;
19         pair_t kanji_address;
20         
21         bool jis78_emulation;
22
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         
33         bool patch_jis78(void);
34 public:
35         FM7_JCOMMCARD(VM *parent_vm, EMU *parent_emu);
36         ~FM7_JCOMMCARD();
37         void initialize(void);
38         void release(void);
39         
40         void reset(void);
41         void write_signal(int id, uint32_t data, uint32_t mask);
42         /* 
43          *  I/O port:
44      * Read:   $FD28 : SYNC Flag (JSUB HALTED = 0x7F)
45      *         $FD29 : RCB Data.
46      *         $FD2A : KANJI ROM UPPER
47      *         $FD2B : KANJI ROM LOWER
48      *
49      * Write : $FD28 : KANJI ROM ADDRESS LOWER
50      *         $FD29 : KANJI ROM ADDRESS UPPER
51      *         $FD2A : Bit7: "0" = HALTREQ. Clear address.
52      *         $FD2B : Write Data to RCB.
53      */
54         uint32_t read_io8(uint32_t address);
55         void write_io8(uint32_t address, uint32_t data);
56         uint32_t read_data8(uint32_t address);
57         void write_data8(uint32_t address, uint32_t data);
58
59         void set_context_cpu(MC6809 *p) {
60                 cpu = p;
61         }
62         void save_state(FILEIO *state_fio);
63         bool load_state(FILEIO *state_fio);
64
65         
66 };
67