OSDN Git Service

[VM][Qt][LOGGER] Add setting on/off per device.
[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         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         
46 public:
47         UPD1990A(VM* 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 #ifdef HAS_UPD4990A
58                 shift_cmd = 0;
59 #endif
60                 set_device_name(_T("uPD1990A"));
61         }
62         ~UPD1990A() {}
63         
64         // common functions
65         void initialize();
66         void write_signal(int id, uint32_t data, uint32_t mask);
67         uint32_t read_signal(int ch)
68         {
69                 return dout;
70         }
71         void event_callback(int event_id, int err);
72         void save_state(FILEIO* state_fio);
73         bool load_state(FILEIO* state_fio);
74         // unique functions
75         void set_context_dout(DEVICE* device, int id, uint32_t mask)
76         {
77                 register_output_signal(&outputs_dout, device, id, mask);
78         }
79         void set_context_tp(DEVICE* device, int id, uint32_t mask)
80         {
81                 register_output_signal(&outputs_tp, device, id, mask);
82         }
83 };
84
85 #endif
86