Added the NCR 53C810 PCI SCSI controller;

Fixed the behavior of the CD-ROM GET CONFIGURATION command when unimplemented features are requested;
Fixed the behavior of the CD-ROM READ DVD STRUCTURE command in some situations and made it correctly report 05/30/02 for incompatible format;
Reworked the PS/2 Model 80 Type 2 memory handling a bit;
The emulator now allocates the few MB of space needed for pages for the entire 4 GB RAM space at the startup and only memset's it to 0 on hard reset - should make sure DMA page reads from/writes to memory-mapped devices no longer crash the emulator on invalidating the memory range;
Applied app applicable PCem patches;
The PS/1 Model 2133 now also applies PS/2-style NMI mask handling - fixes the 486 recompiler on this machine;
Added the missing #include of "cpu/cpu.h" in io.c, fixes compiling when I/O tracing is enabled.
This commit is contained in:
OBattler
2017-12-10 15:16:24 +01:00
parent c7946fbce7
commit f050810e2f
20 changed files with 397 additions and 129 deletions

View File

@@ -34,6 +34,7 @@
#include "scsi_aha154x.h"
#include "scsi_buslogic.h"
#include "scsi_ncr5380.h"
#include "scsi_ncr53c810.h"
#include "scsi_x54x.h"
@@ -73,6 +74,7 @@ static SCSI_CARD scsi_cards[] = {
{ "[MCA] Adaptec AHA-1640", "aha1640", &aha1640_device, x54x_device_reset },
{ "[MCA] BusLogic BT-640A", "bt640a", &buslogic_640a_device,BuslogicDeviceReset },
{ "[PCI] BusLogic BT-958D", "bt958d", &buslogic_pci_device, BuslogicDeviceReset },
{ "[PCI] NCR 53C810", "ncr53c810", &ncr53c810_pci_device,NULL },
{ "[VLB] BusLogic BT-445S", "bt445s", &buslogic_445s_device,BuslogicDeviceReset },
{ "", "", NULL, NULL },
};

View File

@@ -11,7 +11,7 @@
* 1 - BT-545S ISA;
* 2 - BT-958D PCI
*
* Version: @(#)scsi_buslogic.c 1.0.30 2017/12/09
* Version: @(#)scsi_buslogic.c 1.0.31 2017/12/10
*
* Authors: TheCollector1995, <mariogplayer@gmail.com>
* Miran Grca, <mgrca8@gmail.com>
@@ -1215,7 +1215,7 @@ BuslogicPCIWrite(int func, int addr, uint8_t val, void *p)
}
if (valxor & PCI_COMMAND_MEM) {
x54x_mem_disable(dev);
if ((bl->MMIOBase != 0) & (val & PCI_COMMAND_MEM)) {
if ((bl->MMIOBase != 0) && (val & PCI_COMMAND_MEM)) {
x54x_mem_set_addr(dev, bl->MMIOBase);
}
}

View File

@@ -1927,11 +1927,18 @@ void scsi_hd_command(uint8_t id, uint8_t *cdb)
shdc[id].temp_buffer[2] = 0x02; /*SCSI-2 compliant*/
shdc[id].temp_buffer[3] = 0x02;
shdc[id].temp_buffer[4] = 31;
shdc[id].temp_buffer[6] = 1; /* 16-bit transfers supported */
shdc[id].temp_buffer[7] = 0x20; /* Wide bus supported */
ide_padstr8(shdc[id].temp_buffer + 8, 8, EMU_NAME); /* Vendor */
ide_padstr8(shdc[id].temp_buffer + 16, 16, device_identify); /* Product */
ide_padstr8(shdc[id].temp_buffer + 32, 4, EMU_VERSION); /* Revision */
idx = 36;
if (max_len == 96) {
shdc[id].temp_buffer[4] = 91;
idx = 96;
}
}
atapi_out: