OSDN Git Service

[VM] .
[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();
34 public:
35         RTC(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
36         {
37                 set_device_name(_T("RTC"));
38         }
39         ~RTC() {}
40         
41         // common functions
42         void initialize();
43         void release();
44         void write_io8(uint32_t addr, uint32_t data)
45         {
46                 write_io16(addr, data);
47         }
48         uint32_t read_io8(uint32_t addr)
49         {
50                 return (uint8_t)read_io16(addr);
51         }
52         void write_io16(uint32_t addr, uint32_t data);
53         uint32_t read_io16(uint32_t addr);
54         void event_callback(int event_id, int err);
55         bool process_state(FILEIO* state_fio, bool loading);
56         
57         // unique function
58         void set_context_pic(DEVICE* device)
59         {
60                 d_pic = device;
61         }
62 };
63
64 }
65 #endif
66