summaryrefslogtreecommitdiff
path: root/Noddybox.Emulation.EightBit/Register16.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Noddybox.Emulation.EightBit/Register16.cs')
-rw-r--r--Noddybox.Emulation.EightBit/Register16.cs88
1 files changed, 0 insertions, 88 deletions
diff --git a/Noddybox.Emulation.EightBit/Register16.cs b/Noddybox.Emulation.EightBit/Register16.cs
deleted file mode 100644
index 06c9c01..0000000
--- a/Noddybox.Emulation.EightBit/Register16.cs
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// Copyright (c) 2012 Ian Cowburn
-//
-using System;
-using System.Runtime.InteropServices;
-
-namespace Noddybox.Emulation.EightBit
-{
- /// <summary>
- /// Provides a common 8-bit register pattern, which is two 8-bit registers rolled into one.
- /// While this could be done at runtime using <see cref="BitConverter.IsLittleEndian"/> this
- /// method was chosen for speed reasons; interfaces cannot define fields, which is sensible
- /// enoough, but accessing fields directly would allow ref variables to be used with this type's
- /// fields.
- /// </summary>
- [StructLayout(LayoutKind.Explicit)]
- public struct Register16
- {
-#if TARGET_IS_BIGENDIAN
-
- /// <summary>
- /// The 16-bit register.
- /// </summary>
- [FieldOffset(0)]
- public ushort reg;
-
- /// <summary>
- /// The high 8-bits of the register.
- /// </summary>
- [FieldOffset(0)]
- public byte high;
-
- /// <summary>
- /// The low 8-bits of the register.
- /// </summary>
- [FieldOffset(1)]
- public byte low;
-
-#else
-
- /// <summary>
- /// The 16-bit register.
- /// </summary>
- [FieldOffset(0)]
- public ushort reg;
-
- /// <summary>
- /// The low 8-bits of the register.
- /// </summary>
- [FieldOffset(0)]
- public byte low;
-
- /// <summary>
- /// The high 8-bits of the register.
- /// </summary>
- [FieldOffset(1)]
- public byte high;
-
-#endif
-
- /// <summary>
- /// Public constructor. This is provided to stop the compiler complaining when you use the struct as it
- /// doesn't realise that setting <see cref="reg"/> will also set <see cref="low"/> and <see cref="high"/>.
- /// </summary>
- /// <param name="val">The 16-bit value to assign.</param>
- public Register16(ushort val)
- {
- high = 0;
- low = 0;
- reg = val;
- }
-
- /// <summary>
- /// Used to verify the compile-time setting at runtime.
- /// </summary>
- public static void Verify()
- {
- Register16 r = new Register16(0);
-
- r.reg = 0x1234;
-
- if (r.low != 0x24 || r.high != 0x12)
- {
- throw new Exception("Compile time endian setting incorrect");
- }
- }
- }
-}