The AHA/BusLogic reset controllers' BIOS commands now return 0x80 (no device present error) for CD-ROM drives if the device is market as not supporting CD-ROM boot, fixes sending of WRITE (10) to CD-ROM drives followed by hang;
The CD-ROM and SCSI disk REQUEST SENSE commands no longer incorrectly set the phase to status; REQUEST SENSE with non-data direction control byte is now treated as a request to send sense bytes from the command directly to the sense buffer; SCSI and SLiRP threads now terminate themselves again when out of the while loop; SCSI and SLiRP mutexes are now closed when the threads terminate themselves; Fixed a bug causing the "Press F12+F8 or middle mouse button to release" string on the title bar to get corrupt.
This commit is contained in:
@@ -2197,14 +2197,12 @@ void cdrom_request_sense(uint8_t id, uint8_t *buffer, uint8_t alloc_length)
|
||||
|
||||
if ((cdrom_sense_key > 0) && ((cdrom[id].cd_status < CD_STATUS_PLAYING) || (cdrom[id].cd_status == CD_STATUS_STOPPED)) && cdrom_playing_completed(id))
|
||||
{
|
||||
SCSIPhase = SCSI_PHASE_STATUS;
|
||||
buffer[2]=SENSE_ILLEGAL_REQUEST;
|
||||
buffer[12]=ASC_AUDIO_PLAY_OPERATION;
|
||||
buffer[13]=ASCQ_AUDIO_PLAY_OPERATION_COMPLETED;
|
||||
}
|
||||
else if ((cdrom_sense_key == 0) && (cdrom[id].cd_status >= CD_STATUS_PLAYING) && (cdrom[id].cd_status != CD_STATUS_STOPPED))
|
||||
{
|
||||
SCSIPhase = SCSI_PHASE_STATUS;
|
||||
buffer[2]=SENSE_ILLEGAL_REQUEST;
|
||||
buffer[12]=ASC_AUDIO_PLAY_OPERATION;
|
||||
buffer[13]=(cdrom[id].cd_status == CD_STATUS_PLAYING) ? ASCQ_AUDIO_PLAY_OPERATION_IN_PROGRESS : ASCQ_AUDIO_PLAY_OPERATION_PAUSED;
|
||||
@@ -2213,7 +2211,6 @@ void cdrom_request_sense(uint8_t id, uint8_t *buffer, uint8_t alloc_length)
|
||||
{
|
||||
if (cdrom[id].unit_attention && (cdrom_sense_key == 0))
|
||||
{
|
||||
SCSIPhase = SCSI_PHASE_STATUS;
|
||||
buffer[2]=SENSE_UNIT_ATTENTION;
|
||||
buffer[12]=ASC_MEDIUM_MAY_HAVE_CHANGED;
|
||||
buffer[13]=0;
|
||||
|
||||
Reference in New Issue
Block a user