X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2Fstandard%2Fmemory%2FCoreWordAddressableMemory.java;h=ca557a6b923ab982713c414483a90fecd9984c57;hb=8bed58cd47f4e53a0a83e066d38864aa6875502f;hp=6dc5da2d044d48021ad0ea7c0b5f3ed32ba2a174;hpb=d7f31fafc300b0c7fd1265574507c37a697aadab;p=Mograsim.git diff --git a/net.mograsim.machine/src/net/mograsim/machine/standard/memory/CoreWordAddressableMemory.java b/net.mograsim.machine/src/net/mograsim/machine/standard/memory/CoreWordAddressableMemory.java index 6dc5da2d..ca557a6b 100644 --- a/net.mograsim.machine/src/net/mograsim/machine/standard/memory/CoreWordAddressableMemory.java +++ b/net.mograsim.machine/src/net/mograsim/machine/standard/memory/CoreWordAddressableMemory.java @@ -58,26 +58,26 @@ public class CoreWordAddressableMemory extends BasicCoreComponent @Override protected TimelineEventHandler compute() { - if (!address.hasNumericValue()) + if (!address.getValues().isBinary()) { if (read.equals(rWBit.getValue())) return e -> data.feedSignals(Bit.U.toVector(data.width()));// TODO don't always feed U, but decide to feed X or U. return e -> data.clearSignals(); } - long addressed = address.getUnsignedValue(); + long addressed = address.getValues().getUnsignedValueLong(); if (read.equals(rWBit.getValue())) { BitVector storedData = memory.getCell(addressed); return e -> data.feedSignals(storedData); - } else - { - BitVector transData = data.getValues(); - return e -> - { - data.clearSignals(); - memory.setCell(addressed, transData); - }; } + BitVector transData = data.getValues(); + if (transData.equals(memory.getCell(addressed))) + return null; + return e -> + { + data.clearSignals(); + memory.setCell(addressed, transData); + }; } @Override