public void OP_SIGNAL()
{
var Signal = Extract(0, 16);
var Behaviour = (SignalBehavior)Extract(16, 8);
Console.Out.WriteLineColored(ConsoleColor.Green, "OP_SIGNAL: {0}, {1}", Signal, Behaviour);
switch (Behaviour)
{
case SignalBehavior.PSP_GE_SIGNAL_NONE:
break;
case SignalBehavior.PSP_GE_SIGNAL_HANDLER_CONTINUE:
case SignalBehavior.PSP_GE_SIGNAL_HANDLER_PAUSE:
case SignalBehavior.PSP_GE_SIGNAL_HANDLER_SUSPEND:
var Next = GpuDisplayList.ReadInstructionAndMoveNext();
if (Next.OpCode != GpuOpCodes.END)
{
throw (new NotImplementedException("Error! Next Signal not an END! : " + Next.OpCode));
}
break;
default:
throw(new NotImplementedException(String.Format("Not implemented {0}", Behaviour)));
}
GpuDisplayList.DoSignal(PC, Signal, Behaviour, ExecuteNow: true);
}