OSDN Git Service

[VM][FMTOWNS][MEMORY] Fix setup around memory banks by I/O 0404h and 0480h.
[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  DLL_PREFIX HD146818P : public DEVICE
18 {
19 private:
20         // output signals
21         outputs_t outputs_intr;
22         outputs_t outputs_sqw;
23         
24         dll_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_TEMPLATE* parent_vm, EMU_TEMPLATE* 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 __FASTCALL write_io8(uint32_t addr, uint32_t data);
50         uint32_t __FASTCALL read_io8(uint32_t addr);
51         void __FASTCALL event_callback(int event_id, int err);
52         bool process_state(FILEIO* state_fio, bool loading);
53         
54         // unique functions
55         void set_context_intr_line(DEVICE* device, int id, uint32_t mask)
56         {
57                 register_output_signal(&outputs_intr, device, id, mask);
58         }
59         void set_context_sqw(DEVICE* device, int id, uint32_t mask)
60         {
61                 register_output_signal(&outputs_sqw, device, id, mask);
62         }
63 };
64
65 #endif
66