OSDN Git Service

[VM] Apply VM_TEMPLATE to all VMs.
[csp-qt/common_source_project-fm7.git] / source / src / vm / fmr50 / keyboard.h
1 /*
2         FUJITSU FMR-50 Emulator 'eFMR-50'
3         FUJITSU FMR-60 Emulator 'eFMR-60'
4
5         Author : Takeda.Toshiya
6         Date   : 2008.05.01 -
7
8         [ keyboard ]
9 */
10
11 #ifndef _KEYBOARD_H_
12 #define _KEYBOARD_H_
13
14 #include "../vm.h"
15 #include "../../emu.h"
16 #include "../device.h"
17
18 /*
19         \82Ð\82ç\82ª\82È/\83\8d\81[\83}\8e\9a       \82Ð\82ç\82ª\82È
20         \94¼\8ap/\91S\8ap               \94¼\8ap/\91S\8ap
21         \95Ï\8a·                    \95Ï\8a·
22         \96³\95Ï\8a·                  \96³\95Ï\8a·
23         \82©\82È/\8a¿\8e\9a
24         \83J\83^\83J\83i
25         \91O\8ds                    PgUp
26         \8e\9f\8ds                    PgDn
27         \8eÀ\8ds                    F12
28         \8eæ\8fÁ                    F11
29         COPY
30 */
31
32 static const int key_table[256] = {
33         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x00,0x00,0x00,0x1D,0x00,0x00,
34         0x53,0x52,0x00,0x7C,0x55,0x52,0x00,0x00,0x00,0x71,0x00,0x01,0x58,0x57,0x00,0x00,
35         0x35,0x6E,0x70,0x00,0x4E,0x4F,0x4D,0x51,0x50,0x00,0x00,0x00,0x00,0x48,0x4B,0x00,
36         0x0B,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,
37         0x00,0x1E,0x2E,0x2C,0x20,0x13,0x21,0x22,0x23,0x18,0x24,0x25,0x26,0x30,0x2F,0x19,
38         0x1A,0x11,0x14,0x1F,0x15,0x17,0x2D,0x12,0x2B,0x16,0x2A,0x00,0x00,0x00,0x00,0x00,
39         0x46,0x42,0x43,0x44,0x3E,0x3F,0x40,0x3A,0x3B,0x3C,0x36,0x38,0x00,0x39,0x47,0x37,
40         0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x72,0x73,0x00,0x00,0x00,0x00,
41         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
42         0x00,0x7D,0x6B,0x6C,0x6D,0x57,0x58,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
43         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
44         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x27,0x31,0x0C,0x32,0x33,
45         0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
46         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x0E,0x29,0x0D,0x00,
47         0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
48         0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
49 };
50
51 class FIFO;
52
53 class KEYBOARD : public DEVICE
54 {
55 private:
56         DEVICE* d_pic;
57         
58         FIFO *key_buf;
59         uint8_t kbstat, kbdata, kbint, kbmsk;
60         uint8_t table[256];
61         
62 public:
63         KEYBOARD(VM_TEMPLATE* parent_vm, EMU* parent_emu) : DEVICE(parent_vm, parent_emu)
64         {
65                 set_device_name(_T("Keyboard"));
66         }
67         ~KEYBOARD() {}
68         
69         // common functions
70         void initialize();
71         void release();
72         void reset();
73         void write_io8(uint32_t addr, uint32_t data);
74         uint32_t read_io8(uint32_t addr);
75         void event_frame();
76         void decl_state();
77         void save_state(FILEIO* state_fio);
78         bool load_state(FILEIO* state_fio);
79         
80         // unique functions
81         void set_context_pic(DEVICE* device)
82         {
83                 d_pic = device;
84         }
85         void key_down(int code);
86         void key_up(int code);
87 };
88
89 #endif