public void CanLoadProgram() { Memory memory = new Memory(); byte[] program = new byte[2]; program[0] = 0x00; program[1] = 0xee; memory.LoadProgram(program); Assert.AreEqual(0x00, memory.GetValue(0x200)); Assert.AreEqual(0xee, memory.GetValue(0x201)); }
public void Run(string programpath) { var display = new ConsoleDisplay(); var keyboard = new ConsoleKeyboard(); memory = new Memory(); cpu = new CPU(memory, display, keyboard); disassembler = new Disassembler(); // Load ROM var romfile = File.OpenRead("ROM.bin"); var rom = new byte[512]; romfile.Read(rom, 0, 512); romfile.Close(); memory.InitializeROM(rom); // Load Program var programfile = File.OpenRead(programpath); var program = new byte[3584]; programfile.Read(program, 0, 3584); memory.LoadProgram(program); // Start clock Stopwatch sw = new Stopwatch(); var cpuspeed = 6 * Stopwatch.Frequency / 1000; while (true){ var debug = keyboard.CheckKeys(); if (debug){ StartDebugging(); debug = false; continue; } if(!sw.IsRunning || sw.ElapsedTicks > cpuspeed) { cpu.Clock(); sw.Restart(); } } }
protected override void OnCreate(Bundle bundle) { base.OnCreate(bundle); SetContentView(Chip8Android.Resource.Layout.Main); SetClickHandler(Resource.Id.button0); SetClickHandler(Resource.Id.button1); SetClickHandler(Resource.Id.button2); SetClickHandler(Resource.Id.button3); SetClickHandler(Resource.Id.button4); SetClickHandler(Resource.Id.button5); SetClickHandler(Resource.Id.button6); SetClickHandler(Resource.Id.button7); SetClickHandler(Resource.Id.button8); SetClickHandler(Resource.Id.button9); SetClickHandler(Resource.Id.buttonA); SetClickHandler(Resource.Id.buttonB); SetClickHandler(Resource.Id.buttonC); SetClickHandler(Resource.Id.buttonD); SetClickHandler(Resource.Id.buttonE); SetClickHandler(Resource.Id.buttonF); Chip8View view = (Chip8View)FindViewById(Resource.Id.chip8view); var memory = new Memory(); memory.InitializeInterpreterBuffer(); int appno = 2; var apps = new string[]{ "IBM Logo.ch8", "Brix.ch8", "Keypad Test.ch8", "Trip8 Demo.ch8" }; var stream = Assets.Open(apps[appno]); byte[] buffer = new byte[3584]; stream.Read(buffer, 0, 3584); memory.LoadProgram(buffer); keyboard = new KeyboardHandler(); var chip8 = new CPU(memory, view, keyboard); timer = new System.Timers.Timer(1); timer.Elapsed += (sender, e) => chip8.Clock(); timer.Enabled = true; // GridView view = (GridView)FindViewById(Resource.Id.gridview); // view.Adapter = new ImageAdapter(this.BaseContext); }