Esempio n. 1
0
        public void MicroSimulatorTests_ProfTest3_Success()
        {
            string[] asmLines = FileManager.Instance.ToReadFile(test3);

            Lexer lexer = new Lexer(asmLines);

            Parser parser = new Parser(lexer);

            Compiler assembler = new Compiler(parser);

            assembler.Compile();

            string[] objData = assembler.GetOutput();

            VirtualMemory vm = new VirtualMemory(objData);

            MicroSimulator micro = new MicroSimulator(vm);

            int i = 0;

            while (i < 1000)
            {
                micro.NextInstruction();
                i++;
            }
            Console.WriteLine(micro.MicroRegisters);
            Console.WriteLine(vm.ToString());

            Assert.AreEqual("Registers[0,0,0,0,0,12,15,125]", micro.MicroRegisters.ToString());
        }
Esempio n. 2
0
        public void IOBinSemaforoTests_WriteFromMicro_Success()
        {
            VirtualMemory vm = new VirtualMemory(new string[] {
                "a806",
                "ff07",
                "0000",
                "0102",
                "0203",
                "c940",
                "a812",
                "1a04",
                "a816",
                "1904",
                "0b08",
                "a816"
            });

            IOManager manager = new IOManager(100);

            MicroSimulator micro = new MicroSimulator(vm, manager);

            Console.WriteLine("Initial State:");
            Console.Write(vm);
            Console.WriteLine(manager);
            Console.WriteLine(micro);

            IOBinSemaforo semaforo = new IOBinSemaforo(4, "#Debug");

            manager.AddIODevice(4, semaforo);

            Console.WriteLine("\nAfter adding IO Hex Keyboard:");
            Console.WriteLine(manager);

            for (int i = 0; i < 7; i++)
            {
                micro.NextInstruction();
            }

            foreach (char c in semaforo.BitContent)
            {
                Assert.AreEqual('1', c);
            }

            Console.WriteLine(semaforo);
        }
Esempio n. 3
0
        public void SevenSegmentTestsTests_WriteFromMicro_Success()
        {
            VirtualMemory vm = new VirtualMemory(new string[] {
                "a806",
                "ff07",
                "0000",
                "0102",
                "0203",
                "c940",
                "a812",
                "1a04",
                "a816",
                "1904",
                "0b08",
                "a816"
            });

            IOManager manager = new IOManager(100);

            MicroSimulator micro = new MicroSimulator(vm, manager);

            Console.WriteLine("Initial State:");
            Console.Write(vm);
            Console.WriteLine(manager);
            Console.WriteLine(micro);

            IOSevenSegmentDisplay segment = new IOSevenSegmentDisplay(9);

            manager.AddIODevice(9, segment);

            Console.WriteLine("\nAfter adding IO Hex Keyboard:");
            Console.WriteLine(manager);

            for (int i = 0; i < 7; i++)
            {
                micro.NextInstruction();
            }

            foreach (char c in segment.Data)
            {
                Assert.AreEqual("11110110", segment.Data);
            }

            Console.WriteLine(segment);
        }
Esempio n. 4
0
        public void MicroSimulatorTests_ProfTest1_Success()
        {
            string[] asmLines = FileManager.Instance.ToReadFile(test1);
            string[] expected = FileManager.Instance.ToReadFile(test1Comparison);

            Lexer lexer = new Lexer(asmLines);

            Parser parser = new Parser(lexer);

            Compiler assembler = new Compiler(parser);

            assembler.Compile();

            string[] objData = assembler.GetOutput();

            VirtualMemory vm = new VirtualMemory(objData);

            MicroSimulator micro = new MicroSimulator(vm);

            int i       = 0;
            int counter = 0;

            while (i < 6)
            {
                micro.NextInstruction();
                Console.WriteLine(micro.CurrentInstruction);
                Assert.AreEqual(expected[counter++], micro.CurrentInstruction.ToString());

                if (micro.CurrentInstruction.Equals(micro.PreviousInstruction))
                {
                    i++;
                }
            }
            Console.WriteLine(micro.MicroRegisters);
            Assert.AreEqual("Registers[0,8,5,49,10,0,0,0]", micro.MicroRegisters.ToString());

            Console.WriteLine(vm.ToString());
        }