OSDN Git Service

1db6177075309f072c9b5c6bc82f9676a8a59c8d
[csp-qt/common_source_project-fm7.git] / source / src / vm / mz3500 / keyboard.h
1 /*
2         SHARP MZ-5500 Emulator 'EmuZ-5500'
3
4         Author : Takeda.Toshiya
5         Date   : 2008.04.10 -
6
7         [ keyboard ]
8 */
9
10 #ifndef _KEYBOARD_H_
11 #define _KEYBOARD_H_
12
13 #include "../vm.h"
14 #include "../../emu.h"
15 #include "../device.h"
16
17 #define SIG_KEYBOARD_ACKC       0
18 #define SIG_KEYBOARD_STC        1
19 #define SIG_KEYBOARD_DC         2
20
21 class FIFO;
22
23 class KEYBOARD : public DEVICE
24 {
25 private:
26         DEVICE *d_subcpu, *d_ls244;
27         const uint8_t *key_stat;
28         
29         FIFO *key_buf;
30         int phase;
31         uint16_t send_data;
32         uint32_t stc_clock;
33         uint8_t recv_data;
34         bool recv_ok;
35         bool stc, dc;
36         bool caps, kana;
37         bool pro_mode;
38         
39         void drive();
40         void set_stk(bool value);
41         void set_dk(bool value);
42         
43 public:
44         KEYBOARD(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
45         {
46                 set_device_name(_T("Keyboard"));
47         }
48         ~KEYBOARD() {}
49         
50         // common functions
51         void initialize();
52         void release();
53         void reset();
54         void write_signal(int id, uint32_t data, uint32_t mask);
55         void event_callback(int event_id, int err);
56         void event_frame();
57         void decl_state();
58         void save_state(FILEIO* state_fio);
59         bool load_state(FILEIO* state_fio);
60         
61         // unique functions
62         void set_context_subcpu(DEVICE* device)
63         {
64                 d_subcpu = device;
65         }
66         void set_context_ls244(DEVICE* device)
67         {
68                 d_ls244 = device;
69         }
70         void key_down(int code);
71         void key_up(int code);
72         bool get_caps_locked()
73         {
74                 return caps;
75         }
76         bool get_kana_locked()
77         {
78                 return kana;
79         }
80 };
81
82 #endif