Beispiel #1
0
        public Byte2 Do(Byte address, bool store, Byte2 data, bool clock)
        {
            var invertedAddress = Gates.Invert(address.Five);
            var storeAtRam0     = Gates.And(invertedAddress, store);

            var storeAtRam1 = Gates.And(address.Five, store);

            var output0 = _ram0.Do(address, storeAtRam0, data, clock);
            var output1 = _ram1.Do(address, storeAtRam1, data, clock);

            var outputTotal = Select16.Do(address.Five,
                                          output1,
                                          output0);

            return(outputTotal);
        }
        public void Store_different_values_at_different_addresses4()
        {
            // Arrange
            var ram    = new RandomAccessMemory5();
            var byte2A = new Byte2(42);
            var byte2B = new Byte2(3);
            var byte2C = new Byte2(999);

            var addressA = new Byte(2);
            var addressB = new Byte(255);

            // Act
            ram.Do(addressA, false, byte2A, false);
            ram.Do(addressA, true, byte2A, false);
            ram.Do(addressA, true, byte2A, true);

            ram.Do(addressB, true, byte2B, false);
            ram.Do(addressB, true, byte2B, true);

            var output = ram.Do(addressB, false, byte2C, false);

            // Assert
            output.ToInt16().Should().Be(3);
        }