Skip navigation

ARES


Page Content:

Konfiguration

Der Optionendialog wird über das Simulator-Menu aufgerufen. Er besteht aus acht Seiten ("Tabs"). Die Screenshots auf dieser Seite stammen von ARES v2.33β, das Aussehen wird sich in Zukunft noch etwas verändern. Die Erklärungen beziehen sich auf v2.34β.

Wenn ARES das erste Mal aufgerufen wird, dann werden die Verzeichnisse "ares_system" und "manual" sowie die Datei "bookmarks.txt" angelegt, sofern sie nicht ohnehin schon Vorhanden sind. ARES sollte in einem eigenen leeren Unterverzeichnis gespeichert werden, wie z. B. C:\Programme\ARES oder D:\ARES. Des Weiteren wird geprüft, ob der Font "Lucida Console" im System installiert ist. Wenn ARES diesen Font nicht finden kann, erscheint eine Dialogbox, die den Benutzer fragt, ob dieser Font installiert werden soll. Die Schriftarten für Editor und Monitor sind auf FixedSys voreingestellt, es wird aber empfohlen, Lucida Console mit 9pt zu verwenden. Manche Funktionen, wie das Installieren des Fonts funktionieren natürlich nur, wenn die entsprechenden Dateien auch vorhanden sind, ARES sollte aber auch weitgehend funktionieren, wenn nur die Datei ares.exe vorhanden ist.

Optionen

ARES bietet einige Optionen, die im Folgenden erklärt werden:

Abschnitte des Optionen-Dialoges
TabBeschreibung
MARSEinstellungen des Simulators - die "Spielregeln"
ConversionVoreingestellte Opcode Modifiers
CompilerEinstellungen zur Übersetzung von Kampfprogrammen und zur Initialisierung des Speichers
ZeusSteuerung der Oberfläche, Optionen des Debuggers
ShortcutsAlle Menubefehle können mit Tastaturkürzeln aufgerufen werden
KotHE-Mail einstellungen für die "Send-To-Hill" Funktion
BookmarksLesezeichen für Internetseiten
OthersEinstellungen, die keiner bestimmten Kategorie zuzuordnen sind

MARS

Hier kann man den Simulator konfigurieren:

