Fixes for PS/2 mouse crash (since AT keyboard rework) from TheCollector1995.

This commit is contained in:
waltje
2017-11-09 22:05:29 -05:00
parent df6183472c
commit 98d1b01d84
3 changed files with 10 additions and 14 deletions

View File

@@ -8,7 +8,7 @@
* *
* Intel 8042 (AT keyboard controller) emulation. * Intel 8042 (AT keyboard controller) emulation.
* *
* Version: @(#)keyboard_at.c 1.0.8 2017/11/04 * Version: @(#)keyboard_at.c 1.0.9 2017/11/09
* *
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/> * Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com> * Miran Grca, <mgrca8@gmail.com>
@@ -95,9 +95,6 @@ typedef struct {
int dtrans; int dtrans;
int first_write; int first_write;
void (*mouse_write)(uint8_t val, void *p);
void *mouse_p;
int64_t refresh_time; int64_t refresh_time;
int refresh; int refresh;
@@ -128,6 +125,8 @@ static uint8_t key_queue[16];
static int key_queue_start = 0, static int key_queue_start = 0,
key_queue_end = 0; key_queue_end = 0;
static uint8_t mouse_queue[16]; static uint8_t mouse_queue[16];
static void (*mouse_write)(uint8_t val, void *priv) = NULL;
static void *mouse_p = NULL;
static uint8_t sc_or = 0; static uint8_t sc_or = 0;
static atkbd_t *CurrentKbd = NULL; // FIXME: remove!!! --FvK static atkbd_t *CurrentKbd = NULL; // FIXME: remove!!! --FvK
@@ -691,8 +690,8 @@ write_register:
case 0xd4: /*Write to mouse*/ case 0xd4: /*Write to mouse*/
kbd_log("ATkbd: write to mouse (%02X)\n", val); kbd_log("ATkbd: write to mouse (%02X)\n", val);
if (kbd->mouse_write && (machines[machine].flags & MACHINE_PS2)) if (mouse_write && (machines[machine].flags & MACHINE_PS2))
kbd->mouse_write(val, kbd->mouse_p); mouse_write(val, mouse_p);
else else
keyboard_at_adddata_mouse(0xff); keyboard_at_adddata_mouse(0xff);
break; break;
@@ -1229,7 +1228,7 @@ kbd_close(void *priv)
{ {
atkbd_t *kbd = (atkbd_t *)priv; atkbd_t *kbd = (atkbd_t *)priv;
kbd_reset(priv); kbd_reset(kbd);
/* Stop timers. */ /* Stop timers. */
keyboard_delay = 0; keyboard_delay = 0;
@@ -1278,12 +1277,10 @@ keyboard_at_reset(void)
void void
keyboard_at_set_mouse(void (*mouse_write)(uint8_t val, void *p), void *p) keyboard_at_set_mouse(void (*func)(uint8_t val, void *priv), void *priv)
{ {
atkbd_t *kbd = CurrentKbd; mouse_write = func;
mouse_p = priv;
kbd->mouse_write = mouse_write;
kbd->mouse_p = p;
} }

View File

@@ -817,7 +817,6 @@ machine_ps2_common_init(machine_t *model)
dma16_init(); dma16_init();
ps2_dma_init(); ps2_dma_init();
device_add(&keyboard_ps2_device); device_add(&keyboard_ps2_device);
mouse_ps2_init(NULL);
nvr_at_init(8); nvr_at_init(8);
pic2_init(); pic2_init();