Whoops, messed up something. Fixed now.

This commit is contained in:
waltje
2018-06-27 18:29:32 -04:00
parent 7919fbdb93
commit 4c03094eaf

View File

@@ -8,7 +8,7 @@
* *
* Intel 8042 (AT keyboard controller) emulation. * Intel 8042 (AT keyboard controller) emulation.
* *
* Version: @(#)keyboard_at.c 1.0.13 2018/06/26 * Version: @(#)keyboard_at.c 1.0.14 2018/06/27
* *
* Authors: Fred N. van Kempen, <decwiz@yahoo.com> * Authors: Fred N. van Kempen, <decwiz@yahoo.com>
* Miran Grca, <mgrca8@gmail.com> * Miran Grca, <mgrca8@gmail.com>
@@ -66,7 +66,7 @@
#define STAT_RTIMEOUT 0x40 #define STAT_RTIMEOUT 0x40
#define STAT_TTIMEOUT 0x20 #define STAT_TTIMEOUT 0x20
#define STAT_MFULL 0x20 #define STAT_MFULL 0x20
#define STAT_LOCK 0x10 #define STAT_UNLOCKED 0x10
#define STAT_CD 0x08 #define STAT_CD 0x08
#define STAT_SYSFLAG 0x04 #define STAT_SYSFLAG 0x04
#define STAT_IFULL 0x02 #define STAT_IFULL 0x02
@@ -1050,11 +1050,6 @@ kbd_keyboard_set(atkbd_t *kbd, uint8_t enable)
kbd->mem[0] &= 0xef; kbd->mem[0] &= 0xef;
kbd->mem[0] |= (enable ? 0x00 : 0x10); kbd->mem[0] |= (enable ? 0x00 : 0x10);
if (enable)
kbd->status |= STAT_LOCK;
else
kbd->status &= ~STAT_LOCK;
keyboard_scan = enable; keyboard_scan = enable;
} }
@@ -1884,9 +1879,10 @@ kbd_write(uint16_t port, uint8_t val, void *priv)
#ifdef ENABLE_KEYBOARD_LOG #ifdef ENABLE_KEYBOARD_LOG
kbd_log("ATkbd: kbd reset\n"); kbd_log("ATkbd: kbd reset\n");
#endif #endif
kbd_adddata_keyboard(0xfa);
key_queue_start = key_queue_end = 0; /*Clear key queue*/ key_queue_start = key_queue_end = 0; /*Clear key queue*/
kbd_adddata_keyboard(0xfa);
kbd_adddata_keyboard(0xaa); kbd_adddata_keyboard(0xaa);
/* Set system flag to 1 and scan code set to 2. */ /* Set system flag to 1 and scan code set to 2. */
keyboard_mode &= 0xFC; keyboard_mode &= 0xFC;
keyboard_mode |= 2; keyboard_mode |= 2;
@@ -2121,9 +2117,7 @@ kbd_read(uint16_t port, void *priv)
case 0x64: case 0x64:
ret = (kbd->status & 0xFB) | (keyboard_mode & CCB_SYSTEM); ret = (kbd->status & 0xFB) | (keyboard_mode & CCB_SYSTEM);
#if 0 ret |= STAT_UNLOCKED;
ret |= STAT_LOCK;
#endif
/* The transmit timeout (TTIMEOUT) flag should *NOT* be cleared, otherwise /* The transmit timeout (TTIMEOUT) flag should *NOT* be cleared, otherwise
the IBM PS/2 Model 80's BIOS gives error 8601 (mouse error). */ the IBM PS/2 Model 80's BIOS gives error 8601 (mouse error). */
kbd->status &= ~(STAT_RTIMEOUT/* | STAT_TTIMEOUT*/); kbd->status &= ~(STAT_RTIMEOUT/* | STAT_TTIMEOUT*/);
@@ -2156,7 +2150,7 @@ kbd_reset(void *priv)
kbd->initialized = 0; kbd->initialized = 0;
kbd->dtrans = 0; kbd->dtrans = 0;
kbd->first_write = 1; kbd->first_write = 1;
kbd->status = STAT_LOCK | STAT_CD; kbd->status = STAT_UNLOCKED | STAT_CD;
kbd->mem[0] = 0x01; kbd->mem[0] = 0x01;
kbd->wantirq = 0; kbd->wantirq = 0;
kbd_output_write(kbd, 0xcf); kbd_output_write(kbd, 0xcf);