From 2e3102879b2d3059f4ce0efc1a0ecd4bc3142a99 Mon Sep 17 00:00:00 2001 From: Ian C Date: Wed, 28 Dec 2011 00:11:12 +0000 Subject: Added some more base classes and started on the Z80 implementation. --- Noddybox.Emulation.EightBit/ICpu.cs | 54 +++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Noddybox.Emulation.EightBit/ICpu.cs (limited to 'Noddybox.Emulation.EightBit/ICpu.cs') diff --git a/Noddybox.Emulation.EightBit/ICpu.cs b/Noddybox.Emulation.EightBit/ICpu.cs new file mode 100644 index 0000000..139933d --- /dev/null +++ b/Noddybox.Emulation.EightBit/ICpu.cs @@ -0,0 +1,54 @@ +using System; +using System.Net; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Documents; +using System.Windows.Ink; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Animation; +using System.Windows.Shapes; + +namespace Noddybox.Emulation.EightBit +{ + /// + /// Defines an 8-bit CPU. + /// + public interface ICpu + { + /// + /// Initialise the CPU to give it access to memory and devices. + /// + /// The memory to access. + /// The devices to access. + /// The clock to use. + void Initialise(IMemory memory, IDevice device, Clock clock); + + /// + /// Resets the CPU to its initial state. + /// + void Reset(); + + /// + /// Runs the next instruction. + /// + void Step(); + + /// + /// Runs the CPU until the next frame flyback. + /// + void Run(); + + /// + /// Generates a maskable interrupt to the CPU. + /// + /// Optional value from an interrupting device. May be ignored depending on the CPU type. + void MaskableInterrupt(byte value); + + /// + /// Generates a non-maskable interrupt to the CPU. + /// + /// Optional value from an interrupting device. May be ignored depending on the CPU type. + void NonMaskableInterrupt(byte value); + } +} -- cgit v1.3