X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2Fmi%2FMicroInstructionMemoryParser.java;fp=net.mograsim.machine%2Fsrc%2Fnet%2Fmograsim%2Fmachine%2Fmi%2FMicroInstructionMemoryParser.java;h=d049e37776e0ec39466d81b200727110552eb564;hb=d7f31fafc300b0c7fd1265574507c37a697aadab;hp=cacf79982237bff4c2066f68d946e078a4a4a388;hpb=4294019fb99a78ffa6802c0765e4efb7f96bd880;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) {