// This file is part of the Noddybox.Emulation C# suite. // // Noddybox.Emulation is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Noddybox.Emulation is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Foobar. If not, see . // // Copyright (c) 2012 Ian Cowburn // using System; 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); } }