From 184b3716490c3b1b946b89d91b4c5677ca02629c Mon Sep 17 00:00:00 2001 From: Thomas Harte Date: Tue, 20 Jun 2017 21:48:50 -0400 Subject: [PATCH] Attempted to get to 'proper' timing for LD (IX+d),n, albeit that proper is a guess. --- .../Clock SignalTests/Z80MachineCycleTests.swift | 14 ++++++++++++++ Processors/Z80/Z80.hpp | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/OSBindings/Mac/Clock SignalTests/Z80MachineCycleTests.swift b/OSBindings/Mac/Clock SignalTests/Z80MachineCycleTests.swift index 29a489a8a..1109db5d6 100644 --- a/OSBindings/Mac/Clock SignalTests/Z80MachineCycleTests.swift +++ b/OSBindings/Mac/Clock SignalTests/Z80MachineCycleTests.swift @@ -156,6 +156,20 @@ class Z80MachineCycleTests: XCTestCase { ) } + // LD (IX+d), n + func testLDIXdn() { + test( + program: [0xdd, 0x36, 0x10, 0x80], + busCycles: [ + MachineCycle(operation: .readOpcode, length: 4), + MachineCycle(operation: .readOpcode, length: 4), + MachineCycle(operation: .read, length: 3), + MachineCycle(operation: .internalOperation, length: 5), + MachineCycle(operation: .read, length: 3), + ] + ) + } + // LD A, (DE) func testLDADE() { test( diff --git a/Processors/Z80/Z80.hpp b/Processors/Z80/Z80.hpp index 3030d28c4..fd76f474e 100644 --- a/Processors/Z80/Z80.hpp +++ b/Processors/Z80/Z80.hpp @@ -585,7 +585,7 @@ template class Processor { /* 0x33 INC SP */ Instr(4, {MicroOp::Increment16, &sp_.full}), /* 0x34 INC (HL) */ StdInstr(INDEX(), Read4(INDEX_ADDR(), temp8_), {MicroOp::Increment8, &temp8_}, Write3(INDEX_ADDR(), temp8_)), /* 0x35 DEC (HL) */ StdInstr(INDEX(), Read4(INDEX_ADDR(), temp8_), {MicroOp::Decrement8, &temp8_}, Write3(INDEX_ADDR(), temp8_)), - /* 0x36 LD (HL), n */ StdInstr({MicroOp::IndexedPlaceHolder}, ReadInc(pc_, temp8_), {MicroOp::CalculateIndexAddress, &index}, ReadInc(pc_, temp8_), Write3(INDEX_ADDR(), temp8_)), + /* 0x36 LD (HL), n */ StdInstr(INDEX(), ReadInc(pc_, temp8_), Write3(INDEX_ADDR(), temp8_)), /* 0x37 SCF */ StdInstr({MicroOp::SCF}), /* 0x38 JR C */ JR(TestC), /* 0x39 ADD HL, SP */ ADD16(index, sp_),