OSDN Git Service

[VM][COMMON_VM] Include IO:: class to common_vm.
[csp-qt/common_source_project-fm7.git] / source / src / vm / msm58321.h
1 /*
2         Skelton for retropc emulator
3
4         Author : Takeda.Toshiya
5         Date   : 2008.05.02-
6
7         [ MSM58321/MSM5832 ]
8 */
9
10 #ifndef _MSM58321_H_
11 #define _MSM58321_H_
12
13 //#include "vm.h"
14 //#include "../emu.h"
15 #include "device.h"
16
17 #define SIG_MSM58321_DATA       0
18 #define SIG_MSM58321_CS         1
19 #define SIG_MSM58321_READ       2
20 #define SIG_MSM58321_WRITE      3
21 // for MSM58321 only
22 #define SIG_MSM58321_ADDR_WRITE 4
23 // for MSM5832 only
24 #define SIG_MSM5832_ADDR        5
25 #define SIG_MSM5832_HOLD        6
26
27 class VM;
28 class EMU;
29 class MSM58321_BASE : public DEVICE
30 {
31 protected:
32         // output signals
33         outputs_t outputs_data;
34         
35         dll_cur_time_t cur_time;
36         int register_id;
37         
38         uint8_t regs[16];
39         uint8_t wreg, regnum;
40         bool cs, rd, wr, addr_wr, busy, hold;
41         int count_1024hz, count_1s, count_1m, count_1h;
42         
43         virtual void __FASTCALL read_from_cur_time();
44         virtual void __FASTCALL write_to_cur_time();
45         void __FASTCALL output_data();
46         virtual void __FASTCALL set_busy(bool val);
47         int start_day;
48         int start_year;
49 public:
50         MSM58321_BASE(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
51         {
52                 initialize_output_signals(&outputs_data);
53                 set_device_name(_T("MSM5832 RTC"));
54                 start_day = 0;
55                 start_year = 0;
56         }
57         ~MSM58321_BASE() {}
58         
59         // common functions
60         virtual void initialize();
61         void event_callback(int event_id, int err);
62         void __FASTCALL write_signal(int id, uint32_t data, uint32_t mask);
63         uint32_t __FASTCALL read_signal(int ch);
64         bool process_state(FILEIO* state_fio, bool loading);
65         
66         // unique functions
67         void set_context_data(DEVICE* device, int id, uint32_t mask, int shift)
68         {
69                 register_output_signal(&outputs_data, device, id, mask, shift);
70         }
71 };
72
73 class MSM58321: public MSM58321_BASE
74 {
75 protected:
76         outputs_t outputs_busy;
77         void __FASTCALL read_from_cur_time();
78         void __FASTCALL write_to_cur_time();
79         void __FASTCALL set_busy(bool val);
80 public:
81         MSM58321(VM_TEMPLATE* parent_vm, EMU* parent_emu);
82         ~MSM58321() {}
83         
84         void initialize();
85         void set_context_busy(DEVICE* device, int id, uint32_t mask)
86         {
87                 register_output_signal(&outputs_busy, device, id, mask);
88         }
89 };
90
91 class MSM5832: public MSM58321_BASE
92 {
93 protected:
94         void __FASTCALL read_from_cur_time();
95         void __FASTCALL write_to_cur_time();
96         void __FASTCALL set_busy(bool val);
97
98 public:
99         MSM5832(VM_TEMPLATE* parent_vm, EMU* parent_emu);
100         ~MSM5832() {}
101         
102         void initialize();
103 };
104         
105 #endif
106