diff --git a/Components/DiskII/IWM.cpp b/Components/DiskII/IWM.cpp
index 6164d45b0..71d07f59b 100644
--- a/Components/DiskII/IWM.cpp
+++ b/Components/DiskII/IWM.cpp
@@ -122,8 +122,8 @@ uint8_t IWM::read(int address) {
 				break;
 
 				case CA1|CA0|SEL:		// Tachometer (?)
-					printf("tachometer)\n");
 					sense = drives_[active_drive_] && drives_[active_drive_]->get_tachometer() ? 0x00 : 0x80;
+					printf("tachometer [%02x])\n", sense);
 				break;
 
 //				case CA2:				// Read data, lower head.
@@ -221,10 +221,34 @@ void IWM::access(int address) {
 	}
 //	printf("-> %c%c%c%c] ", (state_ & CA2) ? '2' : '-', (state_ & CA1) ? '1' : '-', (state_ & CA0) ? '0' : '-', (state_ & SEL) ? 'S' : '-');
 
-	// React appropriately to motor requests.
+	// React appropriately to motor requests and to LSTRB register writes.
 	switch(address >> 1) {
 		default: break;
 
+		case 3:
+			if(address & 1) {
+				switch(state_ & (CA1 | CA0 | SEL)) {
+					default: break;
+
+					case 0:
+						printf("LSTRB Set stepping direction: %d\n", state_ & CA2);
+					break;
+
+					case CA0:
+						printf("LSTRB Step\n");
+					break;
+
+					case CA1:
+						printf("LSTRB Motor on\n");
+					break;
+
+					case CA1|CA0:
+						printf("LSTRB Eject disk\n");
+					break;
+				}
+			}
+		break;
+
 		case 4:
 			if(address & 1) {
 				drive_motor_on_ = true;
@@ -308,7 +332,7 @@ void IWM::propose_shift(uint8_t bit) {
 	// TODO: synchronous mode.
 	shift_register_ = uint8_t((shift_register_ << 1) | bit);
 	if(shift_register_ & 0x80) {
-		printf("%02x -> data\n", shift_register_);
+//		printf("%02x -> data\n", shift_register_);
 		data_register_ = shift_register_;
 		shift_register_ = 0;
 	}
diff --git a/Processors/68000/Implementation/68000Implementation.hpp b/Processors/68000/Implementation/68000Implementation.hpp
index adb8d2105..1fc1b13bb 100644
--- a/Processors/68000/Implementation/68000Implementation.hpp
+++ b/Processors/68000/Implementation/68000Implementation.hpp
@@ -284,7 +284,7 @@ template <class T, bool dtack_is_implicit, bool signal_will_perform> void Proces
 							}
 
 #ifdef LOG_TRACE
-							should_log |= (program_counter_.full - 4) == 0x004006F4;
+							should_log |= (program_counter_.full - 4) == 0x4181FA;//18A7A;//18AEE;
 //							should_log = ((program_counter_.full - 4) >= 0x417D9E) && ((program_counter_.full - 4) <= 0x419D96);
 #endif
 
diff --git a/Storage/Disk/Drive.cpp b/Storage/Disk/Drive.cpp
index 375c974ad..f9a5eb957 100644
--- a/Storage/Disk/Drive.cpp
+++ b/Storage/Disk/Drive.cpp
@@ -113,8 +113,11 @@ int Drive::get_head_count() {
 }
 
 bool Drive::get_tachometer() {
-	// First guess: the tachometer ticks once per rotation.
-	return get_rotation() > 0.5f;
+	// I have made a guess here that the tachometer is a symmetric square wave;
+	// if that is correct then around 60 beats per rotation appears to be correct
+	// to proceed beyond the speed checks I've so far uncovered.
+	const float ticks_per_rotation = 60.0f; // 56 was too low; 64 too high.
+	return int(get_rotation() * 2.0f * ticks_per_rotation) & 1;
 }
 
 float Drive::get_rotation() {