Whoops, messed up something. Fixed now.
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user