ATAPI CD-ROM no longer lowers IRQ at the wrong time, fixes booting of some CD's;

Fixed DMA emulation, fixes Olivetti M24;
(S)VGA emulation for PS/1 and PS/2 machines now uses the old, less accurate sense switches, fixes display error on POST;
Bit 2 of the AT keyboard input port is now always held active, fixes PS/2 mouse on PS/1 and PS/2 machines;
Fixed mouse type selection on non-AT boards;
Fixed RAM type selection;
The entire palette is now overwritten when a monochrome monitor type is selected, fixes graphics mode on Hercules;
Applied updated SCAT emulation patch from PCem forum;
Nvidia Riva and S3 Virge IRQ is now configurable;
Properly applied the mainline PCem commit that fixed the Bahamas64 on the Intel AMI BIOS boards;
Commented out the Diamond Stealth 64 and the Miro Crystal S3 Vision 964 due to their non-working state;
Changed version to 1.06.
This commit is contained in:
OBattler
2017-03-01 23:23:52 +01:00
parent 99de4f11b6
commit 13683628a5
18 changed files with 498 additions and 125 deletions

View File

@@ -642,9 +642,7 @@ bad_command:
break;
case 0xc0: /*Read input port*/
keyboard_at_adddata((keyboard_at.input_port & 0xf0) | 0x80);
// keyboard_at_adddata(keyboard_at.input_port | 4);
// keyboard_at.input_port = ((keyboard_at.input_port + 1) & 3) | (keyboard_at.input_port & 0xfc);
keyboard_at_adddata((keyboard_at.input_port & 0xfc) | 0x84);
break;
case 0xc1: /*Copy bits 0 to 3 of input port to status bits 4 to 7*/
@@ -726,13 +724,16 @@ uint8_t keyboard_at_read(uint16_t port, void *priv)
case 0x60:
temp = keyboard_at.out;
keyboard_at.status &= ~(STAT_OFULL/* | STAT_MFULL*/);
picintc(keyboard_at.last_irq);
if (PCI)
{
/* The PIIX/PIIX3 datasheet mandates that both of these interrupts are cleared on any read of port 0x60. */
picintc(1 << 1);
picintc(1 << 12);
}
else
{
picintc(keyboard_at.last_irq);
}
keyboard_at.last_irq = 0;
break;