private void ShowCode(string[] command) { if (string.IsNullOrWhiteSpace(cartridgePath)) { Console.Error.WriteLine("You must load a cartridge first!"); return; } if (command.Length < 3) { Console.Error.WriteLine("You must specify an address range."); return; } var sb = new StringBuilder(); for (int i = Int32.Parse(command[1], System.Globalization.NumberStyles.HexNumber); i <= Int32.Parse(command[2], System.Globalization.NumberStyles.HexNumber); i++) { var instruction = string.Format("{0:X2} 0x{1:X2} {2}\n", i, cartridge[i], Mnemonics.Mnemonic(cartridge[i]).Text); if (Mnemonics.Mnemonic(cartridge[i]).ExtraOpcodes == 1) { instruction = instruction.Replace("n", string.Format("0x{0:X2}", cartridge[++i])); } if (Mnemonics.Mnemonic(cartridge[i]).ExtraOpcodes == 2) { var first = cartridge[++i]; var second = cartridge[++i]; instruction = instruction.Replace("nn", string.Format("0x{0:X2}{1:X2}", second, first)); } sb.Append(instruction); } Console.WriteLine(sb.ToString()); }
private void PrintEntryPoint() { if (string.IsNullOrWhiteSpace(cartridgePath)) { Console.Error.WriteLine("You must load a cartridge first!"); return; } var sb = new StringBuilder(); for (int i = 0x100; i < 0x103; i++) { var instruction = string.Format("{0:X2} 0x{1:X2} {2}\n", i, cartridge[i], Mnemonics.Mnemonic(cartridge[i]).Text); if (Mnemonics.Mnemonic(cartridge[i]).ExtraOpcodes == 1) { instruction = instruction.Replace("n", string.Format("0x{0:X2}", cartridge[++i])); } if (Mnemonics.Mnemonic(cartridge[i]).ExtraOpcodes == 2) { var first = cartridge[++i]; var second = cartridge[++i]; instruction = instruction.Replace("nn", string.Format("0x{0:X2}{1:X2}", second, first)); } sb.Append(instruction); } Console.WriteLine(sb.ToString()); }
private void PrintDevelopementStatus() { var counter = 0; for (int i = 0; i < 256; i++) { if (Mnemonics.Mnemonic((byte)i).Text.CompareTo("UNKNOWN") == 0) { counter++; } } Console.WriteLine("So far {0} out of 256 instructions have been implemented. Only {1} to go!", 256 - counter, counter); }