static void Main(string[] args) { TryteALU alu = new TryteALU(); alu.BusOutput += (s, t) => { Console.WriteLine($"[{t.ToString("s")}] {t}"); }; while (true) { Action <Tryte, int> DisplayPrevTryte = (t, offset) => { Console.SetCursorPosition(offset, Console.CursorTop - 1); Console.WriteLine($"{t.ToString("s")} {t}"); }; Console.Write("Trit S: "); if (!TritEx.TryParse(Console.ReadLine(), out Trit to)) { break; } Console.Write("Tryte A: "); if (!Tryte.TryParse(Console.ReadLine(), out Tryte ta)) { break; } DisplayPrevTryte(ta, 9); Console.Write("Tryte B: "); if (!Tryte.TryParse(Console.ReadLine(), out Tryte tb)) { break; } DisplayPrevTryte(tb, 9); Console.WriteLine(); alu.ABusInput(null, ta); alu.BBusInput(null, tb); alu.FowleanControlInput(null, to); Console.WriteLine(); } Console.WriteLine("\nPress any key to continue."); Console.ReadKey(); }
static void TritTest() { HalfAdder halfAdder = new HalfAdder(); halfAdder.CarryOutput += (s, t) => { Console.WriteLine($" Carry: {t.ToSymbol()}"); }; halfAdder.SumOutput += (s, t) => { Console.WriteLine($" Sum: {t.ToSymbol()}"); }; while (true) { Console.Write("Input A: "); if (TritEx.TryParse(Console.ReadLine(), out Trit trit)) { halfAdder.AInput(null, trit); } else { break; } Console.Write("Input B: "); if (TritEx.TryParse(Console.ReadLine(), out trit)) { halfAdder.BInput(null, trit); Console.WriteLine(); } else { break; } } Console.WriteLine("\nPress any key to continue."); Console.ReadKey(); }
static void TrortMemoryTest() { STrortAddrTryteMemory trortAddrMemory = new STrortAddrTryteMemory(); Func <Trort, string> t2s = (tryte) => { return(String.Join("", tryte.LowerTryte.LowerTribble.Select(t => t.ToSymbol())) + ":" + String.Join("", tryte.LowerTryte.UpperTribble.Select(t => t.ToSymbol())) + ":" + String.Join("", tryte.UpperTryte.LowerTribble.Select(t => t.ToSymbol())) + ":" + String.Join("", tryte.UpperTryte.UpperTribble.Select(t => t.ToSymbol()))); }; trortAddrMemory.BusOutput += (s, t) => { Console.WriteLine($" Address Value"); Console.WriteLine($"[{t2s(trortAddrMemory.Address)}]: {t.ToString()}"); }; while (true) { Console.Write("Address: "); if (!Trort.TryParse(Console.ReadLine(), out Trort addr)) { break; } Console.SetCursorPosition(9, Console.CursorTop - 1); Console.WriteLine($" [{addr.ToString("s")}] {addr}"); Console.Write("Action: "); if (!TritEx.TryParse(Console.ReadLine(), out Trit act)) { break; } Console.SetCursorPosition(8, Console.CursorTop - 1); Console.WriteLine($" {act.ToSymbol()} {(act == Trit.Pos ? "Write" : act == Trit.Neg ? "Read" : "Disable")}"); if (act == Trit.Pos) { Console.Write("Storage Value: "); if (!Tryte.TryParse(Console.ReadLine(), out Tryte store)) { break; } Console.SetCursorPosition(15, Console.CursorTop - 1); Console.WriteLine($"[{store.ToString("S")}] {store}"); trortAddrMemory.AddressInput(null, addr); trortAddrMemory.BusInput(null, store); trortAddrMemory.ReadWriteEnabled(null, act); trortAddrMemory.ReadWriteEnabled(null, Trit.Neu); } else if (act == Trit.Neg) { trortAddrMemory.AddressInput(null, addr); trortAddrMemory.ReadWriteEnabled(null, act); trortAddrMemory.ReadWriteEnabled(null, Trit.Neu); } Console.WriteLine(); } }