Ejemplo n.º 1
0
 public AsmService()
 {
     _asmReader        = new AsmReader(@"s:\source\repos\Robotron_2084\Disassemblies\Robotron (Apple).asm");
     _addressByLabel   = _asmReader.AddressByLabelDictionary();
     _labelByAddress   = _asmReader.LabelByAddressDictionary();
     _asmLineByAddress = _asmReader.AsmLineByAddressDictionary();
 }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            /*
             * using (var reader = new StreamReader( @"s:\source\repos\Robotron_2084\VirtuRoX\tmp\MemoryOperations.csv" ))
             * using (var csv = new CsvReader( reader, Thread.CurrentThread.CurrentCulture )) {
             *  _records = csv.GetRecords<RecordedMemoryOperation>().ToList();
             * }
             *
             * var bla = _records.GroupBy( info => info.Address ).Select( group => new Tuple<int, int>( group.Key, group.Count() ) ).OrderBy( x => x.Item1 );
             * _dict = bla.ToDictionary( x => x.Item1 );
             * Console.WriteLine( _dict.Count );
             * object[,] res = GetReadCounts( 224, 32 );
             * Console.WriteLine( _dict.ToString() );
             * return;
             */
            /*
             * AsmLinesWindow wnd1 = new AsmLinesWindow();
             * wnd1.ShowDialog();
             * return;
             */

            Parser.Default.ParseArguments <Options>(args)
            .WithParsed <Options>(o => {
                ConsoleTraceListener tracer = new ConsoleTraceListener();
                Trace.Listeners.Add(tracer);
                Trace.WriteLine("Main() start");

                AsmReader reader = new AsmReader(@"s:\source\repos\Robotron_2084\Disassemblies\Robotron (Apple).asm");
                //reader.Test1();

                Trace.WriteLine($"Running workbench{(o.Breakpoints ? "with" : "without")} breakpoints: -b {o.Breakpoints}");

                using (_machineOperator = new MachineOperator()) {
                    if (o.Breakpoints)
                    {
                        // _machineOperator.OnPaused += MachineOperator_OnPaused;
                        _workbench = new Workbench(_machineOperator, o);
                    }
                    else
                    {
                        _machineOperator.OnLoaded += ( MachineOperator mo ) => mo.LoadStateFromFile(mo.BlaBin);
                    }

                    //Form1 frm = new Form1();
                    //frm.Populate();
                    //frm.Show();

                    _machineOperator.ShowDialog();
                }


                Trace.WriteLine("Main() end");
                Trace.Flush();
                Trace.Listeners.Remove(tracer);
                tracer.Close();
                Trace.Close();
            });
        }
Ejemplo n.º 3
0
        public AsmLinesWindow()
        {
            InitializeComponent();

            AsmReader = new AsmReader(@"s:\source\repos\Robotron_2084\Disassemblies\Robotron (Apple).asm");

            PopulateListbox();

            listBox.ItemsSource   = _items;
            listBox.SelectedIndex = 0;
            listBox.Focus();

            CreateKeyboardShortcuts();
        }
Ejemplo n.º 4
0
        public XlWorkbench()
        {
            _reader = new AsmReader(@"s:\source\repos\Robotron_2084\Disassemblies\Robotron (Apple).asm");

            using (var reader = new StreamReader(@"s:\source\repos\Robotron_2084\VirtuRoX\tmp\MemoryOperations.csv"))
                using (var csv = new CsvReader(reader, Thread.CurrentThread.CurrentCulture)) {
                    _records = csv.GetRecords <RecordedMemoryOperation>().ToList();
                }

            _readsByAddress = _records
                              .Where(info => info.Type == RecordedOperationType.Read)
                              .GroupBy(info => info.Address)
                              .ToDictionary(group => group.Key, group => group.ToList());

            _readCountsByAddress = _records
                                   .Where(info => info.Type == RecordedOperationType.Read)
                                   .GroupBy(info => info.Address)
                                   .Select(group => new Tuple <int, int>(group.Key, group.Count()))
                                   .OrderBy(x => x.Item1)
                                   .ToDictionary(x => x.Item1);

            _writeCountsByAddress = _records
                                    .Where(info => info.Type == RecordedOperationType.Write)
                                    .GroupBy(info => info.Address)
                                    .Select(group => new Tuple <int, int>(group.Key, group.Count()))
                                    .OrderBy(x => x.Item1)
                                    .ToDictionary(x => x.Item1);

            using (var reader = new StreamReader(@"s:\source\repos\Robotron_2084\VirtuRoX\tmp\ExecutedOperations.csv"))
                using (var csv = new CsvReader(reader, Thread.CurrentThread.CurrentCulture)) {
                    _executed = csv.GetRecords <RecordedExecutedOperation>().ToList();
                }
            _executedCountsByAddress = _executed
                                       .Where(info => info.Type == RecordedOperationType.Executed)
                                       .GroupBy(info => info.OpcodeRPC)
                                       .Select(group => new Tuple <int, int>(group.Key, group.Count()))
                                       .OrderBy(x => x.Item1)
                                       .ToDictionary(x => x.Item1);
        }