X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2Fmi%2FMicroInstructionMemoryParser.java;h=d049e37776e0ec39466d81b200727110552eb564;hb=93f106a691015a63a6c5af27406b94303385698a;hp=cacf79982237bff4c2066f68d946e078a4a4a388;hpb=4ba119cab03498736851e6f3f32eec1957839a2e;p=Mograsim.git diff --git a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemoryParser.java b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemoryParser.java index cacf7998..d049e377 100644 --- a/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemoryParser.java +++ b/net.mograsim.machine/src/net/mograsim/machine/mi/MicroInstructionMemoryParser.java @@ -34,7 +34,10 @@ public class MicroInstructionMemoryParser try { for (; i <= maxAddr && input.ready() && !"".equals((line = input.readLine())); i++) - memory.setCell(i, parse(miDef, line)); + { + long iFinal = i; + memory.setCell(i, parse(() -> memory.notifyObservers(iFinal), miDef, line)); + } } catch (IOException e) { @@ -42,10 +45,13 @@ public class MicroInstructionMemoryParser } for (; i <= maxAddr; i++) - memory.setCell(i, miDef.createDefaultInstruction()); + { + long iFinal = i; + memory.setCell(i, miDef.createDefaultInstruction(() -> memory.notifyObservers(iFinal))); + } } - public static MicroInstruction parse(MicroInstructionDefinition definition, String toParse) + public static MicroInstruction parse(Runnable updateCallback, MicroInstructionDefinition definition, String toParse) { int size = definition.size(); String[] strings = toParse.split(","); @@ -59,7 +65,7 @@ public class MicroInstructionMemoryParser { params[i] = classes[i].parse(strings[i]); } - return new StandardMicroInstruction(params); + return new StandardMicroInstruction(updateCallback, params); } catch (Exception e) {