コード例 #1
0
ファイル: BusDataTest.cs プロジェクト: obiwanjacobi/Zim80
        public void Write_Data8_Byte()
        {
            var data = new BusData8();

            data.Write((byte)TestValue);

            data.ToByte().Should().Be((byte)TestValue);
        }
コード例 #2
0
ファイル: BusMasterTest.cs プロジェクト: obiwanjacobi/Zim80
        public void Write_DisabledMaster_Throws()
        {
            var uut      = new BusMaster <BusData8>();
            var newValue = new BusData8(0);

            Action act = () => uut.Write(newValue);

            act.ShouldThrow <InvalidOperationException>();
        }
コード例 #3
0
ファイル: BusMasterTest.cs プロジェクト: obiwanjacobi/Zim80
        public void Write_Unconnected_DoesNotThrow()
        {
            var uut      = new BusMaster <BusData8>();
            var newValue = new BusData8(0);

            uut.IsEnabled = true;

            Action test = () => uut.Write(newValue);

            test.ShouldNotThrow();
        }
コード例 #4
0
        public void Write_LeftToRight()
        {
            var ms1 = new BusMasterSlave <BusData8>();
            var ms2 = new BusMasterSlave <BusData8>();

            var connection = ms1.CreateConnection(ms2);
            var value      = new BusData8(0x55);

            ms1.IsEnabled = true;
            ms1.Write(value);
            ms2.Slave.Value.Should().Be(value);
        }
コード例 #5
0
ファイル: BusMasterTest.cs プロジェクト: obiwanjacobi/Zim80
        public void Write_BusValueChanged()
        {
            var uut = new BusMaster <BusData8>();
            var bus = new Bus <BusData8>();

            uut.ConnectTo(bus);
            uut.IsEnabled = true;

            var newValue = new BusData8(0);

            uut.Write(newValue);

            bus.AssertAllLevelsAre(DigitalLevel.Low);
        }
コード例 #6
0
ファイル: BusTest.cs プロジェクト: obiwanjacobi/Zim80
        public void Write_EventTriggers()
        {
            var master = new BusMaster <BusData8>();
            var bus    = new Bus <BusData8>();

            master.ConnectTo(bus);
            master.IsEnabled = true;
            bus.MonitorEvents();

            var newValue = new BusData8(0);

            master.Write(newValue);

            bus.ShouldRaise("OnChanged");
        }
コード例 #7
0
ファイル: BusMasterTest.cs プロジェクト: obiwanjacobi/Zim80
        public void IsEnabled_ToFalse_ChangesLevelsToFloating()
        {
            var uut = new BusMaster <BusData8>();
            var bus = new Bus <BusData8>();

            uut.ConnectTo(bus);
            uut.IsEnabled = true;

            var newValue = new BusData8(0);

            uut.Write(newValue);
            uut.IsEnabled = false;

            uut.Value.AssertAllLevelsAre(DigitalLevel.Floating);
        }
コード例 #8
0
ファイル: BusTest.cs プロジェクト: obiwanjacobi/Zim80
        public void Write_SingleMaster_SlaveSeesChanges()
        {
            var master = new BusMaster <BusData8>();
            var slave  = new BusSlave <BusData8>();
            var bus    = new Bus <BusData8>();

            master.ConnectTo(bus);
            slave.ConnectTo(bus);
            master.IsEnabled = true;

            var newValue = new BusData8(0);

            master.Write(newValue);

            slave.Value.AssertAllLevelsAre(DigitalLevel.Low);
        }
コード例 #9
0
        private static CpuZ80 ExecuteTest(OpcodeByte rst)
        {
            var cpuZ80 = new CpuZ80();
            var model  = cpuZ80.Initialize(null);

            var writer = new MemoryWriter <BusData16, BusData8>(model.Memory);

            writer.Fill(0x48, new BusData8(0));
            writer[new BusData16(0)] = new BusData8(rst.Value);

            cpuZ80.FillRegisters();

            model.ClockGen.SquareWave(11);

            Console.WriteLine(model.LogicAnalyzer.ToWaveJson());

            return(cpuZ80);
        }
コード例 #10
0
ファイル: BusTest.cs プロジェクト: obiwanjacobi/Zim80
        public void Write_MultipleMastersActivce_Error()
        {
            var master1 = new BusMaster <BusData8>();
            var master2 = new BusMaster <BusData8>();
            var bus     = new Bus <BusData8>();

            master1.ConnectTo(bus);
            master2.ConnectTo(bus);
            master1.IsEnabled = true;
            master2.IsEnabled = true;

            var loValue = new BusData8(0);
            var noValue = new BusData8();

            master1.Write(loValue);
            Action act = () => master2.Write(loValue);

            act.ShouldThrow <BusConflictException>();
        }
コード例 #11
0
ファイル: BusTest.cs プロジェクト: obiwanjacobi/Zim80
        public void Write_MultipleMasters_OneAtaTime()
        {
            var master1 = new BusMaster <BusData8>();
            var master2 = new BusMaster <BusData8>();
            var bus     = new Bus <BusData8>();

            master1.ConnectTo(bus);
            master2.ConnectTo(bus);
            master1.IsEnabled = true;
            master2.IsEnabled = true;

            var loValue = new BusData8(0);
            var noValue = new BusData8();

            master1.Write(loValue);
            master1.Write(noValue);
            master2.Write(loValue);
            master2.Write(noValue);
            master1.Write(loValue);
        }
コード例 #12
0
 public static void Set(this IDirectMemoryAccess <BusData8> memory,
                        ushort address, byte value)
 {
     memory[address] = new BusData8(value);
 }