OSDN Git Service

[VM][FMTOWNS] Add FONT ROMS, MSDOS ROM, SYSTEM ROM and SERIAL ROM.
[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 VM;
18 class EMU;
19 class RP5C01 : public DEVICE
20 {
21 private:
22         // output signals
23         outputs_t outputs_alarm;
24         outputs_t outputs_pulse;
25         
26         dll_cur_time_t cur_time;
27         int register_id;
28         
29         uint8_t regs[16];
30         uint8_t time[13];
31 //#ifndef HAS_RP5C15
32         uint8_t ram[26];
33         bool modified;
34 //#endif
35         bool alarm, pulse_1hz, pulse_16hz;
36         int count_16hz;
37
38         bool __HAS_RP5C15;
39         
40         void update_pulse();
41         void read_from_cur_time();
42         void write_to_cur_time();
43         
44 public:
45         RP5C01(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
46         {
47                 initialize_output_signals(&outputs_alarm);
48                 initialize_output_signals(&outputs_pulse);
49                 set_device_name(_T("RP-5C01 RTC"));
50         }
51         ~RP5C01() {}
52         
53         // common functions
54         void initialize();
55         void release();
56         void write_io8(uint32_t addr, uint32_t data);
57         uint32_t read_io8(uint32_t addr);
58         void event_callback(int event_id, int err);
59         bool process_state(FILEIO* state_fio, bool loading);
60         
61         // unique functions
62         void set_context_alarm(DEVICE* device, int id, uint32_t mask)
63         {
64                 register_output_signal(&outputs_alarm, device, id, mask);
65         }
66         void set_context_pulse(DEVICE* device, int id, uint32_t mask)
67         {
68                 register_output_signal(&outputs_pulse, device, id, mask);
69         }
70 };
71
72 #endif
73