OSDN Git Service

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