CD-ROM images are now working correctly again;
Fixed all the reported bugs regarding the Settings dialog; MIDI out device is now no longer reset to 0 after hard reset; Removed all vestiges of the old disk activity flash; The configuration file is no longer saved when it shouldn't be; Redone the status bar icon updating so it is only done in win.c; Made sure all variables in ibm.h are extern; A lot of other bugfixes; Added Mouse Systems Mouse emulation (patch from TheCollector1995); Added IBM PS/1 Model 2133 (486) emulation (patch from TheCollector1995); Tweaked the CPU dynamic recompiler cycle periods - 486SX 33 and 486DX 33 now work; Increased compatibility with configuration files from before the previous commit.
This commit is contained in:
@@ -757,6 +757,14 @@ BuslogicDataBufferAllocate(Req_t *req, int Is24bit)
|
||||
pclog("Data Buffer write: length %d, pointer 0x%04X\n",
|
||||
DataLength, DataPointer);
|
||||
|
||||
if (SCSIDevices[req->TargetID][req->LUN].CmdBuffer != NULL)
|
||||
{
|
||||
free(SCSIDevices[req->TargetID][req->LUN].CmdBuffer);
|
||||
SCSIDevices[req->TargetID][req->LUN].CmdBuffer = NULL;
|
||||
}
|
||||
SCSIDevices[req->TargetID][req->LUN].CmdBuffer = (uint8_t *) malloc(DataLength);
|
||||
memset(SCSIDevices[req->TargetID][req->LUN].CmdBuffer, 0, DataLength);
|
||||
|
||||
if ((req->CmdBlock.common.ControlByte != 0x03) && DataLength) {
|
||||
if (req->CmdBlock.common.Opcode == SCATTER_GATHER_COMMAND ||
|
||||
req->CmdBlock.common.Opcode == SCATTER_GATHER_COMMAND_RES) {
|
||||
@@ -936,6 +944,12 @@ BuslogicDataBufferFree(Req_t *req)
|
||||
req->CmdBlock.new.DataLength);
|
||||
}
|
||||
}
|
||||
|
||||
if (SCSIDevices[req->TargetID][req->LUN].CmdBuffer != NULL)
|
||||
{
|
||||
free(SCSIDevices[req->TargetID][req->LUN].CmdBuffer);
|
||||
SCSIDevices[req->TargetID][req->LUN].CmdBuffer = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1799,9 +1813,6 @@ BuslogicSCSIRequestSetup(Buslogic_t *bl, uint32_t CCBPointer, Mailbox32_t *Mailb
|
||||
SCSIStatus = SCSI_STATUS_OK;
|
||||
SCSIDevices[Id][Lun].InitLength = 0;
|
||||
|
||||
/* Do this here, so MODE SELECT data does not get lost in transit. */
|
||||
memset(SCSIDevices[Id][Lun].CmdBuffer, 0, 390144);
|
||||
|
||||
BuslogicDataBufferAllocate(req, req->Is24bit);
|
||||
|
||||
if (SCSIDevices[Id][Lun].LunType == SCSI_NONE) {
|
||||
|
||||
Reference in New Issue
Block a user