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); }
public void StoresFlags() { SignalBus signals = new SignalBus(); FlagBus flagBus = new FlagBus(); FlagsRegister flagsRegister = new FlagsRegister(null, signals, flagBus); flagBus.Carry = true; flagBus.Zero = true; signals.FI = true; flagsRegister.ReadFromBus(); Assert.AreEqual(3, flagsRegister.Value); }
public void FlagsRegisterInputs() { DataBus bus = new DataBus(); FlagBus flagBus = new FlagBus(); SignalBus signals = new SignalBus(); Register flags = new FlagsRegister(bus, signals, flagBus); flagBus.Carry = true; flagBus.Zero = true; signals.FI = true; flags.ReadFromBus(); Assert.AreEqual(FlagsRegister.CARRY + FlagsRegister.ZERO, flags.Value); }
public void SumRegisterOutputsSumOfAAndB() { DataBus bus = new DataBus(); SignalBus signals = new SignalBus(); FlagBus flagBus = new FlagBus(); Register a = new ARegister(bus, signals); Register b = new BRegister(bus, signals); Register sum = new SumRegister(a, b, bus, signals, flagBus); a.Value = 200; b.Value = 100; signals.EO = true; sum.WriteToBus(); Assert.AreEqual(44, bus.Value); Assert.IsTrue(flagBus.Carry); }
public void SumRegisterOutputsSubstractionOfAAndB() { DataBus bus = new DataBus(); SignalBus signals = new SignalBus(); FlagBus flagBus = new FlagBus(); Register a = new ARegister(bus, signals); Register b = new BRegister(bus, signals); Register sum = new SumRegister(a, b, bus, signals, flagBus); a.Value = 166; b.Value = 166; signals.EO = true; signals.SU = true; sum.WriteToBus(); Assert.AreEqual(0, bus.Value); Assert.IsTrue(flagBus.Zero); }
public FlagsRegister(DataBus bus, SignalBus signals, FlagBus flagBus) : base(bus, signals) { this.flagBus = flagBus; }
public SumRegister(Register aRegister, Register bRegister, DataBus bus, SignalBus signals, FlagBus flagBus) : base(bus, signals) { this.aRegister = aRegister; this.bRegister = bRegister; this.flagBus = flagBus; }