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); }