--- np2/keystat.c 2004/03/28 19:50:25 1.7 +++ np2/keystat.c 2004/03/31 11:59:17 1.11 @@ -157,6 +157,70 @@ kstbl_err: // ---- +void keystat_ctrlinit(void) { + + ZeroMemory(&keyctrl, sizeof(keyctrl)); +} + +void keystat_ctrlreset(void) { + + keyctrl.reqparam = 0; +} + +void keystat_ctrlsend(REG8 dat) { + +// return; // まだテスト + + if (!keyctrl.reqparam) { + keyctrl.mode = dat; + switch(dat) { +#if defined(SUPPORT_PC9801_119) + case 0x95: +#endif + case 0x9c: + case 0x9d: + keyctrl.reqparam = 1; + keyboard_ctrl(0xfa); + break; + +#if defined(SUPPORT_PC9801_119) + case 0x96: + keyboard_ctrl(0xfa); + keyboard_ctrl(0xa0); + keyboard_ctrl(0x83); + break; +#endif + + case 0x9f: + keyboard_ctrl(0xfa); + keyboard_ctrl(0xa0); + keyboard_ctrl(0x80); + break; + + default: + keyboard_ctrl(0xfc); + break; + } + } + else { + switch(keyctrl.mode) { +#if defined(SUPPORT_PC9801_119) + case 0x95: + keyctrl.kbdtype = dat; + keyboard_ctrl(0xfa); + break; +#endif + case 0x9c: + keyboard_ctrl(0xfa); + break; + } + keyctrl.reqparam = 0; + } +} + + +// ---- + void keystat_down(const UINT8 *key, REG8 keys, REG8 ref) { UINT8 keydata; @@ -174,15 +238,17 @@ void keystat_down(const UINT8 *key, REG8 keystat.ref[keycode] = ref; } else { -#if defined(SUPPORT_PC9801119) - if ((keyctrl.kbdtype != 0x03) && (keycode >= 0x75)) { - continue; - } -#else - if (keycode >= 0x75) { - continue; - } +#if defined(SUPPORT_PC9801_119) + if (keyctrl.kbdtype != 0x03) #endif + { + if (keycode == 0x7d) { + keycode = 0x70; + } + else if (keycode >= 0x75) { + continue; + } + } if ((np2cfg.XSHIFT) && (((keycode == 0x70) && (np2cfg.XSHIFT & 1)) || ((keycode == 0x74) && (np2cfg.XSHIFT & 2)) || @@ -225,15 +291,17 @@ void keystat_up(const UINT8 *key, REG8 k } } else { -#if defined(SUPPORT_PC9801119) - if ((keyctrl.kbdtype != 0x03) && (keycode >= 0x75)) { - continue; - } -#else - if (keycode >= 0x75) { - continue; - } +#if defined(SUPPORT_PC9801_119) + if (keyctrl.kbdtype != 0x03) #endif + { + if (keycode == 0x7d) { + keycode = 0x70; + } + else if (keycode >= 0x75) { + continue; + } + } if ((np2cfg.XSHIFT) && (((keycode == 0x70) && (np2cfg.XSHIFT & 1)) || ((keycode == 0x74) && (np2cfg.XSHIFT & 2)) ||