|
@@ -25,6 +25,18 @@ static void doAssignDiskParameters(void)
|
|
|
scsiDev.phase = STATUS;
|
|
scsiDev.phase = STATUS;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// XEBEC specific commands
|
|
|
|
|
+// http://www.bitsavers.org/pdf/xebec/104524C_S1410Man_Aug83.pdf
|
|
|
|
|
+// WD100x seems to be identical to the Xebec but calls this command "Set Parameters"
|
|
|
|
|
+// http://www.bitsavers.org/pdf/westernDigital/WD100x/79-000004_WD1002-SHD_OEM_Manual_Aug1984.pdf
|
|
|
|
|
+static void doXebecInitializeDriveCharacteristics()
|
|
|
|
|
+{
|
|
|
|
|
+ if (scsiDev.status == GOOD)
|
|
|
|
|
+ {
|
|
|
|
|
+ scsiDev.phase = STATUS;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
int scsiVendorCommand()
|
|
int scsiVendorCommand()
|
|
|
{
|
|
{
|
|
|
int commandHandled = 1;
|
|
int commandHandled = 1;
|
|
@@ -48,6 +60,15 @@ int scsiVendorCommand()
|
|
|
scsiDev.phase = DATA_OUT;
|
|
scsiDev.phase = DATA_OUT;
|
|
|
scsiDev.postDataOutHook = doAssignDiskParameters;
|
|
scsiDev.postDataOutHook = doAssignDiskParameters;
|
|
|
}
|
|
}
|
|
|
|
|
+ else if (command == 0x0C &&
|
|
|
|
|
+ scsiDev.target->cfg->quirks == S2S_CFG_QUIRKS_XEBEC)
|
|
|
|
|
+ {
|
|
|
|
|
+ // XEBEC S1410: "Initialize Drive Characteristics"
|
|
|
|
|
+ // WD100x: "Set Parameters"
|
|
|
|
|
+ scsiDev.dataLen = 8;
|
|
|
|
|
+ scsiDev.phase = DATA_OUT;
|
|
|
|
|
+ scsiDev.postDataOutHook = doXebecInitializeDriveCharacteristics;
|
|
|
|
|
+ }
|
|
|
else if (command == 0x0F &&
|
|
else if (command == 0x0F &&
|
|
|
scsiDev.target->cfg->quirks == S2S_CFG_QUIRKS_XEBEC)
|
|
scsiDev.target->cfg->quirks == S2S_CFG_QUIRKS_XEBEC)
|
|
|
{
|
|
{
|