diff --git a/src/simudator/core/modules/register.py b/src/simudator/core/modules/register.py index 1d066ed7b9c2d983e0abe3365097e5a6c66be65d..4f15d9d0679142567706ab9c27d7a7a25ea778d3 100644 --- a/src/simudator/core/modules/register.py +++ b/src/simudator/core/modules/register.py @@ -71,7 +71,7 @@ class Register(Module): return state def get_gui_state(self) -> dict[str, Any]: - state = self.get_state() + state = {"name": self.name, "value": self._value} return state def set_state(self, state: dict[str, Any]) -> None: diff --git a/src/simudator/gui/module_graphics_item/integer_memory_graphic.py b/src/simudator/gui/module_graphics_item/integer_memory_graphic.py index a177b6228b5395a5c163bf8d1c371f4e0f0a923a..c746c082c3fcc3e33d16b20949415b833cdfcf07 100644 --- a/src/simudator/gui/module_graphics_item/integer_memory_graphic.py +++ b/src/simudator/gui/module_graphics_item/integer_memory_graphic.py @@ -248,6 +248,6 @@ class IntegerMemoryTable(MemoryTable): # -7 + 16 % 16 = 9 = 1001 = -7 value = (value + max_value) % max_value - index = row * 4 + col + index = row * self._column_size + col state['memory'][index] = value self._memory.set_state(state) diff --git a/src/simudator/gui/module_graphics_item/memory_graphic.py b/src/simudator/gui/module_graphics_item/memory_graphic.py index 5cf08f503d89d6bd54a958abe1461747dd472461..26c95fe5897a8b6fe162db809a5e68ed5fde3e7d 100644 --- a/src/simudator/gui/module_graphics_item/memory_graphic.py +++ b/src/simudator/gui/module_graphics_item/memory_graphic.py @@ -191,12 +191,12 @@ class MemoryTable(QTableWidget): return def _on_cell_changed(self, row, col): - state = self._memory.get_state() + state = self._memory.get_gui_state() item = self.item(row, col) value = item.text() if value == "": return - index = row * 4 + col + index = row * self._column_size + col state['memory'][index] = value self._memory.set_state(state) diff --git a/src/simudator/gui/module_graphics_item/module_graphics_item.py b/src/simudator/gui/module_graphics_item/module_graphics_item.py index 89d8e9a87fe5aff05f8659277ab34a50bb99f31e..b676114c181c5f32a6294b8df53649621e39b122 100644 --- a/src/simudator/gui/module_graphics_item/module_graphics_item.py +++ b/src/simudator/gui/module_graphics_item/module_graphics_item.py @@ -57,7 +57,7 @@ class ModuleGraphicsItem(QGraphicsObject, QGraphicsItem): # Get information about module # Get inputs/outputs is not always implemented so might not show all ports - self.state = module.get_state() + self.state = module.get_gui_state() self.input_signals = module.get_input_signals() self.output_signals = module.get_output_signals() diff --git a/src/simudator/gui/module_graphics_item/register_graphic.py b/src/simudator/gui/module_graphics_item/register_graphic.py index b84f1414e9e1f84384b41ff699b227a9f72be5e3..5f27cbd458b9c9d239c764a0c99e3b50af019b69 100644 --- a/src/simudator/gui/module_graphics_item/register_graphic.py +++ b/src/simudator/gui/module_graphics_item/register_graphic.py @@ -38,7 +38,7 @@ class RegisterGraphicsItem(ModuleGraphicsItem): ) def update(self): - state = self.module.get_state() + state = self.module.get_gui_state() full_text = f"{state['name']}: {state['value']}" self.text.setText(full_text) @@ -52,6 +52,6 @@ class IntegerRegisterGraphicsItem(RegisterGraphicsItem): def update(self): parameter = self.module.get_parameter() hex_length = math.ceil(parameter["bit_length"] / 4) - state = self.module.get_state() + state = self.module.get_gui_state() full_text = f"{state['name']}: {state['value']:0{hex_length}x}" self.text.setText(full_text) diff --git a/src/simudator/processor/mia/gui/mia_micro_memory_graphic.py b/src/simudator/processor/mia/gui/mia_micro_memory_graphic.py index aedf31b56a012561fc5ed1cf0f872c071f142336..6910d2bfd4c83b10f72b4b5ce834d5f3d8d84730 100644 --- a/src/simudator/processor/mia/gui/mia_micro_memory_graphic.py +++ b/src/simudator/processor/mia/gui/mia_micro_memory_graphic.py @@ -35,7 +35,7 @@ class MicroMemoryGraphicsItem(MiaMemoryGraphicsItem): def update(self): # get instruction field - uM_state = self.module.get_state() + uM_state = self.module.get_gui_state() instr = uM_state["curr_instr"] diff --git a/src/simudator/processor/mia/gui/pc_graphic.py b/src/simudator/processor/mia/gui/pc_graphic.py index 34ed5fcbe1aa599609cd154e72968116ac713818..354250597e2d8580858627da8416cfa0e86d5e54 100644 --- a/src/simudator/processor/mia/gui/pc_graphic.py +++ b/src/simudator/processor/mia/gui/pc_graphic.py @@ -10,7 +10,7 @@ class PcGraphicsItem(IntegerRegisterGraphicsItem): """ def update(self): - self.state = self.module.get_state() + self.state = self.module.get_gui_state() name = self.state["name"] value = self.state["value"] diff --git a/src/simudator/processor/mia/gui/upc_graphic.py b/src/simudator/processor/mia/gui/upc_graphic.py index 85d27b9a1715fbf22970baf711611fb7e5e9ac9c..453a1e11be8d216f7c51d8239bc70504bf8af2f4 100644 --- a/src/simudator/processor/mia/gui/upc_graphic.py +++ b/src/simudator/processor/mia/gui/upc_graphic.py @@ -11,9 +11,9 @@ class uPcGraphicsItem(IntegerRegisterGraphicsItem): """ def update(self): - self.state = self.module.get_state() - name = self.state["name"] - value = self.state["value"] + self.gui_state = self.module.get_gui_state() + name = self.gui_state["name"] + value = self.gui_state["value"] full_text = f"{name}: {value:02x}" @@ -27,12 +27,16 @@ class uPcGraphicsItem(IntegerRegisterGraphicsItem): ) # Draw from K1 port - from_k1 = PortGraphicsItem(self.module.signals["in_k1"], Orientation.UP, parent=self) + from_k1 = PortGraphicsItem( + self.module.signals["in_k1"], Orientation.UP, parent=self + ) from_k1.setPos(width * 2 / 8, 0) self.ports.append(from_k1) # Draw from K2 port - from_k2 = PortGraphicsItem(self.module.signals["in_k2"], Orientation.UP, parent=self) + from_k2 = PortGraphicsItem( + self.module.signals["in_k2"], Orientation.UP, parent=self + ) from_k2.setPos(width * 6 / 8, 0) self.ports.append(from_k2) diff --git a/src/simudator/processor/mia/modules/lc.py b/src/simudator/processor/mia/modules/lc.py index 6f815a38161c1cf8526afe01b20c154aed0c03bc..bf5b89d4a73c14a62dc11c50403bb234020f6cc7 100644 --- a/src/simudator/processor/mia/modules/lc.py +++ b/src/simudator/processor/mia/modules/lc.py @@ -158,6 +158,11 @@ class LC(Module): state["decrement_by_one"] = self._decrement_by_one return state + def get_gui_state(self) -> dict[str, Any]: + state = super().get_gui_state() + state["value"] = self._value + return state + def get_parameter(self) -> dict[str, Any]: """Return a dictionary of the parameters of the loop counter, i.e. the bit length of the counter. diff --git a/src/simudator/processor/mia/modules/micro_memory.py b/src/simudator/processor/mia/modules/micro_memory.py index 4109d9b7f2d021f745e0c49524e639a1c2fb92c5..9ffe8893bbf54ebb0057d31509a141a45c2da9e9 100644 --- a/src/simudator/processor/mia/modules/micro_memory.py +++ b/src/simudator/processor/mia/modules/micro_memory.py @@ -284,8 +284,10 @@ class MicroMemory(Module): return state def get_gui_state(self) -> dict[str, Any]: - state = super().get_state() + state = super().get_gui_state() state["memory"] = self._memory[:] + state["halt"] = self._halt + state["curr_instr"] = self._curr_instr return state def set_state(self, state: dict) -> None: