From: Christian Femers Date: Tue, 3 Sep 2019 05:08:49 +0000 (+0200) Subject: Rough machine extension point implementation X-Git-Url: https://mograsim.net/gitweb/?p=Mograsim.git;a=commitdiff_plain;h=3813eb83f6c17041dcb67d7d2744c66a8bfdb18d Rough machine extension point implementation Attention: some parts are only experimental --- diff --git a/net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF b/net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF index fb03a1f6..cd8ecd1e 100644 --- a/net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF +++ b/net.mograsim.logic.model.am2900/META-INF/MANIFEST.MF @@ -8,6 +8,6 @@ Export-Package: net.mograsim.logic.model.am2900.components, net.mograsim.logic.model.am2900.components.am2910, net.mograsim.logic.model.examples Bundle-RequiredExecutionEnvironment: JavaSE-11 -Require-Bundle: net.mograsim.logic.model;bundle-version="0.1.0";visibility:=reexport +Require-Bundle: net.mograsim.machine;bundle-version="0.1.0";visibility:=reexport Automatic-Module-Name: net.mograsim.logic.model.am2900 Bundle-Vendor: Mograsim Team diff --git a/net.mograsim.logic.model.am2900/build.properties b/net.mograsim.logic.model.am2900/build.properties index d6642e65..ba7fb993 100644 --- a/net.mograsim.logic.model.am2900/build.properties +++ b/net.mograsim.logic.model.am2900/build.properties @@ -1,4 +1,5 @@ source.. = src/ bin.includes = META-INF/,\ .,\ - OSGI-INF/ + OSGI-INF/,\ + plugin.xml diff --git a/net.mograsim.logic.model.am2900/plugin.xml b/net.mograsim.logic.model.am2900/plugin.xml new file mode 100644 index 00000000..7cfe4a72 --- /dev/null +++ b/net.mograsim.logic.model.am2900/plugin.xml @@ -0,0 +1,14 @@ + + + + + + + + + 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 new file mode 100644 index 00000000..df3b726f --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900Machine.java @@ -0,0 +1,80 @@ +package net.mograsim.logic.model.am2900.machine; + +import net.mograsim.logic.core.components.Clock; +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.machine.Machine; +import net.mograsim.machine.MachineDefinition; +import net.mograsim.machine.Register; + +public class Am2900Machine implements Machine +{ + private Am2900MachineDefinition machineDefinition; + private ViewModel viewModel; + private Timeline timeline; + private Clock clock; + + public Am2900Machine(Am2900MachineDefinition am2900MachineDefinition) + { + this.machineDefinition = am2900MachineDefinition; + ViewModelModifiable viewModelModifiable = new ViewModelModifiable(); + IndirectGUIComponentCreator.createComponent(viewModelModifiable, "resource:Am2900Loader:/components/GUIAm2900.json"); + LogicModelParameters params = new LogicModelParameters(); + params.gateProcessTime = 50; + params.wireTravelTime = 10; + timeline = ViewLogicModelAdapter.convert(viewModelModifiable, params); + clock = ((GUIClock) viewModelModifiable.getComponentsByName().get("GUIClock#0")).getClock(); + } + + @Override + public MachineDefinition getDefinition() + { + return machineDefinition; + } + + @Override + public void reset() + { + // TODO Auto-generated method stub + + } + + @Override + public ViewModel getModel() + { + return viewModel; + } + + @Override + public Timeline getTimeline() + { + return timeline; + } + + @Override + public Clock getClock() + { + return clock; + } + + @Override + public BitVector getRegister(Register r) + { + // TODO Auto-generated method stub + return null; + } + + @Override + public void setRegister(Register r, BitVector value) + { + // TODO Auto-generated method stub + + } + +} diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MachineDefinition.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MachineDefinition.java new file mode 100644 index 00000000..6f9b6d8c --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MachineDefinition.java @@ -0,0 +1,47 @@ +package net.mograsim.logic.model.am2900.machine; + +import java.util.Set; + +import net.mograsim.machine.ISASchema; +import net.mograsim.machine.Machine; +import net.mograsim.machine.MachineDefinition; +import net.mograsim.machine.MainMemoryDefinition; +import net.mograsim.machine.Register; + +public class Am2900MachineDefinition implements MachineDefinition +{ + private MainMemoryDefinition memoryDefinition = new Am2900MainMemoryDefinition(); + + @Override + public Machine createNew() + { + return new Am2900Machine(this); + } + + @Override + public ISASchema getISASchema() + { + // TODO Auto-generated method stub + return null; + } + + @Override + public Set getRegisters() + { + // TODO Auto-generated method stub + return null; + } + + @Override + public int getAddressBits() + { + return 16; + } + + @Override + public MainMemoryDefinition getMainMemoryDefinition() + { + return memoryDefinition; + } + +} diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MainMemoryDefinition.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MainMemoryDefinition.java new file mode 100644 index 00000000..478ec242 --- /dev/null +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/am2900/machine/Am2900MainMemoryDefinition.java @@ -0,0 +1,32 @@ +package net.mograsim.logic.model.am2900.machine; + +import net.mograsim.machine.MainMemoryDefinition; + +public class Am2900MainMemoryDefinition implements MainMemoryDefinition +{ + + @Override + public int getMemoryAddressBits() + { + return 16; + } + + @Override + public long getMinimalAddress() + { + return 0; + } + + @Override + public long getMaximalAddress() + { + return 0xFFFF; + } + + @Override + public int getCellWidth() + { + return 16; + } + +} diff --git a/net.mograsim.machine/build.properties b/net.mograsim.machine/build.properties index e9863e28..3090e4c0 100644 --- a/net.mograsim.machine/build.properties +++ b/net.mograsim.machine/build.properties @@ -1,5 +1,5 @@ source.. = src/ -output.. = bin/ bin.includes = META-INF/,\ .,\ - plugin.xml + plugin.xml,\ + schema/ diff --git a/net.mograsim.machine/plugin.xml b/net.mograsim.machine/plugin.xml index 4171a8db..8f737144 100644 --- a/net.mograsim.machine/plugin.xml +++ b/net.mograsim.machine/plugin.xml @@ -1,6 +1,5 @@ - - + diff --git a/net.mograsim.machine/schema/net.mograsim.machine.machinedefinition.exsd b/net.mograsim.machine/schema/net.mograsim.machine.machinedefinition.exsd new file mode 100644 index 00000000..43763a6e --- /dev/null +++ b/net.mograsim.machine/schema/net.mograsim.machine.machinedefinition.exsd @@ -0,0 +1,109 @@ + + + + + + + + + Mograsim extension for defining a machine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The machines name + + + + + + + A Class that implements the Mograsim Machine Definition + + + + + + + + + + + + + + + 0.1.0 + + + + + + + + + [Enter extension point usage example here.] + + + + + + + + + [Enter API information here.] + + + + + + + + + [Enter information about supplied implementation of this extension point.] + + + + + diff --git a/net.mograsim.machine/schema/net.mograsim.machinedefinition.exsd b/net.mograsim.machine/schema/net.mograsim.machinedefinition.exsd deleted file mode 100644 index ea6d2580..00000000 --- a/net.mograsim.machine/schema/net.mograsim.machinedefinition.exsd +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - - - - Mograsim extension for defining a machine - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - The machines name - - - - - - - A Class that implements the Mograsim Machine Definition - - - - - - - - - - - - - - - 0.1.0 - - - - - - - - - [Enter extension point usage example here.] - - - - - - - - - [Enter API information here.] - - - - - - - - - [Enter information about supplied implementation of this extension point.] - - - - - diff --git a/net.mograsim.machine/src/net/mograsim/machine/Machine.java b/net.mograsim.machine/src/net/mograsim/machine/Machine.java index 00a1e34c..dc544da6 100644 --- a/net.mograsim.machine/src/net/mograsim/machine/Machine.java +++ b/net.mograsim.machine/src/net/mograsim/machine/Machine.java @@ -1,6 +1,7 @@ package net.mograsim.machine; import net.mograsim.logic.core.components.Clock; +import net.mograsim.logic.core.timeline.Timeline; import net.mograsim.logic.core.types.BitVector; import net.mograsim.logic.model.model.ViewModel; @@ -16,4 +17,6 @@ public interface Machine { BitVector getRegister(Register r); void setRegister(Register r, BitVector value); + + Timeline getTimeline(); }