|
@@ -153,6 +153,9 @@ static void printNewPhase(int phase, bool initiator = false)
|
|
|
if (!initiator && scsiDev.target->syncOffset > 0)
|
|
if (!initiator && scsiDev.target->syncOffset > 0)
|
|
|
debuglog("---- DATA_OUT, syncOffset ", (int)scsiDev.target->syncOffset,
|
|
debuglog("---- DATA_OUT, syncOffset ", (int)scsiDev.target->syncOffset,
|
|
|
" syncPeriod ", (int)scsiDev.target->syncPeriod);
|
|
" syncPeriod ", (int)scsiDev.target->syncPeriod);
|
|
|
|
|
+ // log Xebec vendor commands data
|
|
|
|
|
+ else if (scsiDev.cdb[0] == 0x0C || scsiDev.cdb[0] == 0x0F)
|
|
|
|
|
+ g_LogData = true;
|
|
|
else
|
|
else
|
|
|
debuglog("---- DATA_OUT");
|
|
debuglog("---- DATA_OUT");
|
|
|
break;
|
|
break;
|
|
@@ -185,6 +188,17 @@ void scsiLogPhaseChange(int new_phase)
|
|
|
{
|
|
{
|
|
|
debuglog("---- Total IN: ", g_InByteCount, " OUT: ", g_OutByteCount, " CHECKSUM: ", (int)g_DataChecksum);
|
|
debuglog("---- Total IN: ", g_InByteCount, " OUT: ", g_OutByteCount, " CHECKSUM: ", (int)g_DataChecksum);
|
|
|
}
|
|
}
|
|
|
|
|
+ // log Xebec vendor command
|
|
|
|
|
+ if (old_phase == DATA_OUT && scsiDev.cdb[0] == 0x0C && g_OutByteCount == 8)
|
|
|
|
|
+ {
|
|
|
|
|
+ int cylinders = ((uint16_t)scsiDev.data[0] << 8) + scsiDev.data[1];
|
|
|
|
|
+ int heads = scsiDev.data[2];
|
|
|
|
|
+ int reducedWrite = ((uint16_t)scsiDev.data[3] << 8) + scsiDev.data[4];
|
|
|
|
|
+ int writePrecomp = ((uint16_t)scsiDev.data[5] << 8) + scsiDev.data[6];
|
|
|
|
|
+ int eccBurst = scsiDev.data[7];
|
|
|
|
|
+ debuglog("---- Xebec Initialize Drive Characteristics: cylinders=", cylinders, " heads=", heads,
|
|
|
|
|
+ " reducedWrite=", reducedWrite, " writePrecomp=", writePrecomp, " eccBurst=", eccBurst);
|
|
|
|
|
+ }
|
|
|
g_InByteCount = g_OutByteCount = 0;
|
|
g_InByteCount = g_OutByteCount = 0;
|
|
|
g_DataChecksum = 0;
|
|
g_DataChecksum = 0;
|
|
|
|
|
|