Fixed two messed-up patches.

This commit is contained in:
waltje
2018-03-13 15:55:25 -05:00
parent 40b6bc4d57
commit c1c74199d7
2 changed files with 28 additions and 51 deletions

View File

@@ -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);
}

View File

@@ -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);