OSDN Git Service

[DOC] For release 2017-01-24.
[csp-qt/common_source_project-fm7.git] / source / src / vm / ls393.h
1 /*
2         Skelton for retropc emulator
3
4         Author : Takeda.Toshiya
5         Date   : 2008.04.11-
6
7         [ 74LS393 ]
8 */
9
10 #ifndef _LS393_H_
11 #define _LS393_H_
12
13 #include "vm.h"
14 #include "../emu.h"
15 #include "device.h"
16
17 #define SIG_LS393_CLK   0
18
19 class LS393 : public DEVICE
20 {
21 private:
22         // output signals
23         outputs_t outputs[8];
24         
25         uint32_t count;
26         bool prev_in;
27         
28 public:
29         LS393(VM* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
30         {
31                 for(int i = 0; i < 8; i++) {
32                         initialize_output_signals(&outputs[i]);
33                 }
34                 count = 0;
35                 prev_in = false;
36                 set_device_name(_T("74LS393 4-STAGE COUNTER"));
37         }
38         ~LS393() {}
39         
40         // common functions
41         void write_signal(int id, uint32_t data, uint32_t mask);
42         void save_state(FILEIO* state_fio);
43         bool load_state(FILEIO* state_fio);
44         
45         // unique functions
46         void set_context_1qa(DEVICE* device, int id, uint32_t mask)
47         {
48                 register_output_signal(&outputs[0], device, id, mask);
49         }
50         void set_context_1qb(DEVICE* device, int id, uint32_t mask)
51         {
52                 register_output_signal(&outputs[1], device, id, mask);
53         }
54         void set_context_1qc(DEVICE* device, int id, uint32_t mask)
55         {
56                 register_output_signal(&outputs[2], device, id, mask);
57         }
58         void set_context_1qd(DEVICE* device, int id, uint32_t mask)
59         {
60                 register_output_signal(&outputs[3], device, id, mask);
61         }
62         void set_context_2qa(DEVICE* device, int id, uint32_t mask)
63         {
64                 register_output_signal(&outputs[4], device, id, mask);
65         }
66         void set_context_2qb(DEVICE* device, int id, uint32_t mask)
67         {
68                 register_output_signal(&outputs[5], device, id, mask);
69         }
70         void set_context_2qc(DEVICE* device, int id, uint32_t mask)
71         {
72                 register_output_signal(&outputs[6], device, id, mask);
73         }
74         void set_context_2qd(DEVICE* device, int id, uint32_t mask)
75         {
76                 register_output_signal(&outputs[7], device, id, mask);
77         }
78 };
79
80 #endif
81