From 350483fcec360972b6c3a9cefe0b5b7d419d030b Mon Sep 17 00:00:00 2001 From: Adrian Conlon Date: Tue, 5 Aug 2025 00:14:05 +0100 Subject: [PATCH] Catch another couple of Z80 timing issues --- Z80/Z80.HarteTest/Checker.cs | 8 ++++---- Z80/Z80.cs | 11 +++++++++-- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/Z80/Z80.HarteTest/Checker.cs b/Z80/Z80.HarteTest/Checker.cs index 2ab0d91..92da725 100644 --- a/Z80/Z80.HarteTest/Checker.cs +++ b/Z80/Z80.HarteTest/Checker.cs @@ -201,15 +201,15 @@ var interestingCycleData = expectedCycle.Value is not null; if (interestingCycleData) { - var expectedAddress = expectedCycle.Address; - var actualAddress = actualCycle.Address; - _ = this.Check("Cycle address", expectedAddress, actualAddress); - var expectedValue = expectedCycle.Value ?? throw new InvalidOperationException("Expected cycle value cannot be null."); var actualValue = actualCycle.Value ?? throw new InvalidOperationException("Actual cycle value cannot be null."); _ = this.Check("Cycle value", expectedValue, actualValue); } + var expectedAddress = expectedCycle.Address; + var actualAddress = actualCycle.Address; + _ = this.Check("Cycle address", expectedAddress, actualAddress); + var expectedAction = expectedCycle.Type; var actualAction = actualCycle.Type; _ = this.Check("Cycle action", expectedAction, actualAction); diff --git a/Z80/Z80.cs b/Z80/Z80.cs index 85fe965..2bb9e98 100644 --- a/Z80/Z80.cs +++ b/Z80/Z80.cs @@ -1225,7 +1225,14 @@ namespace Z80 this.FetchDisplacement(); } - this.R(y, this.FetchByte(), 3); // LD r,n + { + var value = this.FetchByte(); // LD r,n + if (memoryY) + { + this.Tick(2); + } + this.R(y, value); + } break; case 7: // Assorted operations on accumulator/flags @@ -1315,7 +1322,7 @@ namespace Z80 if (normal) { var value = this.R(z); - this.R(y, value, 1); + this.R(y, value); } } else