Core Size
Größe des virtuellen Speichers (Core). Die Zahl der Instruktionen, die der MARS-Speicher aufnehmen kann.
Automatically copy input to limits
Wenn angewählt, dann wird der Wert für Core Size bei Änderung automatisch in die Felder Read Limit und Write Limit übertragen. Im Normalfall wird man das so wollen. Die Limits können nachträglich verändert werden.
Read Limit, Write Limit, visualize
Read- und Writelimit sind eine zusätzliche Erschwernis: Speicherzugriffe können nur auf Zellen erfolgen, die nicht weiter von der ausführenden Instruktion entfernt sind, als das Limit erlaubt. Man kann unterschiedliche Limits für lesende und schreibende Zugriffe festlegen, und diese im Core View anzeigen lassen ("visualize"). Aufgrund der Berechnung der Zugriffe müssen die Limits ein Teiler von Core Size sein.
Max. Tasks
Größe der Task-Queues. Beschreibt, wieviele Prozesse ein Kampfprogramm mit SPL erzeugen darf. Versucht ein Programm einen Task zu erzeugen, wenn die Queue schon voll ist, so wird der Versuch ignoriert.
P-Space Size
Ebenfalls eine Spielerweiterung. Gibt an, wieviel Privatspeicher den Programmen zur Verfügung steht (Erklärungen dazu finden sich im ICWS-94-Draft). Man kann die Größe des P-Space automatisch aus der Core Size ableiten lassen oder direkt eingeben.
Max. Cycles
Legt fest, wann ein Unentschieden vorliegt. Ein Cycle ist entweder ein oder zwei Ticks, wobei mit Tick die Ausführung einer Instruktion gemeint ist. Bei nur einem Spieler sind Ticks und Cycles gleichbedeutend, der Wert zeigt an, wieviele Befehle schon ausgeführt wurden. Sind zwei Programme im Speicher, so wird pro Zyklus je eine Instruktion aus beiden Task Queues ausgeführt, die Anzahl der Ticks pro Zyklus ist in diesem Falle immer doppelt so hoch, wie die Anzahl der Zyklen. Man kann die Max. Cycles automatisch auf ein Vielfaches der Core Size setzen lassen.
'MOV #' creates DAT
Damit ARES zu ICWS-88 kompatibel ist, kann man einschalten, daß automatisch ein DAT-Befehl an der Zieladresse erzeugt wird, wenn ein MOV einen A-operand mit immediate adress mode ausführt.
Es wird empfohlen, diese Option abzuschalten, wenn man nicht nach ICWS-88 spielt.
MOV copies Breakpoint
Eine Debugger-Option. Wenn eine Zelle durch eine MOV-Instruktion kopiert wird, dann wird der Breakpoint in der überschriebenen Zelle für gewöhnlich nicht verändert. Ist diese Option eingeschaltet, so wird beim Kopieren auch die Einstellung für einen eventuell gesetzten Haltepunkt mitübertragen. Das ist sinnvoll, wenn man einen Replikator programmiert hat und die Simulation ebenfalls dann unterbrochen werden soll, wenn eine Kopie des Basisprogramms eine Bestimmte Instruktion ausführt.
JMN.F / DJN.F behaviour like pmars
Leider ist der MARS von pmars nicht genau nach den Angaben des ICWS-94 programmiert. Das betrifft allerdings nur die Befehle JMN.F, JMN.X, JMN.I, DJN.F, DJN.X und DJN.I. Alle diese Befehle sollen einen Sprung ausführen, wenn die Werte der angegebenen Zelle Null sind. Für Operationen, die beide Felder (A und B) auf Null prüfen, schreibt ICWS-94 vor, daß der Sprung durchzuführen ist, wenn beide Werte ungleich Null sind. Das Programm pmars springt aber, wenn auch nur ein Wert ungleich Null ist.
Es wird dringend empfohlen, diese Option zu aktivieren, wenn man keinen triftigen Grund hat, ICWS-94 konformes Verhalten zu benutzen.
MARS accepts
Hier wird festgelegt, welche Opcodes man in den Core eingeben darf (Das betrifft auch den Assembler). Wird "Bluecode" gewählt, so werden die funktionen der Hermes-Einheit aktiviert. Extended Redcode erlaubt die Verwendung der indirekten Adressmodi *, { und }, sowie die Verwendung der Opcodes SEQ (Ein Synonym für CMP), SNE, STP, LDP und NOP.
Es wird empfohlen, die Option "Extended Redcode" zu wählen, wenn man keinen triftigen Grund hat, "Strictly Redcode (Draft 94)" zu verwenden.
Ein solcher Grund könnte sein, daß man nach den Regeln des ICWS-88 spielt und man verhindern will, daß irrtümlicherweise Warriors in den Speicher geladen werden, die diese Erweiterungen benutzen.
Evaluation of Pre/Post In/Decrement
Wenn ein Befehl wie z. B. MOV <0, <0 ausgeführt werden soll, dann ist nicht sofort klar, was genau wohin kopiert wird: Zuerst werden ja die Operanden ausgewertet, in diesem Fall wird <0 ausgeführt, wobei der zweite Wert auf <-1 geändert wird.
Danach stellt sich die Frage, ob die Zieladresse nun aus <0 oder aus <-1 berechnet werden soll. Nachdem bei der Auswertung von Operand A der Operand B (in diesem Beispiel derselben Zelle) um eins verkleinert wurde, gibt es zwei Möglichkeiten:
In Memory Evaluation
Der Prozessor arbeitet prinzipiell mit den Werten, die sich im Speicher befinden. Hier würde bei der Auswertung von Operand B bereits ein Wert von <-1 vorliegen und das Ziel der Transaktion hängt davon ab, welcher B-Wert in der Zelle darüber gespeichert ist. Es wird also die Zelle darüber an eine Adresse kopiert, die durch den Wert der Zelle darüber festgelegt wird, wie bei einem MOV -1, @-1.
In Register Evaluation
Bevor ein Befehl ausgeführt wird, wird er in dem Prozessor-Register "Current Instruction" zwischengespeichert. Die Evaluation der Operatoren erfolgt, Ergebnisse werden in den Core geschrieben. In unserem Beispiel wird bei der Auswertung des Operanden A der B-Wert dieses Befehls im Core dekrementiert. Danach wird Operand B (aus dem Register "Current Instruction") ausgewertet. Im Register steht immer noch <0, weshalb wiederum der B-Wert der aktuellen Zelle (+0) verkleinert wird. Es wird in diesem Falle die Zelle vor der aktuellen Instruktion über sich selbst kopiert (Wie ein MOV -1, -1).
Es wird dringend empfohlen, "In Register Evaluation" zu verwenden.
Core Presets
Man kann verschiedene Sets von MARS-Einstellungen speichern, wenn man bestimmte Einstellungen immer wieder benutzt.

Conversion

