X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.model.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fam2900%2Fmachine%2FAm2900Machine.java;h=0a0787cc5ea2f7fcebd8fdb0797fd67d9ffd1c26;hb=8bed58cd47f4e53a0a83e066d38864aa6875502f;hp=df3b726fbfb0b93c7a26641aae5b8991f7ec6237;hpb=3813eb83f6c17041dcb67d7d2744c66a8bfdb18d;p=Mograsim.git diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900Machine.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900Machine.java index df3b726f..0a0787cc 100644 --- a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900Machine.java +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900Machine.java @@ -1,35 +1,47 @@ package net.mograsim.logic.model.am2900.machine; -import net.mograsim.logic.core.components.Clock; +import net.mograsim.logic.core.components.CoreClock; import net.mograsim.logic.core.timeline.Timeline; import net.mograsim.logic.core.types.BitVector; -import net.mograsim.logic.model.model.ViewModel; -import net.mograsim.logic.model.model.ViewModelModifiable; -import net.mograsim.logic.model.model.components.atomic.GUIClock; -import net.mograsim.logic.model.modeladapter.LogicModelParameters; -import net.mograsim.logic.model.modeladapter.ViewLogicModelAdapter; -import net.mograsim.logic.model.serializing.IndirectGUIComponentCreator; +import net.mograsim.logic.model.am2900.components.ModelAm2900MainMemory; +import net.mograsim.logic.model.am2900.components.ModelAm2900MicroInstructionMemory; +import net.mograsim.logic.model.model.LogicModel; +import net.mograsim.logic.model.model.LogicModelModifiable; +import net.mograsim.logic.model.modeladapter.CoreModelParameters; +import net.mograsim.logic.model.modeladapter.LogicCoreAdapter; +import net.mograsim.logic.model.serializing.IndirectModelComponentCreator; import net.mograsim.machine.Machine; import net.mograsim.machine.MachineDefinition; +import net.mograsim.machine.MainMemory; import net.mograsim.machine.Register; +import net.mograsim.machine.mi.MicroInstructionMemory; +import net.mograsim.machine.mi.StandardMicroInstructionMemory; +import net.mograsim.machine.standard.memory.WordAddressableMemory; public class Am2900Machine implements Machine { private Am2900MachineDefinition machineDefinition; - private ViewModel viewModel; + private LogicModelModifiable logicModel; private Timeline timeline; - private Clock clock; + private MainMemory mainMemory; + private MicroInstructionMemory instMemory; + private CoreClock clock; public Am2900Machine(Am2900MachineDefinition am2900MachineDefinition) { this.machineDefinition = am2900MachineDefinition; - ViewModelModifiable viewModelModifiable = new ViewModelModifiable(); - IndirectGUIComponentCreator.createComponent(viewModelModifiable, "resource:Am2900Loader:/components/GUIAm2900.json"); - LogicModelParameters params = new LogicModelParameters(); + logicModel = new LogicModelModifiable(); + IndirectModelComponentCreator.createComponent(logicModel, + "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/Am2900.json", "Am2900"); + CoreModelParameters params = new CoreModelParameters(); params.gateProcessTime = 50; params.wireTravelTime = 10; - timeline = ViewLogicModelAdapter.convert(viewModelModifiable, params); - clock = ((GUIClock) viewModelModifiable.getComponentsByName().get("GUIClock#0")).getClock(); + mainMemory = new WordAddressableMemory(am2900MachineDefinition.getMainMemoryDefinition()); + instMemory = new StandardMicroInstructionMemory(am2900MachineDefinition.getMicroInstructionMemoryDefinition()); + logicModel.getComponentBySubmodelPath("Am2900.Am2900MainMemory#0", ModelAm2900MainMemory.class).setMachine(this); + logicModel.getComponentBySubmodelPath("Am2900.Am2900MicroInstructionMemory#0", ModelAm2900MicroInstructionMemory.class) + .setMachine(this); + timeline = LogicCoreAdapter.convert(logicModel, params); } @Override @@ -46,9 +58,9 @@ public class Am2900Machine implements Machine } @Override - public ViewModel getModel() + public LogicModel getModel() { - return viewModel; + return logicModel; } @Override @@ -58,7 +70,7 @@ public class Am2900Machine implements Machine } @Override - public Clock getClock() + public CoreClock getClock() { return clock; } @@ -77,4 +89,16 @@ public class Am2900Machine implements Machine } + @Override + public MainMemory getMainMemory() + { + return mainMemory; + } + + @Override + public MicroInstructionMemory getMicroInstructionMemory() + { + return instMemory; + } + }