OSDN Git Service

[VM][WIP][STATE] Updating state framework to upstream 2018-10-05.Still may cause...
[csp-qt/common_source_project-fm7.git] / source / src / vm / hd146818p.h
1 /*
2         Skelton for retropc emulator
3
4         Author : Takeda.Toshiya
5         Date   : 2006.10.11 -
6
7         [ HD146818P ]
8 */
9
10 #ifndef _HD146818P_H_
11 #define _HD146818P_H_
12
13 //#include "vm.h"
14 //#include "../emu.h"
15 #include "device.h"
16
17 class VM;
18 class EMU;
19 class HD146818P : public DEVICE
20 {
21 private:
22         // output signals
23         outputs_t outputs_intr;
24         outputs_t outputs_sqw;
25         
26         dll_cur_time_t cur_time;
27         int register_id_1sec;
28         
29         uint8_t regs[0x40];
30         int ch, period, register_id_sqw;
31         bool intr, sqw, modified;
32         
33         void read_from_cur_time();
34         void write_to_cur_time();
35         void check_alarm();
36         void update_intr();
37         
38 public:
39         HD146818P(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
40         {
41                 initialize_output_signals(&outputs_intr);
42                 initialize_output_signals(&outputs_sqw);
43                 set_device_name(_T("HD146818P RTC"));
44         }
45         ~HD146818P() {}
46         
47         // common functions
48         void initialize();
49         void release();
50         void reset();
51         void write_io8(uint32_t addr, uint32_t data);
52         uint32_t read_io8(uint32_t addr);
53         void event_callback(int event_id, int err);
54         bool process_state(FILEIO* state_fio, bool loading);
55         
56         // unique functions
57         void set_context_intr(DEVICE* device, int id, uint32_t mask)
58         {
59                 register_output_signal(&outputs_intr, device, id, mask);
60         }
61         void set_context_sqw(DEVICE* device, int id, uint32_t mask)
62         {
63                 register_output_signal(&outputs_sqw, device, id, mask);
64         }
65 };
66
67 #endif
68