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 / rp5c01.h
1 /*
2         Skelton for retropc emulator
3
4         Author : Takeda.Toshiya
5         Date   : 2008.04.11-
6
7         [ RP-5C01 / RP-5C15 ]
8 */
9
10 #ifndef _RP5C01_H_
11 #define _RP5C01_H_
12
13 //#include "vm.h"
14 //#include "../emu.h"
15 #include "device.h"
16
17 class  DLL_PREFIX RP5C01 : public DEVICE
18 {
19 private:
20         // output signals
21         outputs_t outputs_alarm;
22         outputs_t outputs_pulse;
23         
24         dll_cur_time_t cur_time;
25         int register_id;
26         
27         uint8_t regs[16];
28         uint8_t time[13];
29 //#ifndef HAS_RP5C15
30         uint8_t ram[26];
31         bool modified;
32 //#endif
33         bool alarm, pulse_1hz, pulse_16hz;
34         int count_16hz;
35
36         bool __HAS_RP5C15;
37         
38         void __FASTCALL update_pulse();
39         void __FASTCALL read_from_cur_time();
40         void __FASTCALL write_to_cur_time();
41         
42 public:
43         RP5C01(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
44         {
45                 initialize_output_signals(&outputs_alarm);
46                 initialize_output_signals(&outputs_pulse);
47                 set_device_name(_T("RP-5C01 RTC"));
48         }
49         ~RP5C01() {}
50         
51         // common functions
52         void initialize();
53         void release();
54         void __FASTCALL write_io8(uint32_t addr, uint32_t data);
55         uint32_t __FASTCALL read_io8(uint32_t addr);
56         void __FASTCALL event_callback(int event_id, int err);
57         bool process_state(FILEIO* state_fio, bool loading);
58         
59         // unique functions
60         void set_context_alarm(DEVICE* device, int id, uint32_t mask)
61         {
62                 register_output_signal(&outputs_alarm, device, id, mask);
63         }
64         void set_context_pulse(DEVICE* device, int id, uint32_t mask)
65         {
66                 register_output_signal(&outputs_pulse, device, id, mask);
67         }
68 };
69
70 #endif
71