/// <summary> /// Reset program /// </summary> /// <param name="code">Machine code</param> public void Reset(Word[] code) { for (int i = 0; i < code.Length; i++) { Code[i] = To40BitsValue(code[i]); } Machine = new IAS_Machine(Code); Machine.ManualJumpTo(StartPosiotion); }
/// <summary> /// Run OS /// </summary> public void Run() { bool error = false; try { bool use; do { Console.Clear(); Console.WriteLine("SYMULATOR IAS"); Console.WriteLine(); Console.WriteLine("Wycierz program do uruchomienia"); Console.WriteLine("Następnie naciśnij spację aby uruchomić kolejne polecenie"); Console.WriteLine("X aby wyjść"); Console.WriteLine("----------------------------------------------------------"); for (int i = 1; i <= programs.Length; i++) { Console.WriteLine($"{i}) {programs[i - 1].Name}"); } Console.WriteLine("----------------------------------------------------------"); Console.Write("Twój wybór: "); int option = -1; try { option = Convert.ToInt32(Console.ReadLine()); } catch (Exception) { } Console.Clear(); use = option > 0 && option <= programs.Length; if (use) { ProgramOn_IAS program = programs[option - 1]; Console.WriteLine($"{option}) {program.Name}"); long[] n = new long[program.Wariables]; for (int i = 0; i < program.Wariables; i++) { Console.Write($"m[{i}] = "); n[i] = Convert.ToInt64(Console.ReadLine()); } program.Reset(n); IAS_Machine machine = program.Machine; Console.WriteLine(); Console.WriteLine(machine.ToString(program.MemoryToShow)); char key = Console.ReadKey().KeyChar; int counter = 0; bool endMessage = false; while ((key != 'x' && key != 'X')) { if (!machine.HaltState) { counter++; machine.Cycle(); Console.WriteLine($"Krok: {counter}"); Console.WriteLine(machine.ToString(program.MemoryToShow)); } else if (!endMessage) { endMessage = true; Console.WriteLine("IAS skończył swoją pracę"); } key = Console.ReadKey().KeyChar; } } } while (use); } catch (Exception e) { error = true; Console.Clear(); Console.WriteLine("Maszyna IAS się zmęczyła wróć później, najprawdopodobniej zawiódł operator maszyny :("); Console.WriteLine(e.Message); } if (!error) { Console.Clear(); Console.WriteLine("Maszyna IAS dziękuje za pamięć :)"); } }