OSDN Git Service

[VM][WIP] Pre-process to apply new state framework.Still not buildable.
[csp-qt/common_source_project-fm7.git] / source / src / vm / jx / keyboard.h
1 /*
2         IBM Japan Ltd PC/JX Emulator 'eJX'
3
4         Author : Takeda.Toshiya
5         Date   : 2011.05.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_TIMER      0
18
19 class FIFO;
20
21 class KEYBOARD : public DEVICE
22 {
23 private:
24         DEVICE *d_cpu, *d_pio, *d_pit;
25         
26         FIFO* key_buf;
27 #ifndef KEYBOARD_HACK
28         uint64_t send_data;
29         int send_count;
30 #endif
31         bool key_latched;
32         
33         uint8_t nmi_reg;
34         
35 public:
36         KEYBOARD(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
37         {
38                 set_device_name(_T("Keyboard"));
39         }
40         ~KEYBOARD() {}
41         
42         // common functions
43         void initialize();
44         void release();
45         void reset();
46         void write_io8(uint32_t addr, uint32_t data);
47         uint32_t read_io8(uint32_t addr);
48         void event_callback(int event_id, int err);
49         void write_signal(int id, uint32_t data, uint32_t mask);
50         bool process_state(FILEIO* state_fio, bool loading);
51         
52         // unique functions
53         void set_context_cpu(DEVICE* device)
54         {
55                 d_cpu = device;
56         }
57         void set_context_pio(DEVICE* device)
58         {
59                 d_pio = device;
60         }
61         void set_context_pit(DEVICE* device)
62         {
63                 d_pit = device;
64         }
65         void key_down(int code);
66         void key_up(int code);
67 };
68
69 #endif
70