diff options
| author | Ian C <ianc@noddybox.co.uk> | 2012-03-09 23:01:13 +0000 |
|---|---|---|
| committer | Ian C <ianc@noddybox.co.uk> | 2012-03-09 23:01:13 +0000 |
| commit | 998b64d14c9d055562d8c1611813d40af4cb030b (patch) | |
| tree | ecb3402a5c7302d86c5a364308b6d0b173e00e5c /src/Noddybox.Emulation.EightBit.Z80/Z80CpuDecodeByte.cs | |
| parent | 31203bc854656ff92844364903de9abee9daea8b (diff) | |
Further bug fixes to Z80. Now starts the Spectrum ROM OK.
Diffstat (limited to 'src/Noddybox.Emulation.EightBit.Z80/Z80CpuDecodeByte.cs')
| -rw-r--r-- | src/Noddybox.Emulation.EightBit.Z80/Z80CpuDecodeByte.cs | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/src/Noddybox.Emulation.EightBit.Z80/Z80CpuDecodeByte.cs b/src/Noddybox.Emulation.EightBit.Z80/Z80CpuDecodeByte.cs index 22a6c98..63ccc15 100644 --- a/src/Noddybox.Emulation.EightBit.Z80/Z80CpuDecodeByte.cs +++ b/src/Noddybox.Emulation.EightBit.Z80/Z80CpuDecodeByte.cs @@ -349,7 +349,14 @@ namespace Noddybox.Emulation.EightBit.Z80 break;
case 0x36: // LD (HL),n
- clock.Add(10);
+ if (shift == 0xdd || shift == 0xfd)
+ {
+ clock.Add(7);
+ }
+ else
+ {
+ clock.Add(10);
+ }
addr = (ushort)(hl.reg + Offset());
memory.Write(addr, memory.Read(PC++));
break;
@@ -1093,7 +1100,7 @@ namespace Noddybox.Emulation.EightBit.Z80 break;
case 0xc5: // PUSH BC
- clock.Add(10);
+ clock.Add(11);
PUSH(BC.reg);
break;
@@ -1112,7 +1119,7 @@ namespace Noddybox.Emulation.EightBit.Z80 case 0xc9: // RET
clock.Add(10);
- SP = POP();
+ PC = POP();
break;
case 0xca: // JP Z,nnnn
@@ -1120,8 +1127,6 @@ namespace Noddybox.Emulation.EightBit.Z80 break;
case 0xcb: // CB shift
- AddR(1);
-
// Check for IX/IY shift
//
if (shift != 0)
@@ -1139,6 +1144,7 @@ namespace Noddybox.Emulation.EightBit.Z80 }
else
{
+ AddR(1);
DecodeCB(memory.Read(PC++));
}
break;
@@ -1186,7 +1192,7 @@ namespace Noddybox.Emulation.EightBit.Z80 break;
case 0xd5: // PUSH DE
- clock.Add(10);
+ clock.Add(11);
PUSH(DE.reg);
break;
@@ -1266,7 +1272,7 @@ namespace Noddybox.Emulation.EightBit.Z80 break;
case 0xe5: // PUSH HL
- clock.Add(10);
+ clock.Add(11);
PUSH(hl.reg);
break;
@@ -1341,7 +1347,7 @@ namespace Noddybox.Emulation.EightBit.Z80 break;
case 0xf5: // PUSH AF
- clock.Add(10);
+ clock.Add(11);
PUSH((ushort)((A << 8) | (int)(F)));
break;
|
