OSDN Git Service

[VM][FMTOWNS][MEMORY] Fix setup around memory banks by I/O 0404h and 0480h.
[csp-qt/common_source_project-fm7.git] / source / src / vm / fmr30 / rtc.h
1 /*
2         FUJITSU FMR-30 Emulator 'eFMR-30'
3
4         Author : Takeda.Toshiya
5         Date   : 2008.12.30 -
6
7         [ rtc ]
8 */
9
10 #ifndef _RTC_H_
11 #define _RTC_H_
12
13 #include "../vm.h"
14 #include "../../emu.h"
15 #include "../device.h"
16
17 namespace FMR30 {
18
19 class RTC : public DEVICE
20 {
21 private:
22         DEVICE* d_pic;
23
24         dll_cur_time_t cur_time;
25         int register_id;
26
27         uint16_t rtcmr, rtdsr, rtadr, rtobr, rtibr;
28         uint8_t regs[40];
29
30         void  read_from_cur_time();
31         void  write_to_cur_time();
32         void  update_checksum();
33         void  update_intr() override;
34 public:
35         RTC(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
36         {
37                 set_device_name(_T("RTC"));
38         }
39         ~RTC() {}
40
41         // common functions
42         void initialize() override;
43         void release() override;
44         void  __FASTCALL write_io8(uint32_t addr, uint32_t data) override;
45         uint32_t  __FASTCALL read_io8(uint32_t addr) override;
46         void  __FASTCALL write_io16(uint32_t addr, uint32_t data) override;
47         uint32_t  __FASTCALL read_io16(uint32_t addr) override;
48         void  __FASTCALL write_io16w(uint32_t addr, uint32_t data, int *wait) override;
49         uint32_t  __FASTCALL read_io16w(uint32_t addr, int *wait) override;
50         void __FASTCALL event_callback(int event_id, int err) override;
51         bool process_state(FILEIO* state_fio, bool loading) override;
52
53         // unique function
54         void set_context_pic(DEVICE* device)
55         {
56                 d_pic = device;
57         }
58 };
59
60 }
61 #endif