Allows the pre-loading of program memory if a RAM is used as such. See #167, Closes #174

This commit is contained in:
hneemann 2018-07-23 09:34:30 +02:00
parent 2056ee4e0e
commit 399d7c54af
6 changed files with 41 additions and 0 deletions

View File

@ -6,6 +6,7 @@ HEAD, planned as v0.20
- Added EEPROM with separate ports for reading and writing.
- The external assembly IDE is able to preload also RAMs with executable code.
The register representing the program counter must be marked as such.
- Allows the pre-loading of program memory if a RAM is used as such.
v0.19, released on 14. June 2018
- Added a tabbed pane to the attributes dialog to make it more beginner friendly.

View File

@ -658,4 +658,16 @@ public final class Keys {
public static final Key<CustomShapeDescription> CUSTOM_SHAPE
= new Key<>("customShape", CustomShapeDescription.EMPTY).setSecondary();
/**
* True if a program is loaded to the simulator at startup
*/
public static final Key<Boolean> PRELOAD_PROGRAM
= new Key<Boolean>("preloadProgram", false).setSecondary();
/**
* The file to preload as a program at startup
*/
public static final Key<File> PROGRAM_TO_PRELOAD
= new Key.KeyFile("preloadProgramFile", new File("")).setSecondary();
}

View File

@ -1277,6 +1277,10 @@ public final class Main extends JFrame implements ClosingWindowListener.ConfirmS
if (modelModifier != null)
modelModifier.preInit(model);
else {
if (settings.get(Keys.PRELOAD_PROGRAM))
new RomLoader(settings.get(Keys.PROGRAM_TO_PRELOAD)).preInit(model);
}
model.init();

View File

@ -75,6 +75,8 @@ public class CircuitComponent extends JComponent implements Circuit.ChangedListe
ATTR_LIST.add(Keys.SHOW_DATA_TABLE);
ATTR_LIST.add(Keys.SHOW_DATA_GRAPH);
ATTR_LIST.add(Keys.SHOW_DATA_GRAPH_MICRO);
ATTR_LIST.add(Keys.PRELOAD_PROGRAM);
ATTR_LIST.add(Keys.PROGRAM_TO_PRELOAD);
}
private static final String DEL_ACTION = "myDelAction";

View File

@ -1180,6 +1180,17 @@ Sind evtl. die Namen der Variablen nicht eindeutig?</string>
<string name="key_useDefShape_tt">Verwendet die einfache Form zur Darstellung. Hat nur einen Effekt, wenn die
Schaltung eine Benutzerdefinierte Form oder eine DIL Form verwendet.</string>
<string name="key_preloadProgram">Datei beim Start in den Programmspeicher laden.</string>
<string name="key_preloadProgram_tt">Wird ein Prozessor simuliert, der einen RAM-Baustein als Programmspeicher
verwendet, ist es schwierig, diesen Prozessor zu starten, da der RAM Inhalt beim Start der Simulation immer mit
Nullen initialisiert wird. Diese Einstellung erlaubt das Laden von Daten in den Programmspeicher.
Der Programmspeicher in der Simulation muss als solcher markiert sein.
</string>
<string name="key_preloadProgramFile">Programdatei</string>
<string name="key_preloadProgramFile_tt">Datei welche beim Start der Simulation in den Programspeicher geladen werden
soll.
</string>
<string name="key_textOrientation">Ausrichtung</string>
<string name="key_textOrientation_tt">Lage der Koordinate relativ zum Text.</string>
<string name="key_textOrientation_LEFTBOTTOM">links unten</string>

View File

@ -1170,6 +1170,17 @@
<string name="key_useDefShape">Use Default Shape</string>
<string name="key_useDefShape_tt">Use the default shape instead of using the DIL or custom shape configured in the circuit.</string>
<string name="key_preloadProgram">Preload program memory at startup.</string>
<string name="key_preloadProgram_tt">When simulating a processor that uses a RAM device as the program memory,
it is difficult to start this processor because the RAM contents are always initialized with zeros at the start
of the simulation. This setting allows loading data into the program memory at startup.
The program memory in the simulation must be marked as such.
</string>
<string name="key_preloadProgramFile">Program file</string>
<string name="key_preloadProgramFile_tt">File which should be loaded into the program memory at the start of the
simulation.
</string>
<string name="key_textOrientation">Orientation</string>
<string name="key_textOrientation_tt">Position of the coordinate relative to the text.</string>
<string name="key_textOrientation_LEFTBOTTOM">left bottom</string>