diff --git a/src/simudator/gui/module_graphics_item/mia/__init__.py b/src/simudator/gui/module_graphics_item/mia/__init__.py index d52403da05c74ce08202946bf99e1f9224579167..bc78898684ff12f5378b199280b8750a9ff7d94e 100644 --- a/src/simudator/gui/module_graphics_item/mia/__init__.py +++ b/src/simudator/gui/module_graphics_item/mia/__init__.py @@ -10,6 +10,9 @@ from simudator.gui.module_graphics_item.mia.mia_memory_graphic import MemoryGrap from simudator.gui.module_graphics_item.mia.mia_micro_memory_graphic import ( MicroMemoryGraphicsItem, ) +from simudator.gui.module_graphics_item.mia.mia_register_graphic import ( + RegisterGraphicsItem, +) from simudator.gui.module_graphics_item.mia.pc_graphic import PcGraphicsItem from simudator.gui.module_graphics_item.mia.supc_graphic import SupcGraphicsItem from simudator.gui.module_graphics_item.mia.upc_graphic import uPcGraphicsItem @@ -17,5 +20,6 @@ from simudator.gui.module_graphics_item.mia.upc_graphic import uPcGraphicsItem __all__ = ["MemoryGraphicsItem", "MicroMemoryGraphicsItem", "ArGraphicsItem", "PcGraphicsItem", "AsrGraphicsItem", "HrGraphicsItem", "SupcGraphicsItem", "uPcGraphicsItem", "FlagGraphicsItem", - "BusGraphicsItem", "AluGraphicsItem", "GrxGraphicsItem", "IrGraphicsItem" + "BusGraphicsItem", "AluGraphicsItem", "GrxGraphicsItem", "IrGraphicsItem", + "RegisterGraphicsItem" ] diff --git a/src/simudator/processor/simple/simple.py b/src/simudator/processor/simple/simple.py new file mode 100644 index 0000000000000000000000000000000000000000..1f24ba721b10dd548ec998c5097a69922ad7c504 --- /dev/null +++ b/src/simudator/processor/simple/simple.py @@ -0,0 +1,89 @@ +import sys + +from PyQt5.QtWidgets import QApplication + +from simudator.cli.cli import CLI +from simudator.core.modules import Memory, Register +from simudator.core.processor import Processor, Signal +from simudator.gui.gui import GUI +from simudator.gui.module_graphics_item.mia import ( + MemoryGraphicsItem, + RegisterGraphicsItem, +) + + +class SIMPLE_CPU(Processor): + """ + This cpu is made to test core modules and module graphics items for these modules. + """ + + def __init__(self) -> None: + super().__init__() + # Creating all signals + # Signals follow the naming convention 'to_from' + self.max_line_len = 100 + + # Dummy values used when the values in the constructor is not needed + # unused = Signal(self) + + # Needed since optional arguments need to be in the correct order + + mem_input = Signal(self, "mem_input") + mem_output = Signal(self, "mem_output") + mem_control = Signal(self, "mem_control") + mem_adress = Signal(self, "mem_adress") + register_signal = Signal(self, "empty") + + self.memory = Memory(mem_input, mem_output,mem_control,mem_adress, 10) + self.input_register = Register(register_signal, mem_input, name="Input Reg") + self.output_register = Register(mem_output, + register_signal, name="Output Reg") + self.control_register = Register(mem_control, + register_signal, name="Control Reg") + self.adress_register = Register(mem_adress, register_signal, name="Adress Reg") + + + ALLTHEMODULES = [self.memory, self.input_register, self.output_register, + self.control_register, self.adress_register] + + for module in ALLTHEMODULES: + self.add_module(module) + + self.lambdas = {} + + def launch_gui(self): + app = QApplication(sys.argv) + self.reset() + gui = GUI(self) + + gui.addModuleGraphicsItem(MemoryGraphicsItem(self.memory)) + gui.addModuleGraphicsItem(RegisterGraphicsItem(self.input_register)) + gui.addModuleGraphicsItem(RegisterGraphicsItem(self.output_register)) + gui.addModuleGraphicsItem(RegisterGraphicsItem(self.control_register)) + gui.addModuleGraphicsItem(RegisterGraphicsItem(self.adress_register)) + + gui.addAllSignals() + gui.show() + app.exec() + + def launch_cli(self): + cli = CLI(self) + self.reset() + cli.run() + + + +if __name__ == "__main__": + + # this is bad terminal code, but who cares + cpu = SIMPLE_CPU() + flag = None + try: + flag = sys.argv[1] + except IndexError: + pass + + if flag in ("gui", "g", "-gui"): + cpu.launch_gui() + else: + cpu.launch_cli()