Esempio n. 1
0
        public override void ReadSource(SymSource aSource, TSynchronicity aSynchronicity)
        {
            SymbolSource source = (SymbolSource)aSource;
            //
            SymbolFileData   data   = source.ExcavateData();
            SymbolFileReader reader = new SymbolFileReader(source, data);

            reader.Read(aSynchronicity);
        }
Esempio n. 2
0
        public override void Main(Z80DasmArgs args)
        {
            WriteInfoMessage("Disassembling ~Cyan~{0}~R~", args.InputBinaryFile);


            var symbolFile = Path.ChangeExtension(
                Path.GetFullPath(args.InputBinaryFile.FullName),
                "symbols");

            Dictionary <ushort, string> symbols;

            if (File.Exists(symbolFile))
            {
                WriteSuccessMessage("Found symbol file ~Cyan~{0}~R~", symbolFile);
                symbols = SymbolFileReader.Read(symbolFile);
            }
            else
            {
                WriteInfoMessage("Could not find symbol file for binary");
                symbols = new Dictionary <ushort, string>();
            }

            string dasm;

            using (var reader = new BinaryReader(args.InputBinaryFile.OpenRead()))
            {
                var disassembler = new Z80Disassembler(reader, symbols);
                var instructions = disassembler.Disassemble();
                dasm = new Z80AssemblyFormatter(symbols).Format(instructions);
            }

            if (!string.IsNullOrEmpty(args.OutputDisassemblyFile))
            {
                WriteInfoMessage(
                    "Writing disassembled instructions to ~Cyan~{0}~R~",
                    args.OutputDisassemblyFile);

                File.WriteAllText(args.OutputDisassemblyFile, dasm);
            }
            else
            {
                Cli.WriteLine(Cli.Escape(dasm));
            }

            WriteSuccessMessage("Done");
        }