OSDN Git Service

[VM] Add vm_template.h . This class, VM_TEMPLATE:: must be mother of VM:: .See fm7...
[csp-qt/common_source_project-fm7.git] / source / src / vm / upd1990a.h
1 /*
2         Skelton for retropc emulator
3
4         Author : Takeda.Toshiya
5         Date   : 2008.04.19-
6
7         [ uPD1990A / uPD4990A ]
8 */
9
10 #ifndef _UPD1990A_H_
11 #define _UPD1990A_H_
12
13 #define SIG_UPD1990A_CLK        0
14 #define SIG_UPD1990A_STB        1
15 #define SIG_UPD1990A_CMD        2
16 #define SIG_UPD1990A_C0         3
17 #define SIG_UPD1990A_C1         4
18 #define SIG_UPD1990A_C2         5
19 #define SIG_UPD1990A_DIN        6
20
21 //#include "vm.h"
22 //#include "../emu.h"
23 #include "device.h"
24
25 class UPD1990A : public DEVICE
26 {
27 private:
28         // output signals
29         outputs_t outputs_dout;
30         outputs_t outputs_tp;
31         
32         dll_cur_time_t cur_time;
33         int register_id_1sec;
34         
35         uint8_t cmd, mode, tpmode;
36         uint64_t shift_data;
37         bool clk, stb, din, hold, tp;
38         uint32_t dout;
39         bool dout_changed;
40         int register_id_tp;
41         
42 //#ifdef HAS_UPD4990A
43         uint8_t shift_cmd;
44 //#endif
45         bool __HAS_UPD4990A;    
46 public:
47         UPD1990A(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
48         {
49                 initialize_output_signals(&outputs_dout);
50                 initialize_output_signals(&outputs_tp);
51                 cmd = mode = tpmode = 0;
52                 shift_data = 0;
53                 clk = stb = din = tp = true;
54                 hold = false;
55                 dout = 0;
56                 dout_changed = false;
57                 __HAS_UPD4990A = false;
58 //#ifdef HAS_UPD4990A
59                 shift_cmd = 0;
60 //              set_device_name(_T("uPD4990A RTC"));
61 //#else
62                 set_device_name(_T("uPD1990A RTC"));
63 //#endif
64         }
65         ~UPD1990A() {}
66         
67         // common functions
68         void initialize();
69         void write_signal(int id, uint32_t data, uint32_t mask);
70         uint32_t read_signal(int ch)
71         {
72                 return dout;
73         }
74         void event_callback(int event_id, int err);
75         void decl_state();
76         void save_state(FILEIO* state_fio);
77         bool load_state(FILEIO* state_fio);
78         // unique functions
79         void set_context_dout(DEVICE* device, int id, uint32_t mask)
80         {
81                 register_output_signal(&outputs_dout, device, id, mask);
82         }
83         void set_context_tp(DEVICE* device, int id, uint32_t mask)
84         {
85                 register_output_signal(&outputs_tp, device, id, mask);
86         }
87 };
88
89 #endif
90