Пример #1
0
        public void TestSTA()
        {
            SignalBus signals = new SignalBus();
            Operation op      = new STA(null, signals, null);

            signals.Reset();
            op.Step0();
            Assert.IsTrue(signals.MI);
            Assert.IsTrue(signals.CO);

            signals.Reset();
            op.Step1();
            Assert.IsTrue(signals.RO);
            Assert.IsTrue(signals.II);
            Assert.IsTrue(signals.CE);

            signals.Reset();
            op.Step2();
            Assert.IsTrue(signals.IO);
            Assert.IsTrue(signals.MI);

            signals.Reset();
            op.Step3();
            Assert.IsTrue(signals.AO);
            Assert.IsTrue(signals.RI);
        }
Пример #2
0
        public void TestSUB()
        {
            SignalBus signals = new SignalBus();
            Operation op      = new SUB(null, signals, null);

            signals.Reset();
            op.Step0();
            Assert.IsTrue(signals.MI);
            Assert.IsTrue(signals.CO);

            signals.Reset();
            op.Step1();
            Assert.IsTrue(signals.RO);
            Assert.IsTrue(signals.II);
            Assert.IsTrue(signals.CE);

            signals.Reset();
            op.Step2();
            Assert.IsTrue(signals.IO);
            Assert.IsTrue(signals.MI);

            signals.Reset();
            op.Step3();
            Assert.IsTrue(signals.RO);
            Assert.IsTrue(signals.BI);

            signals.Reset();
            op.Step4();
            Assert.IsTrue(signals.EO);
            Assert.IsTrue(signals.AI);
            Assert.IsTrue(signals.SU);
            Assert.IsTrue(signals.FI);
        }
Пример #3
0
        public void TestJZZeroEnabled()
        {
            SignalBus     signals = new SignalBus();
            FlagBus       flagBus = new FlagBus();
            FlagsRegister flags   = new FlagsRegister(null, signals, flagBus);

            flags.Value = FlagsRegister.ZERO;
            Operation op = new JZ(null, signals, flags);

            signals.Reset();
            op.Step0();
            Assert.IsTrue(signals.MI);
            Assert.IsTrue(signals.CO);

            signals.Reset();
            op.Step1();
            Assert.IsTrue(signals.RO);
            Assert.IsTrue(signals.II);
            Assert.IsTrue(signals.CE);

            signals.Reset();
            op.Step2();
            Assert.IsTrue(signals.IO);
            Assert.IsTrue(signals.J);
        }
Пример #4
0
        public void TestJMP()
        {
            SignalBus     signals = new SignalBus();
            FlagsRegister flags   = new FlagsRegister(null, signals, null);

            flags.Value = FlagsRegister.CARRY;
            Operation op = new JMP(null, signals, null);

            signals.Reset();
            op.Step0();
            Assert.IsTrue(signals.MI);
            Assert.IsTrue(signals.CO);

            signals.Reset();
            op.Step1();
            Assert.IsTrue(signals.RO);
            Assert.IsTrue(signals.II);
            Assert.IsTrue(signals.CE);

            signals.Reset();
            op.Step2();
            Assert.IsTrue(signals.IO);
            Assert.IsTrue(signals.J);
        }
Пример #5
0
        public void TestJCCarryDisabled()
        {
            SignalBus     signals = new SignalBus();
            FlagsRegister flags   = new FlagsRegister(null, signals, null);

            flags.Value = 0;
            Operation op = new JC(null, signals, flags);

            signals.Reset();
            op.Step0();
            Assert.IsTrue(signals.MI);
            Assert.IsTrue(signals.CO);

            signals.Reset();
            op.Step1();
            Assert.IsTrue(signals.RO);
            Assert.IsTrue(signals.II);
            Assert.IsTrue(signals.CE);

            signals.Reset();
            op.Step2();
            Assert.IsFalse(signals.IO);
            Assert.IsFalse(signals.J);
        }