Fixed two messed-up patches.
This commit is contained in:
61
src/device.c
61
src/device.c
@@ -9,7 +9,7 @@
|
||||
* Implementation of the generic device interface to handle
|
||||
* all devices attached to the emulator.
|
||||
*
|
||||
* Version: @(#)device.c 1.0.2 2018/03/05
|
||||
* Version: @(#)device.c 1.0.3 2018/03/13
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -72,13 +72,13 @@ device_add(device_t *d)
|
||||
|
||||
for (c=0; c<256; c++) {
|
||||
if (devices[c] == d) {
|
||||
fatal("device_add: device already exists!\n");
|
||||
break;
|
||||
pclog("DEVICE: device already exists!\n");
|
||||
return(NULL);
|
||||
}
|
||||
if (devices[c] == NULL) break;
|
||||
}
|
||||
if (c >= DEVICE_MAX)
|
||||
fatal("device_add: too many devices\n");
|
||||
fatal("DEVICE: too many devices\n");
|
||||
|
||||
device_current = d;
|
||||
|
||||
@@ -86,16 +86,17 @@ device_add(device_t *d)
|
||||
priv = d->init(d);
|
||||
if (priv == NULL) {
|
||||
if (d->name)
|
||||
fatal("device_add: device '%s' init failed\n", d->name);
|
||||
pclog("DEVICE: device '%s' init failed\n", d->name);
|
||||
else
|
||||
fatal("device_add: device init failed\n");
|
||||
pclog("DEVICE: device init failed\n");
|
||||
return(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
devices[c] = d;
|
||||
device_priv[c] = priv;
|
||||
|
||||
return priv;
|
||||
return(priv);
|
||||
}
|
||||
|
||||
|
||||
@@ -385,50 +386,28 @@ device_set_config_mac(char *s, int val)
|
||||
|
||||
|
||||
int
|
||||
device_is_valid(device_t *device, int machine_flags)
|
||||
device_is_valid(device_t *device, int mflags)
|
||||
{
|
||||
if (!device)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if (device == NULL) return(1);
|
||||
|
||||
if ((device->flags & DEVICE_AT) && !(machine_flags & MACHINE_AT)) {
|
||||
return 0;
|
||||
}
|
||||
if ((device->flags & DEVICE_AT) && !(mflags & MACHINE_AT)) return(0);
|
||||
|
||||
if ((device->flags & DEVICE_CBUS) && !(machine_flags & MACHINE_CBUS)) {
|
||||
return 0;
|
||||
}
|
||||
if ((device->flags & DEVICE_CBUS) && !(mflags & MACHINE_CBUS)) return(0);
|
||||
|
||||
if ((device->flags & DEVICE_ISA) && !(machine_flags & MACHINE_ISA)) {
|
||||
return 0;
|
||||
}
|
||||
if ((device->flags & DEVICE_ISA) && !(mflags & MACHINE_ISA)) return(0);
|
||||
|
||||
if ((device->flags & DEVICE_MCA) && !(machine_flags & MACHINE_MCA)) {
|
||||
return 0;
|
||||
}
|
||||
if ((device->flags & DEVICE_MCA) && !(mflags & MACHINE_MCA)) return(0);
|
||||
|
||||
if ((device->flags & DEVICE_EISA) && !(machine_flags & MACHINE_EISA)) {
|
||||
return 0;
|
||||
}
|
||||
if ((device->flags & DEVICE_EISA) && !(mflags & MACHINE_EISA)) return(0);
|
||||
|
||||
if ((device->flags & DEVICE_VLB) && !(machine_flags & MACHINE_VLB)) {
|
||||
return 0;
|
||||
}
|
||||
if ((device->flags & DEVICE_VLB) && !(mflags & MACHINE_VLB)) return(0);
|
||||
|
||||
if ((device->flags & DEVICE_PCI) && !(machine_flags & MACHINE_PCI)) {
|
||||
return 0;
|
||||
}
|
||||
if ((device->flags & DEVICE_PCI) && !(mflags & MACHINE_PCI)) return(0);
|
||||
|
||||
if ((device->flags & DEVICE_PS2) && !(machine_flags & MACHINE_HDC_PS2)) {
|
||||
return 0;
|
||||
}
|
||||
if ((device->flags & DEVICE_PS2) && !(mflags & MACHINE_HDC_PS2)) return(0);
|
||||
if ((device->flags & DEVICE_AGP) && !(mflags & MACHINE_AGP)) return(0);
|
||||
|
||||
if ((device->flags & DEVICE_AGP) && !(machine_flags & MACHINE_AGP)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
return(1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*
|
||||
* Intel 8042 (AT keyboard controller) emulation.
|
||||
*
|
||||
* Version: @(#)keyboard_at.c 1.0.4 2018/03/12
|
||||
* Version: @(#)keyboard_at.c 1.0.5 2018/03/13
|
||||
*
|
||||
* Authors: Fred N. van Kempen, <decwiz@yahoo.com>
|
||||
* Miran Grca, <mgrca8@gmail.com>
|
||||
@@ -99,6 +99,7 @@
|
||||
#define KBC_VEN_TOSHIBA 0x10
|
||||
#define KBC_VEN_MASK 0x1C
|
||||
|
||||
|
||||
typedef struct {
|
||||
int initialized;
|
||||
int want60,
|
||||
@@ -671,16 +672,13 @@ kbd_poll(void *priv)
|
||||
}
|
||||
}
|
||||
|
||||
if (kbd->out_new == -1 && !(kbd->status & STAT_OFULL) &&
|
||||
key_ctrl_queue_start != key_ctrl_queue_end) {
|
||||
if (kbd->out_new == -1 && !(kbd->status & STAT_OFULL) && key_ctrl_queue_start != key_ctrl_queue_end) {
|
||||
kbd->out_new = key_ctrl_queue[key_ctrl_queue_start] | 0x200;
|
||||
key_ctrl_queue_start = (key_ctrl_queue_start + 1) & 0xf;
|
||||
} else if (!(kbd->status & STAT_OFULL) && kbd->out_new == -1 &&
|
||||
kbd->out_delayed != -1) {
|
||||
} else if (!(kbd->status & STAT_OFULL) && kbd->out_new == -1 && kbd->out_delayed != -1) {
|
||||
kbd->out_new = kbd->out_delayed;
|
||||
kbd->out_delayed = -1;
|
||||
} else if (!(kbd->status & STAT_OFULL) && kbd->out_new == -1 &&
|
||||
!(kbd->mem[0] & 0x10) && kbd->out_delayed != -1) {
|
||||
} else if (!(kbd->status & STAT_OFULL) && kbd->out_new == -1 && !(kbd->mem[0] & 0x10) && kbd->out_delayed != -1) {
|
||||
kbd->out_new = kbd->out_delayed;
|
||||
kbd->out_delayed = -1;
|
||||
} else if (!(kbd->status & STAT_OFULL) && kbd->out_new == -1/* && !(kbd->mem[0] & 0x20)*/ &&
|
||||
@@ -976,8 +974,7 @@ kbd_cmd_write(atkbd_t *kbd, uint8_t val)
|
||||
kbd->wantirq = 0;
|
||||
|
||||
/* PS/2 type 2 keyboard controllers always force the XLAT bit to 0. */
|
||||
if (((kbd->flags & KBC_VEN_MASK) == KBC_VEN_AMI) ||
|
||||
((kbd->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1)) {
|
||||
if ((kbd->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) {
|
||||
val &= ~CCB_TRANSLATE;
|
||||
kbd->mem[0] &= ~CCB_TRANSLATE;
|
||||
}
|
||||
@@ -992,7 +989,8 @@ kbd_cmd_write(atkbd_t *kbd, uint8_t val)
|
||||
|
||||
/* ISA AT keyboard controllers use bit 5 for keyboard mode (1 = PC/XT, 2 = AT);
|
||||
PS/2 (and EISA/PCI) keyboard controllers use it as the PS/2 mouse enable switch. */
|
||||
if ((kbd->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1) {
|
||||
if (((kbd->flags & KBC_VEN_MASK) == KBC_VEN_AMI) ||
|
||||
((kbd->flags & KBC_TYPE_MASK) >= KBC_TYPE_PS2_1)) {
|
||||
keyboard_mode &= ~CCB_PCMODE;
|
||||
|
||||
mouse_scan = !(val & 0x20);
|
||||
|
||||
Reference in New Issue
Block a user