The Iomega ZIP sector access commands no longer read/write the data sector by sector (there was absolutely no need for that since that was done before ever asserting DRQ and was a left-over from the CD-ROM where it does that to make IOCTL happy);

The CD-ROM and Iomega ZIP drives now clear the error bit when the PACKET COMMAND command is issued, fixes the Iomega GUEST.EXE for DOS hang when run while the Iomega ZIP drive is empty.
This commit is contained in:
OBattler
2018-03-20 19:45:45 +01:00
parent df746297c2
commit ab3cce21ee
2 changed files with 21 additions and 35 deletions

View File

@@ -9,7 +9,7 @@
* Implementation of the IDE emulation for hard disks and ATAPI
* CD-ROM devices.
*
* Version: @(#)hdc_ide.c 1.0.42 2018/03/20
* Version: @(#)hdc_ide.c 1.0.43 2018/03/20
*
* Authors: Sarah Walker, <http://pcem-emulator.co.uk/>
* Miran Grca, <mgrca8@gmail.com>
@@ -1541,7 +1541,7 @@ void writeide(int ide_board, uint16_t addr, uint8_t val)
zip[atapi_zip_drives[ide->channel]].packet_status = ZIP_PHASE_IDLE;
zip[atapi_zip_drives[ide->channel]].pos=0;
zip[atapi_zip_drives[ide->channel]].phase = 1;
zip[atapi_zip_drives[ide->channel]].status = READY_STAT | DRQ_STAT | (zip[atapi_zip_drives[ide->channel]].status & ERR_STAT);
zip[atapi_zip_drives[ide->channel]].status = READY_STAT | DRQ_STAT;
ide_irq_raise(ide); /* Interrupt IRQ, requires IRQ on any DRQ. */
}
else if (ide_drive_is_cdrom(ide))
@@ -1549,7 +1549,7 @@ void writeide(int ide_board, uint16_t addr, uint8_t val)
cdrom[atapi_cdrom_drives[ide->channel]]->packet_status = CDROM_PHASE_IDLE;
cdrom[atapi_cdrom_drives[ide->channel]]->pos=0;
cdrom[atapi_cdrom_drives[ide->channel]]->phase = 1;
cdrom[atapi_cdrom_drives[ide->channel]]->status = READY_STAT | DRQ_STAT | (cdrom[atapi_cdrom_drives[ide->channel]]->status & ERR_STAT);
cdrom[atapi_cdrom_drives[ide->channel]]->status = READY_STAT | DRQ_STAT;
}
else
{