Von der Minimaschine existieren drei ausführbare Varianten:
Minimaschine.jar | Ausführbare jar-Datei, die unter jedem Betriebssystem lauffähig ist. |
Minimaschine.exe | Eine speziell für MS-Windows angepasste Variante der Minimaschine. |
Minimaschine.app | Eine speziell für macOS angepasste Variante der Minimaschine ab macOS 10.13 mit eigener Java-Laufzeitumgebung. |
Alle Varianten (außer Minimaschine.app) setzen eine Java-Laufzeitumgebung der Version 13 oder höher voraus.
Gestartet wird die Maschine durch Doppelklick auf das entsprechende Programmsymbol. Unter macOS und Windows lässt sich die Maschine auch durch Doppelklick auf eine zugeordnete Assembler- oder Minisprachendatei starten; die Datei wird dabei automatisch geöffnet. Nach dem Start erscheinen zwei Fenster, die die CPU in der detaillierten Ansicht (siehe 2.4) und den Speicher (siehe 2.6) repräsentieren. Gegebenenfalls wird auch bereits ein Dateifenster geöffnet.
Die Menüs variieren je nach ausgewähltem Fenster. Fester Bestandteil aller Menüzeilen sind:
Der Menüpunkt Beenden ist abhängig vom Betriebssystem im Menü Minimaschine (macOS) oder im Menü Ablage (andere Betriebssysteme).
Die fensterspezifischen Menüeinträge werden dort besprochen.
Voreingestellt | Erweitert |
Dieses Fenster stellt die Grundbestandteile der CPU sowie einen relevanten Ausschnitt aus dem Speicher dar. Weiter enthält es die Bedienelemente zum Ausführen eines im Speicher befindlichen Programms.
Die Teile im Einzelnen von links nach rechts:
Akkumulator | Der Akkumulator der Maschine | |
ALU | Das Y-förmig dargestellte Rechenwerk zeigt links oben den ersten Operanden (Akku), in der Mitte oben die Operation, rechts oben den zweiten Operanden (Speicherwert oder Wert aus dem Befehl) und unten das Ergebnis der Operation | |
Status | Das Statusregister mit den vier Flags Z (letzte Operation hatte das Ergebnis 0), N (letzte Operation hatte ein negatives Ergebnis), V (letzte Operation hatte einen Überlauf bei vorzeichenbehafteter Arithmetik) und C (letzte Operation hatte einen Überlauf bei vorzeichenloser Arithmetik) | |
Befehlsregister | Das Befehlsregister zeigt Operationscode und Adressteil | |
Programmzähler | Der Programmzähler der Maschine | |
Speicher oben | Der Speicherinhalt um den Wert des Programmzählers; so sind der aktuelle und der folgende Befehl uninterpretiert sichtbar | |
Speicher unten | Der Speicherinhalt um den Wert des letzten Adressteils |
In der erweiterten Version kommen von links nach rechts dazu:
Stackpointer | Das Stackpointerregister(Kellerspeicherregister) der Maschine | |
Speicher oben | Der Speicherinhalt um den Wert des Programmzählers; so sind der aktuelle und der folgende Befehl uninterpretiert sichtbar | |
Speicher mitte | Der Speicherinhalt um den Wert des letzten Adressteils | |
Speicher unten | Der Speicherinhalt über dem Wert des Stackpointers |
Über den CPU-Bestandteilen ist der Datenbus dargestellt; im Mikroschrittmodus werden hier auch die übertragenen Daten dargestellt. In der Mitte steht der aktuelle Mikroschrittstatus. Unter den CPU-Bestandteilen ist der Adressbus dargestellt; im Mikroschrittmodus werden hier auch die von der CPU angelegten Adressen dargestellt. Unter dem Adressbus ist der Steuerbus symbolisiert. Hier wird im Mikroschrittmodus die Datenflussrichtung (Schreiben / Lesen) angezeigt.
Ausgeführt werden Programme mithilfe der drei Knöpfe am unteren Rand des Fensters.
Mit „Ausführen” wird die Programmausführung gestartet; die Ausführung endet bei Erreichen
des Befehls HOLD oder eines illegalen Befehlscodes.
Mit „Einzelschritt” wird genau ein Befehl ausgeführt; dieser Modus dient insbesondere zum Demonstrieren der Befehle
oder zum Testen von Programmen.
Mit „Mikroschritt” lassen sich die einzelnen Phasen eines Befehls (Holen – Dekodieren – Ausführen) mit ihrer
Wirkung auf Register und Busse genau betrachten.
Spezielle Menüpunkte sind im Menü Werkzeuge zu finden. Hier kann man zwischen detaillierter und einfacher Ansicht umschalten. Mit dem Menüpunkt „Abbruchschranke setzen“ kann man die Zeit bis zum Abbruch von Programmen einstellen (Angabe in Sekunden). Der Menüpunkt „CPU zurücksetzen” setzt den Programmzähler und den Akkumulator auf den Wert 0 und löscht alle Flags ohne den Speicher zu verändern; danach kann ein Programm neu gestartet werden. Mit den Menüpunkt „Erweitert” können die Erweiterungen an- und ausgeschaltet werden.
Voreingestellt | Erweitert |
In diesem Fenster wird der Inhalt das Speichers dargestellt. Die Darstellung der Speicheradressen ist dezimal, auf Wunsch auch hexadezimal; jeweils zehn Speicherzellen sind in einer Zeile angezeigt. Die Zellinhalte werden als ganze, vorzeichenbehaftete Dezimalzahlen, als ganze, vorzeichenlose Dezimalzahlen, als vorzeichenlose Hexadezimalzahlen oder als Opcodes interpretiert dargestellt; der Inhalt der jeweils zuletzt geänderten Zelle wird rot angezeigt.
Bei Bedarf kann das Speicherfenster auch zum Verändern des Speichers verwendet werden. Die Aktivierung des Editiermodus erfolgt über das Werkzeugmenü. Editiert wird durch Klick auf die gewünschte Zelle und Eingabe des neuen Wertes. Beim Verlassen der Zelle wird der (neue) Wert automatisch in den Speicher übernommen.
Für das Speicherfenster ist vor allem das Werkzeuge-Menü wichtig.
Die Editorfenster dienen zur Eingabe von Assembler- oder Minisprachenprogrammen. Sie implementieren einen einfachen Editor, der die Zwischenablage unterstützt (Kopieren, Ausschneiden und Einfügen) sowie das Widerrufen und Wiederholen von Änderungen.
Für die Editorfenster sind Menüpunkte aus allen Menüs verfügbar.
In den Assembleranzeige-Fenstern wird auf Wunsch der zu einem Minisprachenprogramm gehörende Assemblertext angezeigt. Diese Funktion ist speziell dafür vorgesehen, den Schülern zu zeigen, dass eine vollautomatische Übersetzung einer Hochsprachenquelle den strukturell gleichen Assemblertext ergibt, den Schüler „von Hand” erzeugt hätten.
Assembleranzeige-Fenster haben keine speziell zugeordneten Menüs; die Editierfunktionen des Bearbeiten-Menüs sind verfügbar.