public void ProgramSignals() { var cpu = new Cpu(2048, 256); IdleProcess.Initialise(cpu, IdleProcess.Instructions); var prog1 = cpu.Load(); var prog2 = cpu.Load(); cpu.Compile(prog1, TestPrograms.P1); cpu.Compile(prog2, TestPrograms.P2); cpu.Run(prog1); cpu.Run(prog2); while (prog1.IsRunning || prog2.IsRunning) { cpu.Tick(); } Assert.That(prog1.ExitCode, Is.EqualTo(1)); Assert.That(prog2.ExitCode, Is.EqualTo(1)); }
public void RunCpuWithProgram() { var cpu = new Cpu(2048, 256); IdleProcess.Initialise(cpu, IdleProcess.Instructions); var prog1 = cpu.Load(); cpu.Compile(prog1, TestPrograms.ReallySimpleProgram); cpu.Run(prog1); while ( prog1.IsRunning ) { cpu.Tick(); } Assert.That(prog1.ExitCode, Is.EqualTo(1)); }
private ProcessContextBlock Run(IEnumerable<Instruction> program, Cpu cpu) { IdleProcess.Initialise(cpu); var prog1 = cpu.Load(); var codeSize = cpu.Compile(prog1, program); Console.WriteLine("Code Size: {0} bytes", codeSize); cpu.Run(prog1); var timeout = 1000; while (prog1.IsRunning) { cpu.Tick(); timeout--; if (timeout == 0) throw new Exception("Timed out while running program"); } return prog1; }