OSDN Git Service

[DOC] For release 2017-01-24.
[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 HD146818P : public DEVICE
18 {
19 private:
20         // output signals
21         outputs_t outputs_intr;
22         outputs_t outputs_sqw;
23         
24         cur_time_t cur_time;
25         int register_id_1sec;
26         
27         uint8_t regs[0x40];
28         int ch, period, register_id_sqw;
29         bool intr, sqw, modified;
30         
31         void read_from_cur_time();
32         void write_to_cur_time();
33         void check_alarm();
34         void update_intr();
35         
36 public:
37         HD146818P(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
38         {
39                 initialize_output_signals(&outputs_intr);
40                 initialize_output_signals(&outputs_sqw);
41                 set_device_name(_T("HD146818P RTC"));
42         }
43         ~HD146818P() {}
44         
45         // common functions
46         void initialize();
47         void release();
48         void reset();
49         void write_io8(uint32_t addr, uint32_t data);
50         uint32_t read_io8(uint32_t addr);
51         void event_callback(int event_id, int err);
52         void save_state(FILEIO* state_fio);
53         bool load_state(FILEIO* state_fio);
54         
55         // unique functions
56         void set_context_intr(DEVICE* device, int id, uint32_t mask)
57         {
58                 register_output_signal(&outputs_intr, device, id, mask);
59         }
60         void set_context_sqw(DEVICE* device, int id, uint32_t mask)
61         {
62                 register_output_signal(&outputs_sqw, device, id, mask);
63         }
64 };
65
66 #endif
67