//
// 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);
}
}