OSDN Git Service

[GENERAL] Merge upstream 2018-02-27.
[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 class RTC : public DEVICE
18 {
19 private:
20         DEVICE* d_pic;
21         
22         dll_cur_time_t cur_time;
23         int register_id;
24         
25         uint16_t rtcmr, rtdsr, rtadr, rtobr, rtibr;
26         uint8_t regs[40];
27         
28         void read_from_cur_time();
29         void write_to_cur_time();
30         void update_checksum();
31         void update_intr();
32 public:
33         RTC(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
34         {
35                 set_device_name(_T("RTC"));
36         }
37         ~RTC() {}
38         
39         // common functions
40         void initialize();
41         void release();
42         void write_io8(uint32_t addr, uint32_t data)
43         {
44                 write_io16(addr, data);
45         }
46         uint32_t read_io8(uint32_t addr)
47         {
48                 return (uint8_t)read_io16(addr);
49         }
50         void write_io16(uint32_t addr, uint32_t data);
51         uint32_t read_io16(uint32_t addr);
52         void event_callback(int event_id, int err);
53         void save_state(FILEIO* state_fio);
54         bool load_state(FILEIO* state_fio);
55         
56         // unique function
57         void set_context_pic(DEVICE* device)
58         {
59                 d_pic = device;
60         }
61 };
62
63 #endif
64