Introduced Machine.getCoreModelParameters
[Mograsim.git] / plugins / net.mograsim.machine / src / net / mograsim / machine / Machine.java
index 6ff074d..6c3c9cc 100644 (file)
@@ -1,10 +1,15 @@
 package net.mograsim.machine;
 
+import java.util.function.Consumer;
+
 import net.mograsim.logic.core.components.CoreClock;
 import net.mograsim.logic.core.timeline.Timeline;
 import net.mograsim.logic.core.types.BitVector;
-import net.mograsim.machine.mi.MicroInstructionMemory;
 import net.mograsim.logic.model.model.LogicModel;
+import net.mograsim.logic.model.modeladapter.CoreModelParameters;
+import net.mograsim.machine.mi.AssignableMPROM;
+import net.mograsim.machine.mi.AssignableMicroInstructionMemory;
+import net.mograsim.machine.registers.Register;
 
 public interface Machine
 {
@@ -14,16 +19,35 @@ public interface Machine
 
        LogicModel getModel();
 
+       // TODO replace with HLS references
        CoreClock getClock();
 
        BitVector getRegister(Register r);
 
        void setRegister(Register r, BitVector value);
 
+       void addRegisterListener(Register r, Consumer<BitVector> listener);
+
+       void removeRegisterListener(Register r, Consumer<BitVector> listener);
+
        Timeline getTimeline();
 
-       MainMemory getMainMemory();
+       public CoreModelParameters getCoreModelParameters();
+
+       AssignableMainMemory getMainMemory();
+
+       AssignableMicroInstructionMemory getMicroInstructionMemory();
+
+       AssignableMPROM getMPROM();
+
+       void addActiveMicroInstructionChangedListener(ActiveMicroInstructionChangedListener listener);
+
+       void removeActiveMicroInstructionChangedListener(ActiveMicroInstructionChangedListener listener);
 
-       MicroInstructionMemory getMicroInstructionMemory();
+       long getActiveMicroInstructionAddress();
 
-}
+       public interface ActiveMicroInstructionChangedListener
+       {
+               public void instructionChanged(long oldAddress, long newAddress);
+       }
+}
\ No newline at end of file