Пример #1
0
        public void Clk()
        {
            if (Clock.IsHalted)
            {
                return;
            }

            signals.Reset();

            Operation operation = GetOperation(Instruction.Value);

            operation.Clk();
            InstructionCounter.Clk();

            RAM.WriteToBus();
            Instruction.WriteToBus();
            ProgramCounter.WriteToBus();
            MemoryAddress.WriteToBus();
            Sum.WriteToBus();
            A.WriteToBus();
            B.WriteToBus();
            Flags.WriteToBus();
            Output.WriteToBus();

            RAM.ReadFromBus();
            Instruction.ReadFromBus();
            ProgramCounter.ReadFromBus();
            MemoryAddress.ReadFromBus();
            Sum.ReadFromBus();
            A.ReadFromBus();
            B.ReadFromBus();
            Flags.ReadFromBus();
            Output.ReadFromBus();

            if (signals.HLT)
            {
                Clock.IsHalted = true;
            }
        }