summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus
diff options
context:
space:
mode:
author arbee <rb6502@users.noreply.github.com>2024-11-29 22:08:02 -0500
committer arbee <rb6502@users.noreply.github.com>2024-11-29 22:08:02 -0500
commit5da955ae0bfd505ca8ce460fb6ef240750acd9fc (patch)
tree21b043fa8b1d6b0dd0f35147cdda0f01c3f5ed29 /src/devices/bus
parentbaeadecbaf56e3e5bde7ffce6a46569a88830700 (diff)
machine/nscsi_bus.cpp/.h: Add some more framework for future support of later SCSI command sets. [R. Belmont]
nscsi/hd.cpp: Support SYNCHRONIZE CACHE command, fix off-by-1 MODE SENSE size reporting. [R. Belmont]
Diffstat (limited to 'src/devices/bus')
-rw-r--r--src/devices/bus/nscsi/hd.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/devices/bus/nscsi/hd.cpp b/src/devices/bus/nscsi/hd.cpp
index 8e210e22d10..fe5fc45127b 100644
--- a/src/devices/bus/nscsi/hd.cpp
+++ b/src/devices/bus/nscsi/hd.cpp
@@ -245,7 +245,7 @@ void nscsi_harddisk_device::scsi_command()
case 0x01: // read-write error recovery page
scsi_cmdbuf[pos++] = 0x01; // !PS, page id
scsi_cmdbuf[pos++] = 0x0a; // page length
- scsi_cmdbuf[pos++] = 0; // various bits
+ scsi_cmdbuf[pos++] = 0x26; // various bits
scsi_cmdbuf[pos++] = 0; // read retry count
scsi_cmdbuf[pos++] = 0; // correction span
scsi_cmdbuf[pos++] = 0; // head offset count
@@ -384,7 +384,7 @@ void nscsi_harddisk_device::scsi_command()
}
if (!fail) {
- scsi_cmdbuf[0] = pos;
+ scsi_cmdbuf[0] = pos - 1;
if (pos > size)
pos = size;
@@ -444,6 +444,11 @@ void nscsi_harddisk_device::scsi_command()
break;
}
+ case SC_SYNCHRONIZE_CACHE:
+ LOG("command SYNCHRONIZE CACHE (10)\n");
+ scsi_status_complete(SS_GOOD);
+ break;
+
case SC_READ_CAPACITY: {
LOG("command READ CAPACITY\n");