A dynamic recompiler block's validity is now separate from its starting code address, should fix most of the known recompiler fatals;

The CD-ROM buffer is now dynamically malloc'd;
Did a lot of bugfixing in cdrom.c and scsi_disk.c, Debian 8's modprobe aha1542 and the NT 3.10.404.1 Trantor 310b driver now work;
Fixed the IDE IRQ/MIRQ mess and ATAPI DMA transfer length;
Fixed the operation of mmutranslate() a bit;
Commented out several instances of excess logging;
Applied the mainline PCem commit prefetch commit;
Readded missing Sound Blaster DSP MIDI behavior and gave it the correct MPU struct;
All non-IBM 486 machines now correctly have the VLB flag set.
This commit is contained in:
OBattler
2017-10-16 06:19:18 +02:00
parent 89a98e34fd
commit ed865610e9
23 changed files with 456 additions and 402 deletions

View File

@@ -126,35 +126,35 @@ void piix_write(int func, int addr, uint8_t val, void *priv)
return;
case 0x60:
pclog("Set IRQ routing: INT A -> %02X\n", val);
/* pclog("Set IRQ routing: INT A -> %02X\n", val); */
if (val & 0x80)
pci_set_irq_routing(PCI_INTA, PCI_IRQ_DISABLED);
else
pci_set_irq_routing(PCI_INTA, val & 0xf);
break;
case 0x61:
pclog("Set IRQ routing: INT B -> %02X\n", val);
/* pclog("Set IRQ routing: INT B -> %02X\n", val); */
if (val & 0x80)
pci_set_irq_routing(PCI_INTB, PCI_IRQ_DISABLED);
else
pci_set_irq_routing(PCI_INTB, val & 0xf);
break;
case 0x62:
pclog("Set IRQ routing: INT C -> %02X\n", val);
/* pclog("Set IRQ routing: INT C -> %02X\n", val); */
if (val & 0x80)
pci_set_irq_routing(PCI_INTC, PCI_IRQ_DISABLED);
else
pci_set_irq_routing(PCI_INTC, val & 0xf);
break;
case 0x63:
pclog("Set IRQ routing: INT D -> %02X\n", val);
/* pclog("Set IRQ routing: INT D -> %02X\n", val); */
if (val & 0x80)
pci_set_irq_routing(PCI_INTD, PCI_IRQ_DISABLED);
else
pci_set_irq_routing(PCI_INTD, val & 0xf);
break;
case 0x70:
pclog("Set MIRQ routing: MIRQ0 -> %02X\n", val);
/* pclog("Set MIRQ routing: MIRQ0 -> %02X\n", val); */
if (val & 0x80)
pci_set_mirq_routing(PCI_MIRQ0, PCI_IRQ_DISABLED);
else
@@ -163,16 +163,18 @@ void piix_write(int func, int addr, uint8_t val, void *priv)
case 0x71:
if (piix_type == 1)
{
pclog("Set MIRQ routing: MIRQ1 -> %02X\n", val);
/* pclog("Set MIRQ routing: MIRQ1 -> %02X\n", val); */
if (val & 0x80)
pci_set_mirq_routing(PCI_MIRQ1, PCI_IRQ_DISABLED);
else
pci_set_mirq_routing(PCI_MIRQ1, val & 0xf);
}
#if 0
else
{
pclog("Set unused MIRQ routing: MIRQ1 -> %02X\n", val);
}
#endif
break;
}
if (addr == 0x4C)