OSDN Git Service

6ff9ab369f4cef3b2e9c296e9ab9be8b05b08835
[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         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         ~RTC() {}
35         
36         // common functions
37         void initialize();
38         void release();
39         void write_io8(uint32_t addr, uint32_t data)
40         {
41                 write_io16(addr, data);
42         }
43         uint32_t read_io8(uint32_t addr)
44         {
45                 return (uint8_t)read_io16(addr);
46         }
47         void write_io16(uint32_t addr, uint32_t data);
48         uint32_t read_io16(uint32_t addr);
49         void event_callback(int event_id, int err);
50         void save_state(FILEIO* state_fio);
51         bool load_state(FILEIO* state_fio);
52         
53         // unique function
54         void set_context_pic(DEVICE* device)
55         {
56                 d_pic = device;
57         }
58 };
59
60 #endif
61