Ejemplo n.º 1
0
        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());
        }
Ejemplo n.º 2
0
        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());
        }
Ejemplo n.º 3
0
        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);
        }