diff --git a/src/floppy/fdc.c b/src/floppy/fdc.c
index a5334d7d2..60746c309 100644
--- a/src/floppy/fdc.c
+++ b/src/floppy/fdc.c
@@ -9,7 +9,7 @@
* Implementation of the NEC uPD-765 and compatible floppy disk
* controller.
*
- * Version: @(#)fdc.c 1.0.9 2017/11/24
+ * Version: @(#)fdc.c 1.0.10 2017/12/08
*
* Authors: Sarah Walker,
* Miran Grca,
@@ -173,15 +173,15 @@ int fdc_do_log = ENABLE_FDC_LOG;
static void
-fdc_log(const char *format, ...)
+fdc_log(const char *fmt, ...)
{
#ifdef ENABLE_FDC_LOG
va_list ap;
if (fdc_do_log)
{
- va_list ap;
- pclog(format, ap);
+ va_start(ap, fmt);
+ pclog(fmt, ap);
va_end(ap);
}
#endif
diff --git a/src/mouse_bus.c b/src/mouse_bus.c
index db59fcce8..0a336b61b 100644
--- a/src/mouse_bus.c
+++ b/src/mouse_bus.c
@@ -49,7 +49,7 @@
* only the Logitech part is considered to
* be OK.
*
- * Version: @(#)mouse_bus.c 1.0.25 2017/12/04
+ * Version: @(#)mouse_bus.c 1.0.26 2017/12/08
*
* Authors: Fred N. van Kempen,
*
@@ -70,7 +70,7 @@
#define MOUSE_PORT 0x023c /* default */
-#define MOUSE_IRQ 5 /* default (DOS,NT31) */
+#define MOUSE_IRQ 5 /* default */
#define MOUSE_DEBUG 2
@@ -145,13 +145,15 @@ typedef struct mouse {
static void
ms_reset(mouse_t *dev)
{
- dev->flags &= 0xf0;
+ dev->r_ctrl = 0x00;
+ dev->r_cmd = 0x00;
dev->seq = 0;
dev->x = dev->y = 0;
dev->but = 0x00;
+ dev->flags &= 0xf0;
dev->flags |= FLAG_INTR;
}
@@ -164,8 +166,7 @@ ms_write(mouse_t *dev, uint16_t port, uint8_t val)
case MSMOUSE_CTRL:
switch (val) {
case MSCTRL_RESET:
- dev->r_ctrl = 0x00;
- dev->r_cmd = 0x00;
+ ms_reset(dev);
break;
case MSCTRL_COMMAND:
@@ -269,7 +270,6 @@ bm_timer(void *priv)
#if 0
/* The controller updates the data on every interrupt
We just don't copy it to the current_X if the 'hold' bit is set */
- if (dev->is_inport) {
if ((dev->but & (1<<2)) ||
((dev->but_last & (1<<2)) && !(dev->but & (1<<2))))
dev->but |= (1<<5);
@@ -280,7 +280,6 @@ bm_timer(void *priv)
((dev->but_last & (1<<0)) && !(dev->buttons & (1<<0))))
dev->but |= (1<<3);
dev->but_last = dev>but;
- }
#endif
if (dev->flags & FLAG_INTR)
@@ -288,30 +287,10 @@ bm_timer(void *priv)
}
-/* Initialize the Microsoft Bus Mouse interface. */
-static void
-ms_init(mouse_t *dev)
-{
- /* Initialize registers. */
- dev->r_ctrl = 0x00;
- dev->r_conf = 0x00;
-
- dev->flags |= FLAG_INPORT;
-
- /* Initialize I/O handlers. */
- dev->read = ms_read;
- dev->write = ms_write;
-
- timer_add(bm_timer, &dev->timer, TIMER_ALWAYS_ENABLED, dev);
-}
-
-
/* Reset the controller state. */
static void
lt_reset(mouse_t *dev)
{
- dev->flags &= 0xf0;
-
dev->r_magic = 0x00;
dev->r_ctrl = (LTCTRL_IENB);
dev->r_conf = 0x00;
@@ -321,6 +300,7 @@ lt_reset(mouse_t *dev)
dev->x = dev->y = 0;
dev->but = 0x00;
+ dev->flags &= 0xf0;
dev->flags |= FLAG_INTR;
}
@@ -436,12 +416,9 @@ lt_read(mouse_t *dev, uint16_t port)
break;
case LTMOUSE_CTRL: /* [02] control register */
- if (dev->r_ctrl & LTCTRL_IDIS) {
- /* IDIS, no interrupts, return all-off. */
- ret = 0x0f;
- } else if (dev->seq++ == 0) {
+ ret = 0x0f;
+ if (!(dev->r_ctrl & LTCTRL_IDIS) && (dev->seq++ == 0)) {
/* !IDIS, return DIP switch setting. */
- ret = 0x0f;
switch(dev->irq) {
case 2:
ret &= ~0x08;
@@ -459,9 +436,6 @@ lt_read(mouse_t *dev, uint16_t port)
ret &= ~0x01;
break;
}
- } else {
- /* Return all-off (invalid data.) */
- ret = 0x0f;
}
break;
@@ -607,7 +581,13 @@ bm_init(device_t *info)
break;
case MOUSE_TYPE_INPORT:
- ms_init(dev);
+ dev->flags |= FLAG_INPORT;
+
+ /* Initialize I/O handlers. */
+ dev->read = ms_read;
+ dev->write = ms_write;
+
+ timer_add(bm_timer, &dev->timer, TIMER_ALWAYS_ENABLED, dev);
break;
}