Es gibt Unterschiede, auf welche Felder sich bestimmte Instruktionen beziehen, wenn man nach den Regeln ICWS-86, ICWS-88 oder ICWS-94 spielt. Vor ICWS-94 gab es keine Opcode Modifier, jeder Befehl hat automatisch die passenden Felder angesprochen.

Wird in Redcode-94 kein Modifier angegeben, dann wird er aus dieser Tabelle ermittelt. Es gibt Auswahlmöglichkeiten für ICWS-86, ICWS-88, Bluecode und "Custom".

Es wird empfohlen, die Einstellung "Bluecode" zu verwenden, sie ist auch für die Regeln unter ICWS-94 gültig.

Compiler

Hier kann man das Übersetzen von Quellcodes beeinflussen:

ARES parser accepts white space as field divider
Manche MARS-Programme erlauben es, Operator A und B mittels Leerzeichen zu trennen. Hierbei kann es zu Konflikten mit Ausdrücken kommen, wenn sie Leerzeichen beinhalten, wie z. B. JMP loop + 1. Ist diese Option eingeschaltet, würde der ARES-Parser das als JMP loop, +1 interpretieren. Das kann sich besonders bei komplexeren Ausdrücken auswirken, etwa wenn eine Ausdruck wie (loop + delta) Leerzeichen beinhaltet, um die Lesbarkeit zu erhöhen.
Es wird empfohlen, diese Option auszuschalten.
External Assembly via pmars.exe
Der ARES-Parser arbeitet nicht genau gleich wie der von pmars. Wenn es zu Problemen kommt, kann man das Übersetzen durch die mitgelieferte pmars.exe aktivieren. Dadurch ist sichergestellt, daß die Übersetzung kompatibel mit pmars und den Hills ist. Diese Option ist nur dann sinnvoll, wenn die Quellcodes exzessiven Gebrauch von EQU und FOR machen. ARES v2.34 ignoriert mit externem Assembler die Direktiven ;break und ;watch.
Silent Assembly
Wenn das Popup-Fenster "Assembler Messages" nervt, kann man es hier abschalten. Es erscheint dann nur noch, wenn Fehler aufgetreten sind. Man kann dieses Fenster jedoch nachträglich über das Menu "Window" abrufen.
Fixed Entry Point for Warrior B
Eine Debug-Option. Man kann damit die Startadresse des zweiten Programmes erzwingen.
Clear Memory Before Compiling
Ist diese Option deaktiviert, so wird er Speicher zwischen den Runden nicht gesäubert. Man kann sich dann nicht darauf verlassen, daß eine Leere Zelle an ihrem Inhalt erkennbar wäre.
Üblicherweise wird der Speicher aber geleert, man hat mit ARES die Wahl, womit er dabei gefüllt werden soll:
Es wird empfohlen, den Speicher mit DAT $0, $0 löschen zu lassen.
Min. Distance/Max. Length
Der minimale Abstand zwischen zwei Warriors und maximal erlaubte Länge beim Laden. 2 * MINDISTANCE + 2 * MAXLENGTH darf natürlich nicht größer sein als CORESIZE.
pMARS version number
Hier kann die Core-Variable VERSION voreingestellt werden. Sobald sichergestellt ist, daß ARES zu einer bestimmten Version von pmars kompatibel ist, wird dieses Feld mit der entsprechenden Zahl vorbelegt sein. Für die Versionsnummer pmars 0.9.2 ist 092 einzugeben.
Include Core Variables as EQUs
Ist diese Option eingeschaltet, so werden beim Übersetzen automatisch einige EQU-Variablen vordefiniert. Siehe Pseudo-Instruktionen.
Complete Opcodes with
Wenn bei einer Instruktion kein B-Operator angegeben ist, dann wird dieser vorbestimmte Wert verwendet.

Zeus

Hier kann man das Aussehen und Verhalten der grafischen Oberfläche von ARES beeinflussen. Manche Optionen haben einen Shortcut (z. B. ^W für Animate...Access). In der Statusleiste des Hauptfensters wird der aktuelle Zustand dieser Optionen angezeigt: Großbuchstaben bedeuten "aktiv", Kleinbuchstaben "abgeschaltet". Die angezeigten Status-Buchstaben verändern sich nicht, wenn man den Funktionen andere Tasten zuweist.

