2 FUJITSU FMR-50 Emulator 'eFMR-50'
3 FUJITSU FMR-60 Emulator 'eFMR-60'
5 Author : Takeda.Toshiya
15 #include "../../emu.h"
16 #include "../device.h"
17 #include "../../fifo.h"
31 漢字 辞書 RALT + Print Screen
32 単語 抹消 RALT + Scroll Lock
50 * http://www.nurs.or.jp/~kurati/towns/scancode.html
51 * and http://m0115.web.fc2.com/fmr60kb212.jpg :
53 +0 +1 +2 +3 +4 +5 +6 +7
56 0x10 TAB Q W E R T Y U
60 0x30 M , . / " 空白 [KP]* [KP]/
61 0x38 [KP]+ [KP]- [KP]7 [KP]8 [KP]9 [KP]= [KP]4 [KP]5
62 0x40 [KP]6 --- [KP]1 [KP]2 [KP]3 [KP]改行[KP]0 [KP].
63 0x48 INS --- [KP]0 DEL --- ↑ HOME ←
64 0x50 ↓ → CTRL SHIFT --- CAPS LANG ALT
65 0x58 CTRL SPACE LANG F12 ALT F1 F2 F3
66 0x60 F4 F5 F6 F7 F8 F9 F10 ---
67 0x68 --- F11 英字 辞書 抹消 登録 前行 ---
68 0x70 次行 半/全 END 実行 F13 F14 F15 F16
71 static const int key_table[256] = {
72 /* VK -> RAW code table +8 */
73 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0F,0x10,0x00,0x00,0x00,0x1D,0x00,0x00,/*0x*/
74 0x53,0x52,0x00,0x7C,0x55,0x56,0x00,0x00,0x00,0x71,0x00,0x01,0x58,0x57,0x00,0x00,/*1x*/
75 0x35,0x70,0x6E,0x00,0x4E,0x4F,0x4D,0x51,0x50,0x00,0x7D,0x00,0x00,0x48,0x4B,0x00,/*2x*/
76 0x0B,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,/*3x*/
77 0x00,0x1E,0x2E,0x2C,0x20,0x13,0x21,0x22,0x23,0x18,0x24,0x25,0x26,0x30,0x2F,0x19,/*4x*/
78 0x1A,0x11,0x14,0x1F,0x15,0x17,0x2D,0x12,0x2B,0x16,0x2A,0x72,0x73,0x00,0x00,0x00,/*5x*/
79 0x46,0x42,0x43,0x44,0x3E,0x3F,0x40,0x3A,0x3B,0x3C,0x36,0x38,0x00,0x39,0x47,0x37,/*6x*/
80 0x5D,0x5E,0x5F,0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x59,0x5a,0x74,0x75,0x76,0x77,/*7x*/
81 0x78,0x79,0x7A,0x7B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*8x*/
82 0x00,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*9x*/
83 0x00,0x00,0x00,0x00,0x5C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*ax*/
84 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x28,0x27,0x31,0x0C,0x32,0x33,/*bx*/
85 0x1b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*cx*/
86 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1C,0x0E,0x29,0x0D,0x00,/*dx*/
87 0x00,0x00,0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*ex*/
88 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /*fx*/
95 class KEYBOARD : public DEVICE
98 outputs_t output_intr_line;
99 outputs_t output_nmi_line;
104 uint8_t kbstat, kbdata, kbint, kbmsk;
107 bool enable_double_pressed_cursor;
115 virtual void do_common_command(uint8_t cmd);
116 void register_key_interrupt(bool first);
119 KEYBOARD(VM_TEMPLATE* parent_vm, EMU_TEMPLATE* parent_emu) : DEVICE(parent_vm, parent_emu)
124 initialize_output_signals(&output_intr_line);
125 initialize_output_signals(&output_nmi_line);
126 set_device_name(_T("FM-Towns Keyboard (JIS)"));
134 void __FASTCALL write_io8(uint32_t addr, uint32_t data);
135 uint32_t __FASTCALL read_io8(uint32_t addr);
136 void event_callback(int event_id, int err);
137 bool process_state(FILEIO* state_fio, bool loading);
140 void set_context_intr_line(DEVICE* dev, int id, uint32_t mask)
142 register_output_signal(&output_intr_line, dev, id, mask);
144 void set_context_nmi_line(DEVICE* dev, int id, uint32_t mask)
146 register_output_signal(&output_nmi_line, dev, id, mask);
148 void key_down(int code);
149 void key_up(int code);