From 8f3aef1c3eca26c57886ab71fe8c9a7e8ccc0e51 Mon Sep 17 00:00:00 2001 From: "Adrian.Conlon" Date: Sun, 11 Jun 2017 23:56:11 +0100 Subject: [PATCH] Make LR35902 a little more like the Z80 Signed-off-by: Adrian.Conlon --- LR35902/src/LR35902.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/LR35902/src/LR35902.cpp b/LR35902/src/LR35902.cpp index 994c722..0c50c85 100644 --- a/LR35902/src/LR35902.cpp +++ b/LR35902/src/LR35902.cpp @@ -21,6 +21,7 @@ void EightBit::LR35902::initialise() { IntelProcessor::initialise(); AF().word = 0xffff; + BC().word = 0xffff; DE().word = 0xffff; HL().word = 0xffff; @@ -535,19 +536,23 @@ void EightBit::LR35902::executeOther(int x, int y, int z, int p, int q) { case 0: switch (p) { case 0: // LD (BC),A - m_memory.set(BC().word, A()); + MEMPTR() = BC(); + setViaMemptr(A()); cycles += 2; break; case 1: // LD (DE),A - m_memory.set(DE().word, A()); + MEMPTR() = DE(); + setViaMemptr(A()); cycles += 2; break; case 2: // GB: LDI (HL),A - m_memory.set(HL().word++, A()); + MEMPTR().word = HL().word++; + setViaMemptr(A()); cycles += 2; break; case 3: // GB: LDD (HL),A - m_memory.set(HL().word--, A()); + MEMPTR().word = HL().word--; + setViaMemptr(A()); cycles += 2; break; } @@ -555,19 +560,23 @@ void EightBit::LR35902::executeOther(int x, int y, int z, int p, int q) { case 1: switch (p) { case 0: // LD A,(BC) - A() = m_memory.get(BC().word); + MEMPTR() = BC(); + A() = getViaMemptr(); cycles += 2; break; case 1: // LD A,(DE) - A() = m_memory.get(DE().word); + MEMPTR() = DE(); + A() = getViaMemptr(); cycles += 2; break; case 2: // GB: LDI A,(HL) - A() = m_memory.get(HL().word++); + MEMPTR().word = HL().word++; + A() = m_memory.reference(); cycles += 2; break; case 3: // GB: LDD A,(HL) - A() = m_memory.get(HL().word--); + MEMPTR().word = HL().word--; + A() = m_memory.reference(); cycles += 2; break; }