From 450458f03741dc23830f0917a1ed620eb6e01e29 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Martin=20H=C3=B6gstedt?= <marin.hogstedt@hotmail.com>
Date: Wed, 12 Jun 2024 13:25:15 +0200
Subject: [PATCH] fixed index out of range error

---
 src/simudator/core/modules/memory.py               |  2 +-
 .../processor/mia/gui/mia_memory_graphic.py        | 14 +++++++++++---
 src/simudator/processor/mia/mia.py                 |  7 ++-----
 3 files changed, 14 insertions(+), 9 deletions(-)

diff --git a/src/simudator/core/modules/memory.py b/src/simudator/core/modules/memory.py
index 97a8690..d717745 100644
--- a/src/simudator/core/modules/memory.py
+++ b/src/simudator/core/modules/memory.py
@@ -31,7 +31,7 @@ class Memory(Module):
         self.output_s = output_signal
 
         # Internal state
-        self.memory = [0 for i in range(size)]
+        self.memory = [0 for _ in range(size)]
         self.current_adress = 0
         self.is_write = False
 
diff --git a/src/simudator/processor/mia/gui/mia_memory_graphic.py b/src/simudator/processor/mia/gui/mia_memory_graphic.py
index e3c314a..9b7f2f6 100644
--- a/src/simudator/processor/mia/gui/mia_memory_graphic.py
+++ b/src/simudator/processor/mia/gui/mia_memory_graphic.py
@@ -7,6 +7,7 @@ from qtpy.QtWidgets import (
     QTextEdit,
     QVBoxLayout,
     QWidget,
+    QErrorMessage,
 )
 
 from simudator.core.modules import Memory
@@ -57,6 +58,7 @@ class MiaMemoryGraphicsItem(MemoryGraphicsItem):
     def __init__(self, memory_module: Memory, **kwargs):
         super().__init__(memory_module, **kwargs)
         self.memory_window = None
+        self.errorMessageWidget = QErrorMessage()
 
     def draw_graphics_item(self) -> None:
         # Same as normal memory but no control signal
@@ -145,6 +147,12 @@ class MiaMemoryGraphicsItem(MemoryGraphicsItem):
             )
         else:
             module_state = self.module.get_state()
-            module_state['memory'][parsed_adress] = parsed_value
-            self.module.set_state(module_state)
-            self.update_graphics_signal.emit()
+            try:
+                module_state['memory'][parsed_adress] = parsed_value
+            except IndexError:
+                self.errorMessageWidget.showMessage(
+                    "Address entered was larger than memory space. Max address is 0xff"
+                )
+            else:
+                self.module.set_state(module_state)
+                self.update_graphics_signal.emit()
diff --git a/src/simudator/processor/mia/mia.py b/src/simudator/processor/mia/mia.py
index 27333e5..077f74a 100644
--- a/src/simudator/processor/mia/mia.py
+++ b/src/simudator/processor/mia/mia.py
@@ -280,10 +280,8 @@ class MIA_CPU(Processor):
 
         self.micro_memory = uM
 
-
         self.lambdas = {}
 
-
     def is_new_instruction(self) -> bool:
         return self.get_module("uPC").value == 0
 
@@ -297,7 +295,7 @@ class MIA_CPU(Processor):
         op_code = ir.op
         return self.get_module("K1").get_label(int(op_code))
 
-    def run_asm_instruction(self, num_instructions = 1) -> None:
+    def run_asm_instruction(self, num_instructions=1) -> None:
         """
         Runs 'num_instructions' assembler instructions on Mia.
 
@@ -313,7 +311,6 @@ class MIA_CPU(Processor):
 
             self.do_tick()
 
-
     def should_halt(self) -> bool:
         micro_memory_state = self.micro_memory.get_state()
         return micro_memory_state["halt"]
@@ -382,7 +379,7 @@ class MIA_CPU(Processor):
         gui.addAllSignals()
 
         gui.show()
-        # gui.loadLayoutFromFile("mia_layout")
+        gui.loadLayoutFromFile("mia_layout")
         app.exec()
 
     def launch_cli(self):
-- 
GitLab