summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/nscsi_bus.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/nscsi_bus.cpp')
-rw-r--r--src/devices/machine/nscsi_bus.cpp26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/devices/machine/nscsi_bus.cpp b/src/devices/machine/nscsi_bus.cpp
index 1f95b670c44..d1fa9a1265d 100644
--- a/src/devices/machine/nscsi_bus.cpp
+++ b/src/devices/machine/nscsi_bus.cpp
@@ -14,8 +14,8 @@
#define LOG_DATA (1U << 4)
#define LOG_DATA_SENT (1U << 5)
-//#define VERBOSE (LOG_GENERAL | LOG_STATE | LOG_CONTROL | LOG_DATA)
#define VERBOSE (LOG_UNSUPPORTED)
+//#define LOG_OUTPUT_FUNC osd_printf_info
#include "logmacro.h"
@@ -80,16 +80,16 @@ void nscsi_bus_device::regen_ctrl(int refid)
data);
for(int i=0; i<devcnt; i++)
if(dev[i].ctrl) {
- LOGMASKED(LOG_CONTROL, "%d=%s%s%s%s%s%s%s%s%s\n", i,
+ LOGMASKED(LOG_CONTROL, "dev%d=%s%s%s%s%s%s%s%s%s\n", i,
dev[i].ctrl & nscsi_device::S_RST ? "R" : "",
dev[i].ctrl & nscsi_device::S_ATN ? "A" : "",
dev[i].ctrl & nscsi_device::S_ACK ? "K" : "",
dev[i].ctrl & nscsi_device::S_REQ ? "Q" : "",
+ dev[i].ctrl & nscsi_device::S_SEL ? "S" : "",
+ dev[i].ctrl & nscsi_device::S_BSY ? "B" : "",
dev[i].ctrl & nscsi_device::S_MSG ? "M" : "",
- dev[i].ctrl & nscsi_device::S_INP ? "I" : "",
dev[i].ctrl & nscsi_device::S_CTL ? "C" : "",
- dev[i].ctrl & nscsi_device::S_SEL ? "S" : "",
- dev[i].ctrl & nscsi_device::S_BSY ? "B" : "");
+ dev[i].ctrl & nscsi_device::S_INP ? "I" : "");
}
}
@@ -217,13 +217,13 @@ const char *const nscsi_full_device::command_names[256] = {
/* 50 */ "XDWRITE", "READ_DISC_INFORMATION/XPWRITE", "READ_TRACK_INFORMATION/XDREAD", "RESERVE_TRACK", "SEND_OPC_INFORMATION", "MODE_SELECT_10", "RESERVE_10", "RELEASE_10",
/* 58 */ "REPAIR_TRACK", "READ_MASTER_CUE", "MODE_SENSE_10", "CLOSE_TRACK_SESSION", "READ_BUFFER_CAPACITY", "SEND_CUE_SHEET", "PERSISTENT_RESERVE_IN", "PERSISTENT_RESERVE_OUT",
/* 80 */ "XDWRITE_EXTENDED", "REBUILD", "REGENERATE", "EXTENDED_COPY", "RECEIVE_COPY_RESULTS", "?", "?", "?",
- /* 88 */ "?", "?", "?", "?", "?", "?", "?", "?",
- /* 90 */ "?", "?", "?", "?", "?", "?", "?", "?",
- /* 98 */ "?", "?", "?", "?", "?", "?", "?", "?",
+ /* 88 */ "?", "?", "WRITE_16", "?", "?", "?", "?", "?",
+ /* 90 */ "?", "SYNCHRONIZE_CACHE_16", "?", "WRITE_SAME_16", "?", "?", "?", "?",
+ /* 98 */ "?", "?", "?", "?", "?", "?", "READ_CAPACITY_166/READ_LONG_16", "WRITE_LONG_16",
/* a0 */ "REPORT_LUNS", "BLANK", "SEND_EVENT", "REPORT_DEVICE_IDENTIFIER/SEND_KEY", "SET_DEVICE_IDENTIFIER/REPORT_KEY", "PLAY_AUDIO_12", "LOAD_UNLOAD_MEDIUM", "MOVE_MEDIUM_ATTACHED/SET_READ_AHEAD",
/* a8 */ "READ_12", "PLAY_RELATIVE_12", "WRITE_12", "?", "ERASE_12/GET_PERFORMANCE", "READ_DVD_STRUCTURE", "WRITE_AND_VERIFY_12", "VERIFY_12",
/* b0 */ "SEARCH_DATA_HIGH_12", "SEARCH_DATA_EQUAL_12", "SEARCH_DATA_LOW_12", "SET_LIMITS_12", "READ_ELEMENT_STATUS_ATTACHED", "?", "SET_STREAMING", "READ_DEFECT_DATA_12",
- /* b8 */ "?", "READ_CD_MSF", "SCAN_MMC", "SET_CD_SPEED", "PLAY_CD", "MECHANISM_STATUS", "READ_CD", "SEND_DVD_STRUCTURE",
+ /* b8 */ "?", "READ_CD_MSF", "SCAN_MMC", "SET_CD_SPEED", "PLAY_CD/SPARE_IN", "MECHANISM_STATUS/SPARE_OUT", "READ_CD", "SEND_DVD_STRUCTURE",
/* c0 */ "?", "?", "?", "?", "?", "?", "?", "?",
/* c8 */ "?", "?", "?", "?", "?", "?", "?", "?",
/* d0 */ "?", "?", "?", "?", "?", "?", "?", "?",
@@ -532,7 +532,7 @@ void nscsi_full_device::scsi_put_data(int id, int pos, uint8_t data)
scsi_sense_buffer[pos] = data;
break;
default:
- fatalerror("nscsi_full_device::scsi_put_data - unknown id\n");
+ fatalerror("nscsi_full_device::scsi_put_data - unknown id %d\n", id);
}
}
@@ -553,7 +553,9 @@ bool nscsi_full_device::scsi_command_done(uint8_t command, uint8_t length)
case 4: return true;
case 5: return length == 12;
case 6: return true;
- case 7: return true;
+ case 7: return length == 32;
+ case 8: return length == 16;
+ case 9: return length == 16;
}
return true;
}
@@ -900,7 +902,7 @@ attotime nscsi_full_device::scsi_cable_skew_delay()
// Data release delay (400ns)
attotime nscsi_full_device::scsi_data_release_delay()
{
- return attotime::from_nsec(40);
+ return attotime::from_nsec(400);
}
// Deskew delay (45ns)