Skip navigation

ARES


Page Content:

Experimental Mode

Reagenzgläser in einer Halterung

ARES ist nicht nur ein Debugger für Core War-Spieler, sondern auch ein Experimentier-Baukasten für Leute, die sich mit der grundlegenden Funktionsweise eines Computers auseinandersetzen wollen. Die Erweiterung heißt "Hermes" (eine Anspielung auf den Begriff Hermeneutik) und bietet zusätzliche Funktionen, die herkömmliche MARS-Programme nicht beinhalten. Vermutlich ist ARES nicht der einzige MARS, der einen erweiterten Befehlssatz kennt. Es gibt eine Sammlung von Vorschlägen für mögliche (und auch unmögliche) weitere Opcodes. Befehle und Erweiterungen, die nicht für das Spiel Corewar gedacht sind, nenne ich "Bluecode". Manche Bluecode-Befehle könnten zwar auch im Spiel benutzt werden, sind aber von pmars nicht implementiert und gehören daher nicht zum Extended-94 Standard.

ARES bietet im Experimenal-Modus folgende zusätzliche Möglichkeiten:

Hermes Extension

Aktivieren

Die Funktionen der Hermes-Erweiterung stehen nur zur Verfügung, wenn man den Simulator in den "Experimental Mode" umschaltet. Das macht man im Optionen-Dialog unter MARS/MARS accepts/Bluecode. Nachdem man auf den Experimental Modus umgeschaltet hat und das Optionen-Fenster verläßt, wird das Consolenfenster (der virtuelle Bildschirm) geöffnet. Ein Klick auf "Compile + Run" bootet daraufhin das "Mikro-System". Sollte das Console-Fenster einmal abhanden kommen, kann man es über das "Window"-Menu wieder herbeischaffen (Voreingestellter Shortcut: Strg-F7). Um das ROM-Programm starten zu lassen, sollte man vor dem Umschalten die Einträge für die Warriors im Hauptfenster löschen: Sind beide Texteingabefelder leer, so wird der Name der ROM-Datei als "Warrior A" voreingestellt, nachdem man den Optionendialog schließt.

User-Programme

Man kann ein User-Programm als Warrior B angeben, welches zwar übersetzt, aber nicht gestartet wird, denn im Experimental Mode wird nur die Task-Queue des Spieler A verwendet. Das Hermes-ROM prüft beim "hochfahren", ob ein Userprogramm an Adresse &1000 vorhanden ist, und übergibt in diesem Fall die Kontrolle an dieses Programm. Natürlich kann man den Hermes auch ohne das ROM programmieren. Mit ARES werden zwei Bluecode-Programme ausgeliefert: Eines ist als Userprogramm für das Hermes-ROM gedacht, das andere kann alleine anstelle des ROMs geladen werden.

Besonderheiten

Wenn du den Simulator auf "Experimental Mode" schaltest, werden die letzten 400 Speicherzellen des Core als Video-RAM betrachtet: Zahlen, die dort gespeichert werden bewirken, daß die "Grafikkarte" entsprechende Farben und Zeichen anzeigt. Der Speicherbereich des "VRAM" wird im Monitor-View blau angezeigt. Oberhalb des VRAM befinden sich an den Adressen VRAM_START-1 und VRAM_START-2 die Register der Video-Hardware. Zahlen, die dorthin gespeichert werden, bestimmen die Hintergrundfarbe der Console, die Farbe des Rahmens und Position sowie Sichbarkeit des Texteingabe-Cursors. Diese beiden Speicherzellen werden im Monitor grün dargestellt. An der Adresse VRAM_START-3 befindet sich der Port zum Tastaturprozessor. Wird im Console-Fenster eine Taste gerückt, so wird das Zeichen von einem virtuellen Tastaturprozessor zwischengespeichert. Das erste Zeichen wird in den Hauptspeicher übertragen (Adresse VRAM_START-3), weitere Zeichen werden in einem Tastaturpuffer zwischengespeichert. Wenn ein Programm das Zeichen aus dem Tastaturport ausgelesen und verarbeitet hat, muß es den Zahlenwert 0 in die Speicherzelle des Tastaturports schreiben, was den Tastaturprozessor anweist, das nächste Zeichen aus seinem Puffer in den Port zu übertragen.

Bluecode

Damit die Programme für den Experimental-Mode etwas näher an die Wirklichkeit echter Computer herankommen, wurden dem Prozessor besondere Eigenschaften hinzugefügt, die es im Spiel Core War nicht gibt. Es handelt sich hierbei um Absolute Adressierung (der adress mode indicator ist "&"), sowie "Stack"-Funktionen, die vom MARS-Prozessor unterstützt werden. Für Programmierer stehen somit die Befehle PSH, POP, JSR und >RET zur Verfügung. Der Stack-Bereich beginnt eine Zelle oberhalb der ersten Instruktion des Programmes und wird rückwärts gezählt. Userprogramme werden deshalb an die Adresse &1000 geladen, damit Werte, die auf den Stack "gepushed" werden, nicht mit dem Video-RAM kollidieren. Die Maximale Stackgröße ist darum auch 1000 Zellen. Das wird jedoch nicht von der Hardware geprüft, denn dem Prozessor fehlt ein Statusregister. Weitere Informationen können dem kommentierten Quellcode des ROMs entnommen werden.

HERMES_mini.rom

Das Hermes-Mini-ROM ist nur ein Programmrumpf und dafür vorgesehen, von einem Lernenden erweitert zu werden. Es beinhaltet einige Unterprogramme, die Zeichenketten in der Console ausgeben oder den Bildschirm löschen. Des Weiteren gibt es ein besonderes OS-CALL Unterprogramm, das von Userprogrammen benutzt werden soll, um Funktionen des ROMs kontrolliert aufzurufen. Derzeit bietet das ROM-System nur 5 Betriebsystem-Funktionen (CLRSRC, SCROLLUP, HOME, PRNTSTR, und READKEY). Die Systemaufrufe durch OS-CALL zu abstrahieren hat den Vorteil, dass Programme nur diese eine Adresse kennen müssen. So kann man das ROM erweitern ohne alte Userprogramme zum Absturz zu bringen.

Eine Aufgabe

Das Mini-ROM kann zwar eingegebene Zeichen auf den Bildschirm übertragen, es sorgt sogar für Scrolling, jedoch erkennt es weder die Cursror-Tasten noch Return oder TAB. Die Stelle, an der Erweiterungen für diese Tasten eingefügt werden sollen, befindet sich in Zeile 95 der Datei "HERMES_mini.rom" und ist mit einem Kommentar gekennzeichnet.



Content Management:

μCMS α1.6