Mouse Wheel Steps
Legt fest, wieviele Zellen im Monitor gescrollt werden soll, wenn man das Mausrad dreht.
Flash Cell Time
Wenn ein Befehl ausgeführt wird, dann wird die entsprechende Zelle im Core View kurz weiß hinterlegt dargestellt, damit man besser erkennt, wo gerade etwas passiert. Hiermit kann man festlegen, wie lange so ein "Aufblitzen" dauern soll. Dadurch wird die Ablaufgeschwindigkeit der Simulation beeinflußt, sofern sich ARES nicht gerade im "Fast Mode" befindet. (Diesen aktiviert man mit einem Rechtsklick im Core oder Strg-H.) Bei manchen Bildschirmen kann es vorkommen, daß ein sehr kleiner Wert (Unter 20) dazu führt, daß die Flashes nicht zu sehen sind.
Full Speed
Durch Betätigen dieser Schaltfläche werden die Einstellungen im Tab "Zeus" auf maximale Geschwindigkeit optimiert.
Animate Read/Write/Exec Access
Ist diese Option gewählt, dann werden im Monitor die Zellen markiert, die durch die aktuelle Instruktion adressiert wurden. Des Weiteren werden Lese/Schreibzugriffe im Core durch "flashen" visualisiert.
Voreingestellter Shortcut: Strg-W
Flash Cells on Acess
Aktiviert/Deaktiviert das Flashing. Ein vorrübergehendes Abschalten beschleunigt die Simulation deutlich.
Voreingestellter Shortcut: Strg-F
Gray Cells beyond Core Limits in Monitor
Wenn aktiviert, dann werden Zellen oberhalb der ersten Zelle (Adresse &000000) grau dargestellt, um den Wrap-Around zu visualisieren. Ebenso werden Zellen, die unterhalb der letzten Zelle (CORESIZE-1) angezeigt werden, ausgegraut.
Core Displays Opcode
Wenn diese Option eingeschaltet ist, dann zeigt die Core View bestimmte Buchstaben für die jeweils gespeicherten Instruktionen an. Wird die Option umgeschaltet, wird der aktuellerweise angezeigte Core nicht gleich angepaßt. Nur neu gezeichnete Zellen bekommen den Buchstaben, darum sollte man den Speicher löschen, damit die gesamte Core-Grafik erneuert wird.
Full Output in Monitor
Die Standardeinstellung ist "ausgeschaltet". Dadurch werden die Instruktionen im Monitor gekürzt ausgegeben. Opcode Modifiers werden nur gezeigt, wenn sie nicht dem Default entsprechen (siehe Tab "Conversion"). Weiters werden der adress mode indicator für direkte Adressierung ("$") nicht angezeigt, sowie unbenutze Felder (Wie bei yspan class="source">JMP) weggelassen. Diese Option ist für den Gebrauch im Unterricht gedacht.
Einsteigern wird empfohlen, die volle Ausgabe zu aktivieren, damit die Wirkungsweise der opcode modifier deutlicher wird.
Voreingestellter Shortcut: Strg-O
Display Signed Values
Da Zahlen im MARS-Speicher immer im Bereich 0..CORESIZE-1 gespeichert sind, kann die Anzeige von negativen Zahlen irritierend/unpassend sein. Mit dieser Option kann man wählen, ob die Zahlen so angezeigt werden, wie sie tatsächlich im Speicher vorliegen (ohne Vorzeichen), oder ob Zahlen n > CORESIZE/2 als CORESIZE-n dargestellt werden sollen.
Voreingestellter Shortcut: Strg-I
Don't Show Used Cells in Core after Reset
Ein Speedup. Wenn der Core nicht automatisch gelöscht wird (Siehe Tab "Compiler"), dann werden die Zellen, die schon Instruktionen aus dem vorigen Kampf beinhalten grau dargestellt. Bei besonders großen Cores kann es dadurch etwas länger dauern, bis die Grafik für einen "empty core" fertiggestellt ist.
Animate "the Winner is"
Legt fest, ob nach einem Kampf der herunterfallende Name des Gewinners angezeigt werden soll.
Core Zoom
Legt den Vergrößerungsfaktor für die Core View fest, wobei die Zahl für die Größe einer einzelnen Zelle in Pixel steht.
Show All Fonts
Legt fest, ob in den Dialog-Fenstern zur Schriftartenauswahl auch Schriften mit variabler Breite angezeigt werden sollen.
Es wird empfohlen, nur Schriften mit fixer Breite zu verwenden
Editor/Monitor Font
Hier kannst du die Schriftarten wählen, mit denen die jeweiligen Objekte angezeigt werden sollen.
Es wird empfohlen, Lucida Console mit 9pt Größe zu benutzen.

Shortcuts

Hier kannst du die Tastaturabkürzungen ("Shortcuts") für jeden Menupunkt festlegen. Manche Befehle können einen Shortcut haben, obwohl sie nicht über das Menu erreichbar sind.

