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
source.. = src/
bin.includes = META-INF/,\
.,\
- OSGI-INF/
+ OSGI-INF/,\
+ plugin.xml
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ id="net.mograsim.machine.machinedefinition.am2900"
+ name="Am2900 Machine"
+ point="net.mograsim.machine.machinedefinition">
+ <MachineDefinitionImplementation
+ class="net.mograsim.logic.model.am2900.machine.Am2900MachineDefinition"
+ name="net.mograsim.logic.model.am2900.machine.am2900machinedefinition">
+ </MachineDefinitionImplementation>
+ </extension>
+
+</plugin>
--- /dev/null
+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
+
+ }
+
+}
--- /dev/null
+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<Register> getRegisters()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public int getAddressBits()
+ {
+ return 16;
+ }
+
+ @Override
+ public MainMemoryDefinition getMainMemoryDefinition()
+ {
+ return memoryDefinition;
+ }
+
+}
--- /dev/null
+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;
+ }
+
+}
source.. = src/
-output.. = bin/
bin.includes = META-INF/,\
.,\
- plugin.xml
+ plugin.xml,\
+ schema/
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
- <extension-point id="net.mograsim.machinedefinition" name="Mograsim Machine Definition" schema="schema/net.mograsim.machinedefinition.exsd"/>
-
+ <extension-point id="net.mograsim.machine.machinedefinition" name="Mograsim Machine Definition" schema="schema/net.mograsim.machine.machinedefinition.exsd"/>
</plugin>
--- /dev/null
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="net.mograsim.machine" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="net.mograsim.machine" id="net.mograsim.machine.machinedefinition" name="Mograsim Machine Definition"/>
+ </appinfo>
+ <documentation>
+ Mograsim extension for defining a machine
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <choice minOccurs="1" maxOccurs="unbounded">
+ <element ref="MachineDefinitionImplementation"/>
+ </choice>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute translatable="true"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="MachineDefinitionImplementation">
+ <complexType>
+ <attribute name="name" type="string" use="required">
+ <annotation>
+ <documentation>
+ The machines name
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+ A Class that implements the Mograsim Machine Definition
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":net.mograsim.machine.MachineDefinition"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="since"/>
+ </appinfo>
+ <documentation>
+ 0.1.0
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="examples"/>
+ </appinfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="apiinfo"/>
+ </appinfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="implementation"/>
+ </appinfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
+++ /dev/null
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="net.mograsim.machine" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
- <appinfo>
- <meta.schema plugin="net.mograsim.machine" id="net.mograsim.machinedefinition" name="Mograsim Machine Definition"/>
- </appinfo>
- <documentation>
- Mograsim extension for defining a machine
- </documentation>
- </annotation>
-
- <element name="extension">
- <annotation>
- <appinfo>
- <meta.element />
- </appinfo>
- </annotation>
- <complexType>
- <choice minOccurs="1" maxOccurs="unbounded">
- <element ref="MachineDefinitionImplementation"/>
- </choice>
- <attribute name="point" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="id" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- </annotation>
- </attribute>
- <attribute name="name" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- <appinfo>
- <meta.attribute translatable="true"/>
- </appinfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <element name="MachineDefinitionImplementation">
- <complexType>
- <attribute name="name" type="string" use="required">
- <annotation>
- <documentation>
- The machines name
- </documentation>
- </annotation>
- </attribute>
- <attribute name="class" type="string" use="required">
- <annotation>
- <documentation>
- A Class that implements the Mograsim Machine Definition
- </documentation>
- <appinfo>
- <meta.attribute kind="java" basedOn=":net.mograsim.machine.MachineDefinition"/>
- </appinfo>
- </annotation>
- </attribute>
- </complexType>
- </element>
-
- <annotation>
- <appinfo>
- <meta.section type="since"/>
- </appinfo>
- <documentation>
- 0.1.0
- </documentation>
- </annotation>
-
- <annotation>
- <appinfo>
- <meta.section type="examples"/>
- </appinfo>
- <documentation>
- [Enter extension point usage example here.]
- </documentation>
- </annotation>
-
- <annotation>
- <appinfo>
- <meta.section type="apiinfo"/>
- </appinfo>
- <documentation>
- [Enter API information here.]
- </documentation>
- </annotation>
-
- <annotation>
- <appinfo>
- <meta.section type="implementation"/>
- </appinfo>
- <documentation>
- [Enter information about supplied implementation of this extension point.]
- </documentation>
- </annotation>
-
-
-</schema>
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;
BitVector getRegister(Register r);
void setRegister(Register r, BitVector value);
+
+ Timeline getTimeline();
}