X-Git-Url: https://mograsim.net/gitweb/?p=Mograsim.git;a=blobdiff_plain;f=plugins%2Fnet.mograsim.logic.model.am2900%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fmodel%2Fam2900%2Fmachine%2FAm2900Machine.java;h=86c60044c330d075141e3fde6ae28ef1a7eb76a8;hp=bcde112dfa0f2b02eb3046c7e2273aaf72a582a7;hb=d094b43f1697af4586f135790919f866cc53a9a5;hpb=6c32f347005a369359a68c09b7e9ac2f4a1eab0f diff --git a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900Machine.java b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900Machine.java index bcde112d..86c60044 100644 --- a/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900Machine.java +++ b/plugins/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900Machine.java @@ -2,11 +2,13 @@ package net.mograsim.logic.model.am2900.machine; import net.mograsim.logic.core.components.CoreClock; import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.core.types.Bit; import net.mograsim.logic.core.types.BitVector; 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.model.components.ModelComponent; import net.mograsim.logic.model.modeladapter.CoreModelParameters; import net.mograsim.logic.model.modeladapter.LogicCoreAdapter; import net.mograsim.logic.model.serializing.IndirectModelComponentCreator; @@ -15,23 +17,28 @@ import net.mograsim.machine.MachineDefinition; import net.mograsim.machine.MainMemory; import net.mograsim.machine.Register; import net.mograsim.machine.mi.AssignableMicroInstructionMemory; +import net.mograsim.machine.mi.MicroInstruction; +import net.mograsim.machine.mi.MicroInstructionDefinition; import net.mograsim.machine.mi.StandardMicroInstructionMemory; +import net.mograsim.machine.mi.parameters.MicroInstructionParameter; +import net.mograsim.machine.mi.parameters.ParameterClassification; import net.mograsim.machine.standard.memory.WordAddressableMemory; public class Am2900Machine implements Machine { private Am2900MachineDefinition machineDefinition; private LogicModelModifiable logicModel; + private ModelComponent am2900; private Timeline timeline; private MainMemory mainMemory; private AssignableMicroInstructionMemory instMemory; private CoreClock clock; - public Am2900Machine(Am2900MachineDefinition am2900MachineDefinition) + public Am2900Machine(LogicModelModifiable model, Am2900MachineDefinition am2900MachineDefinition) { this.machineDefinition = am2900MachineDefinition; - logicModel = new LogicModelModifiable(); - IndirectModelComponentCreator.createComponent(logicModel, + this.logicModel = model; + this.am2900 = IndirectModelComponentCreator.createComponent(logicModel, "resloader:Am2900Loader:jsonres:net/mograsim/logic/model/am2900/components/Am2900.json", "Am2900"); CoreModelParameters params = new CoreModelParameters(); params.gateProcessTime = 50; @@ -54,8 +61,13 @@ public class Am2900Machine implements Machine @Override public void reset() { - // TODO Auto-generated method stub - + logicModel.getComponentByName("Am2900").setHighLevelState("c.out", BitVector.of(Bit.ZERO)); + MicroInstructionDefinition muiDef = getDefinition().getMicroInstructionMemoryDefinition().getMicroInstructionDefinition(); + ParameterClassification[] paramClassifications = muiDef.getParameterClassifications(); + MicroInstructionParameter[] defaultParams = muiDef.createDefaultInstruction().getParameters(); + defaultParams[19] = paramClassifications[19].parse("JZ"); + MicroInstruction jzMI = MicroInstruction.create(defaultParams); + logicModel.getComponentByName("Am2900").setHighLevelState("muir_2.q", jzMI.toBitVector()); } @Override @@ -64,6 +76,11 @@ public class Am2900Machine implements Machine return logicModel; } + public ModelComponent getAm2900() + { + return am2900; + } + @Override public Timeline getTimeline() { @@ -101,5 +118,4 @@ public class Am2900Machine implements Machine { return instMemory; } - -} +} \ No newline at end of file