KotH

Hier kannst du eingeben, wie ARES e-Mails an die Hills versenden soll.

Author Name
Dieser Text wird automatisch als Direktive eingefügt, wenn man eine neue Datei anlegt. (";author <name>"). Dieser Name wird auch veröffentlicht, wenn man einen Warrior auf einen Hill schickt.
Überlege gut, ob du hier wirklich eine e-Mail Adresse angeben willst.
Default Hill
Die Adresse, an die ein Warrior von der "Send-To-Hill" Funktion geschickt werden soll.
Reply-To
Hier sollte man unbedingt eine gültige e-Mail-Adresse angeben, damit man nach dem Einsenden Kontrolle über den hochgeladenen Warrior hat und damit der KotH-Server Statusmeldungen (z. B. ob der Warrior übersetzt werden konnte) an den Benutzer senden kann.
SMTP-Server
Der Post-Ausgangsserver. Meistens ein Name wie smtp.providername.at. Diese Angabe wurde einem vom eigenen Internet-Provider bekanntgegeben. Wenn diese Adresse nicht bekannt ist, dann kann man versuchen, in den Einstellungen seines Mailprogrammes nachzuschauen, oder man kann raten und probieren.
SMTP-Login
Falls der SMTP-Server eine Authentifizierung verlangt, muß man hier Username und Passwort eingeben, damit ARES e-Mail versenden kann.

Die Funktionen für den POP3 Server sind derzeit nicht implementiert. Es ist geplant, einen einfachen e-Mail Client in ARES einzubauen, der automatisch die Antworten der KotH-Server herunterladen soll.

Bookmarks

Hier kannst du den Inhalt des "Bookmarks" Menu bestimmen. Text nach einem Strichpunkt (";") wird vor der Auswertung entfernt. Leere Zeilen werden ignoriert. Eine Zeile, die nur ein Minus-Zeichen (Bindestrich, "-") beinhaltet, erzeuget eine Trennlinie im Menu. Alles andere wird als Link interpretiert. Solche Zeilen können aus bis zu drei Segmenten bestehen, wobei jeder Abschnitt mit einer Pipe ("|") getrennt wird. Der erste Abschnitt beinhaltet den URL (die "Internetadresse") der Seite. Der letzte Abschnitt definiert den Text für das Menu. Der mittlere Abschnitt kann entweder leer gelassen werden, oder er beinhaltet einen beliebigen Text. Ist ein Text vorhanden, dann wird die Seite beim Aufrufen in den Default-Browser des Betriebsystems geladen. Ist der Abschnitt leer, so wird die Seite in den eingebauten Browser von ARES geladen.
Beispiele:

Others

Hier sind alle Optionen, die keiner Kategorie zugeordnet sind.

Tournament Confrontations per Battle
Hier kann man festlegen, welcher Wert als Voreinstellung für die "Tournamen"-Funtkion gesetzt werden soll.
Register File Types
Durch Betätigung dieser Schaltfläche werden einige Registry-Keys in die Windows-Konfigurationsdatenbank eingetragen. Dadurch können *.red, *.blu und *.rom Dateien mit ARES assoziiert werden. Damit kann man bewirken, dass solche Dateien automatisch mit ARES geöffnet werden, wenn man sie doppelklickt. Besonders bequem ist das, wenn man Warriordateien im Internet anklickt. Der "Koenigstuhl"-Server bietet z. B. ein großes Archiv an .red Dateien an, die man dann gleich laufen lassen kann.
Ask Before Closing ARES
Die nervige "ARES wirklich beenden?"-Dialogbox abschalten.
Save Window Positions to INI
ARES merkt sich, wohin der Benutzer die einzelnen Fenster verschiebt. Diese Positionen kann man in der Konfigurationsdatei von ARES speichern lassen, damit sie beim nächsten Aufruf wieder genauso plaziert werden.
Display HTML help file after loading ARES
Legt fest, ob der integrierte Browser die Startseite anzeigen soll. Das wird man vermutlich recht bald abschalten wollen.
Warriors Directory
Legt fest, wo ARES primär nach Quelldateien suchen soll. Bestimmt den Ordner, den Open/Save-Dialoge beim Öffnen anzeigen.
Benchmark Directory
Hier kann man ein Verzeichnis angeben, in dem eine Sammlung von Referenz-Kampfprogrammen gespeichert ist. Man kann in der Benchmark-Funktion trotzdem einen anderen Ordner auswählen.


Content Management:

μCMS α1.6