Exemple #1
0
        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();
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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();
            }
        }