Fixed the operation of the WIN_DRIVE_DIAGNOSTICS command for ATAPI CD-ROM (it's almost never used but eh);
Properly fixed the CPU manufacturer/type selection bug after changing machine; The Samspung SPC-4200 now has a PS/2 port.
This commit is contained in:
19
src/ide.c
19
src/ide.c
@@ -1059,10 +1059,21 @@ void writeide(int ide_board, uint16_t addr, uint8_t val)
|
||||
case WIN_SLEEP1:
|
||||
if (val == WIN_DRIVE_DIAGNOSTICS)
|
||||
{
|
||||
ide->atastat = BUSY_STAT;
|
||||
if (ide_drive_is_cdrom(ide))
|
||||
{
|
||||
cdrom[atapi_cdrom_drives[ide->channel]].status = BUSY_STAT;
|
||||
}
|
||||
else
|
||||
{
|
||||
ide->atastat = BUSY_STAT;
|
||||
}
|
||||
timer_process();
|
||||
callbackide(ide_board);
|
||||
idecallback[ide_board]=200*IDE_TIME;
|
||||
if (ide_drive_is_cdrom(ide))
|
||||
{
|
||||
cdrom[atapi_cdrom_drives[ide->channel]].callback = 200 * IDE_TIME;
|
||||
}
|
||||
idecallback[ide_board] = 200 * IDE_TIME;
|
||||
timer_update_outstanding();
|
||||
}
|
||||
else
|
||||
@@ -1078,9 +1089,9 @@ void writeide(int ide_board, uint16_t addr, uint8_t val)
|
||||
timer_process();
|
||||
if (ide_drive_is_cdrom(ide))
|
||||
{
|
||||
cdrom[atapi_cdrom_drives[ide->channel]].callback = ((val == WIN_DRIVE_DIAGNOSTICS) ? 200 : 30) * IDE_TIME;
|
||||
cdrom[atapi_cdrom_drives[ide->channel]].callback = 30 * IDE_TIME;
|
||||
}
|
||||
idecallback[ide_board] = ((val == WIN_DRIVE_DIAGNOSTICS) ? 200 : 30) * IDE_TIME;
|
||||
idecallback[ide_board] = 30 * IDE_TIME;
|
||||
timer_update_outstanding();
|
||||
}
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user