summaryrefslogtreecommitdiff
path: root/src/Noddybox.Emulation.EightBit.Z80
diff options
context:
space:
mode:
Diffstat (limited to 'src/Noddybox.Emulation.EightBit.Z80')
-rw-r--r--src/Noddybox.Emulation.EightBit.Z80/Z80Cpu.cs163
1 files changed, 160 insertions, 3 deletions
diff --git a/src/Noddybox.Emulation.EightBit.Z80/Z80Cpu.cs b/src/Noddybox.Emulation.EightBit.Z80/Z80Cpu.cs
index f937ea9..676a1b1 100644
--- a/src/Noddybox.Emulation.EightBit.Z80/Z80Cpu.cs
+++ b/src/Noddybox.Emulation.EightBit.Z80/Z80Cpu.cs
@@ -72,14 +72,14 @@ namespace Noddybox.Emulation.EightBit.Z80
// Auxilliary registers and flags
//
- private ushort I;
+ private byte I;
private byte R;
private bool IFF1;
private bool IFF2;
private bool raise;
private bool nmi;
private byte devbyte;
- private int IM;
+ private byte IM;
private bool HALT;
private int shift;
@@ -126,7 +126,7 @@ namespace Noddybox.Emulation.EightBit.Z80
case 2:
PUSH(PC);
- PC = (ushort)((I << 8) + devbyte);
+ PC = (ushort)(((ushort)I << 8) + devbyte);
break;
default:
@@ -287,6 +287,163 @@ namespace Noddybox.Emulation.EightBit.Z80
#endregion
+ #region Public members
+
+ /// <summary>
+ /// Set/get the current state of the accumulator.
+ /// </summary>
+ public byte Acummulator
+ {
+ get {return A;}
+ set {A = value;}
+ }
+
+ /// <summary>
+ /// Set/get the current state of the flag register.
+ /// </summary>
+ public Z80Flags StatusFlags
+ {
+ get {return F;}
+ set {F = value;}
+ }
+
+ /// <summary>
+ /// The current state of the BC register pair.
+ /// </summary>
+ public Register16 BC_Register
+ {
+ get { return BC; }
+ set { BC = value; }
+ }
+
+ /// <summary>
+ /// The current state of the DE register pair.
+ /// </summary>
+ public Register16 DE_Register
+ {
+ get { return DE; }
+ set { DE = value; }
+ }
+
+ /// <summary>
+ /// The current state of the HL register pair.
+ /// </summary>
+ public Register16 HL_Register
+ {
+ get { return HL; }
+ set { HL = value; }
+ }
+
+ /// <summary>
+ /// The current state of the stack pointer.
+ /// </summary>
+ public ushort StackPointer
+ {
+ get { return SP; }
+ set { SP = value; }
+ }
+
+ /// <summary>
+ /// The current state of the program counter.
+ /// </summary>
+ public ushort ProgramCounter
+ {
+ get { return PC; }
+ set { PC = value; }
+ }
+
+ /// <summary>
+ /// The alternate AF' register.
+ /// </summary>
+ public Register16 AF_Alternate
+ {
+ get { return AF_; }
+ set { AF_ = value; }
+ }
+
+ /// <summary>
+ /// The alternate BC' register.
+ /// </summary>
+ public Register16 BC_Alternate
+ {
+ get { return BC_; }
+ set { BC_ = value; }
+ }
+
+ /// <summary>
+ /// The alternate DE' register.
+ /// </summary>
+ public Register16 DE_Alternate
+ {
+ get { return DE_; }
+ set { DE_ = value; }
+ }
+
+ /// <summary>
+ /// The alternate HL' register.
+ /// </summary>
+ public Register16 HL_Alternate
+ {
+ get { return HL_; }
+ set { HL_ = value; }
+ }
+
+ /// <summary>
+ /// The state of the HALT line.
+ /// </summary>
+ public bool HaltLine
+ {
+ get { return HALT; }
+ set { HALT = value; }
+ }
+
+ /// <summary>
+ /// The state of the IFF1 register.
+ /// </summary>
+ public bool IFF1_Regsiter
+ {
+ get { return IFF1; }
+ set { IFF1 = value; }
+ }
+
+ /// <summary>
+ /// The state of the IFF2 register.
+ /// </summary>
+ public bool IFF2_Regsiter
+ {
+ get { return IFF2; }
+ set { IFF2 = value; }
+ }
+
+ /// <summary>
+ /// The state of the IM register.
+ /// </summary>
+ public byte IM_Register
+ {
+ get { return IM; }
+ set { IM = value; }
+ }
+
+ /// <summary>
+ /// The state of the RAM refresh register.
+ /// </summary>
+ public byte Refresh
+ {
+ get { return R; }
+ set { R = value; }
+ }
+
+ /// <summary>
+ /// The state of the interrupt vector register.
+ /// </summary>
+ public byte InterruptVector
+ {
+ get { return I; }
+ set { I = value; }
+ }
+
+ #endregion
+
#region Events
/// <summary>