diff --git a/Machines/Apple/AppleIIgs/ADB.cpp b/Machines/Apple/AppleIIgs/ADB.cpp
index 9a2fc2644..c1fa0d050 100644
--- a/Machines/Apple/AppleIIgs/ADB.cpp
+++ b/Machines/Apple/AppleIIgs/ADB.cpp
@@ -55,12 +55,12 @@ uint8_t GLU::get_keyboard_data() {
 	// The classic Apple II serial keyboard register:
 	// b7:		key strobe.
 	// b6–b0:	ASCII code.
-	return registers_[0];
+	return registers_[0] | (status_ & uint8_t(CPUFlags::KeyboardDataFull)) ? 0x80 : 0x00;
 }
 
 void GLU::clear_key_strobe() {
 	// Clears the key strobe of the classic Apple II serial keyboard register.
-	registers_[0] &= 0x7f;	// ???
+	status_ &= ~uint8_t(CPUFlags::KeyboardDataFull);
 }
 
 uint8_t GLU::get_any_key_down() {
@@ -187,6 +187,7 @@ void GLU::set_port_output(int port, uint8_t value) {
 					registers_[register_address_] = register_latch_;
 					switch(register_address_) {
 						default: break;
+						case 0:		status_ |= uint8_t(CPUFlags::KeyboardDataFull);		break;
 						case 7:		status_ |= uint8_t(CPUFlags::CommandDataIsValid);	break;
 					}
 				} else {
diff --git a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme
index aa72d51d7..01069c685 100644
--- a/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme	
+++ b/OSBindings/Mac/Clock Signal.xcodeproj/xcshareddata/xcschemes/Clock Signal.xcscheme	
@@ -62,12 +62,10 @@
       </Testables>
    </TestAction>
    <LaunchAction
-      buildConfiguration = "Release"
+      buildConfiguration = "Debug"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      enableAddressSanitizer = "YES"
       enableASanStackUseAfterReturn = "YES"
-      enableUBSanitizer = "YES"
       disableMainThreadChecker = "YES"
       launchStyle = "0"
       useCustomWorkingDirectory = "NO"
diff --git a/Processors/65816/65816.hpp b/Processors/65816/65816.hpp
index 503b65e44..c154d167c 100644
--- a/Processors/65816/65816.hpp
+++ b/Processors/65816/65816.hpp
@@ -80,6 +80,7 @@ template <typename BusHandler, bool uses_ready_line> class Processor: public Pro
 
 	private:
 		BusHandler &bus_handler_;
+		int count_ = 0;
 };
 
 #include "Implementation/65816Implementation.hpp"
diff --git a/Processors/65816/Implementation/65816Implementation.hpp b/Processors/65816/Implementation/65816Implementation.hpp
index 8fe40ee92..73e9b2305 100644
--- a/Processors/65816/Implementation/65816Implementation.hpp
+++ b/Processors/65816/Implementation/65816Implementation.hpp
@@ -30,6 +30,11 @@ template <typename BusHandler, bool uses_ready_line> void Processor<BusHandler,
 
 		// Process for as much time is left and/or until ready is signalled.
 		while((!uses_ready_line || !ready_line_) && number_of_cycles > Cycles(0)) {
+			++count_;
+			if(count_ == 148933250) {
+				printf("");
+			}
+
 			const MicroOp operation = *next_op_;
 			++next_op_;
 
@@ -39,7 +44,6 @@ template <typename BusHandler, bool uses_ready_line> void Processor<BusHandler,
 #endif
 
 			switch(operation) {
-
 				//
 				// Scheduling.
 				//
@@ -66,6 +70,7 @@ template <typename BusHandler, bool uses_ready_line> void Processor<BusHandler,
 					instruction_buffer_.clear();
 					data_buffer_.clear();
 					last_operation_pc_ = registers_.pc;
+					last_operation_program_bank_ = uint8_t(registers_.program_bank >> 16);
 					memory_lock_ = false;
 				} continue;
 
diff --git a/Processors/65816/Implementation/65816Storage.hpp b/Processors/65816/Implementation/65816Storage.hpp
index 7ea71ffac..cba475fb9 100644
--- a/Processors/65816/Implementation/65816Storage.hpp
+++ b/Processors/65816/Implementation/65816Storage.hpp
@@ -262,6 +262,7 @@ struct ProcessorStorage {
 
 	// A helper for testing.
 	uint16_t last_operation_pc_;
+	uint8_t last_operation_program_bank_;
 	Instruction *active_instruction_;
 	Cycles cycles_left_to_run_;