From eafbc12cc19fef07ac210bae7215f557d62a79de Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Sun, 25 Aug 2019 17:43:14 -0400 Subject: [PATCH] Ensures a clean entry into the command phase. --- Storage/MassStorage/SCSI/TargetImplementation.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Storage/MassStorage/SCSI/TargetImplementation.hpp b/Storage/MassStorage/SCSI/TargetImplementation.hpp index 96f11d64d..d46a44e38 100644 --- a/Storage/MassStorage/SCSI/TargetImplementation.hpp +++ b/Storage/MassStorage/SCSI/TargetImplementation.hpp @@ -36,6 +36,8 @@ template void Target::scsi_bus_did_change(Bus *, B ((new_state & (Line::SelectTarget | Line::Busy | Line::Input)) == Line::SelectTarget) ) { phase_ = Phase::Command; + command_.resize(0); + command_pointer_ = 0; bus_state_ |= Line::Busy; // Initiate the command phase: request a command byte. bus_.set_device_output(scsi_bus_device_id_, bus_state_); } @@ -60,6 +62,7 @@ template void Target::scsi_bus_did_change(Bus *, B command_[command_pointer_] = uint8_t(new_state); ++command_pointer_; if(command_pointer_ == command_.size()) { + printf("Dispatching command\n"); dispatch_command(); // TODO: if(!dispatch_command()) signal_error_somehow();