summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--src/devices/bus/nscsi/cd.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/devices/bus/nscsi/cd.cpp b/src/devices/bus/nscsi/cd.cpp
index 93424f493fa..4d81d3dc9a2 100644
--- a/src/devices/bus/nscsi/cd.cpp
+++ b/src/devices/bus/nscsi/cd.cpp
@@ -604,13 +604,23 @@ enum sgi_scsi_command_e : uint8_t {
* in the kernel runs, if there are SCSI problems.
*/
SGI_HD2CDROM = 0xc9,
+ /*
+ * IRIX 5.3 sends this command when it wants to eject the drive
+ */
+ SGI_EJECT = 0xc4,
};
void nscsi_cdrom_sgi_device::scsi_command()
{
switch (scsi_cmdbuf[0]) {
case SGI_HD2CDROM:
- LOG("command SGI_HD2CDROM");
+ LOG("command SGI_HD2CDROM\n");
+ // No need to do anything (yet). Just acknowledge the command.
+ scsi_status_complete(SS_GOOD);
+ break;
+
+ case SGI_EJECT:
+ LOG("command SGI_EJECT\n");
// No need to do anything (yet). Just acknowledge the command.
scsi_status_complete(SS_GOOD);
break;
@@ -627,6 +637,9 @@ bool nscsi_cdrom_sgi_device::scsi_command_done(uint8_t command, uint8_t length)
case SGI_HD2CDROM:
return length == 10;
+ case SGI_EJECT:
+ return length == 10;
+
default:
return nscsi_full_device::scsi_command_done(command, length);
}