Anhang A: Allgemeines _____________________ A.1 Bezugsadressen (Aenderungen vorbehalten) ____________________________________________ Probleme mit Core Wars, Fehlermeldungen, Verbesserungsvorschläge: Unicorn Systems Bernstrasse 67 CH-4852 Rothrist Core War Standard: Mark Clarkson 8619 Wassall Street Wichita Kansas 67210-1934, USA Die "Core War Standard" ist eine ca. 30 Seiten umfassende Dokumentation der Redcode-Sprache. Dort sind alle Regeln zum Aufbau von Redcode - Programmen und zur Beschaffenheit von MARS-Systemen enthalten. Gegen eine Gebühr von $4.-- kann die Dokumentation bei obiger Adresse bestellt werden. A.2 Quellenverzeichnis ______________________ A. K. Dewdney: Computer-Kurzweil (Spektrum der Wissenschaft August 1984, Mai 1985, April 1987) Robert Martin: The CORE WARS system for the Macintosh (Dokumentation eines MARS-Systems für den Apple Macintosh) Mark Clarkson: Core War Standard (Genaue Dokumentation des Aufbaus von Redcode und MARS) A.3 Installieren des Programmes _______________________________ Core Wars ist Shareware, es darf also ohne Weiteres weitergegeben und kopiert werden. Es muss aber beachtet werden, dass Core Wars verschiedene Dateien und Programme benötigt, um fehlerfrei zu laufen. Das Kopieren auf einen anderen Datenträger wird am Einfachsten über das CLI vorgenommen. Das Aufrufen und die Bedienung des CLI sind in der Bedienungsanleitung zum Amiga und im "Amiga DOS Manual" genau beschrieben. Kopieren Sie mit dem CLI-Befehl "copy" alle benötigten Dateien in das richtige Verzeichnis auf der neuen Diskette oder der Festplatte. Core Wars ist von uns in zwei Versionen in Umlauf gebracht worden. Die eine besteht aus einer autostartfähigen Diskette mit allen nötigen Verzeichnissen und Dateien. Die zweite Version besteht aus einem einzigen Verzeichnis auf einer handelsüblichen Public Domain Diskette (Fred Fish, FAUG, Kickstart, AUGE 4000, AUGS u.s.w.). Um aus den Files in einem solchen Verzeichnis eine autostartfähige Core Wars Diskette herzustellen, müssen verschiedene Vorarbeiten geleistet werden. Auf einer lauffähigen Core Wars Diskette sollten die unten aufgeführten Verzeichnisse und Dateien vorhanden sein, wobei die mit einem Stern (*) gekennzeichneten Dateien vom Core Wars System unbedingt benötigt werden. Am Einfachsten wird dazu eine original Workbench Diskette (ab Version 1.2) kopiert und auf der Kopie werden dann die überflüssigen Dateien gelöscht. *CoreWars Das Hauptprogramm. *LiesMich Dieser Text hier. Redcode (Dir) Für eigene Programme vorgesehen. c (Dir) CLI-Befehle und Utilities der Workbench LoadIFF Anzeigen von Bildern im IFF-Format (siehe Anleitung). CorePic Titelbild von CoreWars (nur bei Autostart sichtbar). Beispiele (Dir) Ein Verzeichnis mit einigen Programmbeispielen. Mice Siegerprogramm Welmeisterschaft 1986 Mausefalle Schlägt Mice! Gnom \ Knirps > weitere Beispielprogramme, siehe Anleitung. Chang / *System (Dir) Einige Hilfsprogramme der Workbench. *Einstellungen Einstellungsdatei für den Core Wars Editor. *View Anzeigen von Textdateien (z.B. diesen Text). *Fonts (Dir) Zeichensätze, die von Core Wars benötigt werden. *Diamond.font \ *Diamond (Dir) > Zeichensatz 'Diamond 12' *12 / Anleitung (Dir) Enthält Die Anleitung in Form von Textdateien. Einleitung KapitelI KapitelII KapitelIII Anhang *libs Betriebssystem: Funktionsbibliotheken. *icon.library *diskfont.library Die Datei "Einstellungen" im Verzeichnis "system" wird beim ersten Start des Redcode Editors automatisch eingelesen. Sollte sie nicht gefunden werden, kommen die Standardeinstellungen zur Anwendung. Sobald Sie sich ein Redcode-Programm durch einen Doppelklick auf sein Icon ansehen wollen, wird dazu das Programm "View" verwendet. Wenn "View" nicht im Verzeichnis "system" zu finden ist, gibt das Betriebssystem in der Titelzeile der Workbench eine Fehlermeldung aus, was aber keine weiteren Folgen hat. A.4 Die Hilfsprogramme ______________________ A.4.1 View ---------- Dieses Programm befindet sich auf der Programmversion mit der startfähigen Diskette im Verzeichnis "System". Es dient dazu, Textdateien (z.B. den Quelltext eines Redcode-Programmes) auf dem Bildschirm anzuzeigen. Grundsätzlich kann dies mit einer beliebigen Kombination von drei Optionen geschehen: Wortweise, Zeilentrennung und Escape. Diese Optionen werden beim Aufruf des Programmes angegeben: Im CLI durch die Buchstaben w, t und e mit vorangestelltem Plus- oder Minuszeichen (+ oder -), in der Workbench durch die sogenannten "ToolTypes" des Icons der Textdatei. Die "Tool Types" sind eine Art Botschaft, die an das Programm übergeben werden. Beispielsweise wird die Escape-Option mit dem Eintrag "ESCAPE=EIN" ein- und mit dem Eintrag "ESCAPE=AUS" ausgeschaltet. Sie können die "Tool Types" einfach verändern: Wählen Sie ein Icon eines Textes mit einem Mausklick an (kein Doppelklick). Dann rufen Sie in der Workbench den Menupunkt "Info" auf. Im anschliessend erscheinenden Info-Fenster können Sie bestehende Tool Types ändern und mit ADD neue hinzufügen. Die Zusammenfassung der Modi und die Art und Weise, wie diese über die ToolTypes und das CLI ein- oder ausgeschaltet werden: Wortweise-Modus: Tool Type : WORTWEISE=EIN WORTWEISE=AUS CLI : +w -w Standard : Ausgeschaltet Wörter, die über das Ende einer Bildschirmzeile hinausgehen würden, werden ganz auf die nächste Zeile übertragen. So kann ein Text, der nur aus einer einzigen Zeile besteht, besser gelesen werden. Diese Option ist bei der Anzeige eines Quelltextes nicht notwendig, weil der Redcode Editor keine Zeilen zulässt, die länger als 77 Zeichen sind. Zeilentrennungs-Modus: Tool Type : ZEILENTRENNUNG=EIN ZEILENTRENNUNG=AUS CLI : +t -t Standard : Ausgeschaltet Wenn eine Linie des Textes länger als eine Bildschirmzeile ist, wird sie abgeschnitten. Normalerweise (mit ausgeschalteter Option) wird der Rest einer überlangen Linie auf der nächsten Zeile des Bildschirmes angezeigt. Escape-Modus: Tool Type : ESCAPE=EIN ESCAPE=AUS CLI : +e -e Standard : Ausgeschaltet Es ist möglich, in einen normalen Text bestimmte Steuerzeichen einzusetzen, mit denen die Farbe von einzelnen Buchstaben und Wörtern geändert werden kann. Wenn der ESCAPE-Modus eingeschaltet ist, werden diese Zeichen korrekt umgesetzt und angezeigt. Weil der Redcode Editor keine Steuerzeichen unterstützt, ist diese Option normalerweise ausgeschaltet. Wenn "View" läuft und ein Text angezeigt wird, können Sie der untersten Zeile, der Statuszeile, verschiedene Informationen über den Text entnehmen: Die Länge der Datei, die augenblickliche Position im Text und eine Angabe in Prozent. Letztere besteht aus zweien durch einen Querstrich getrennten Zahlen: Sie geben die Position des auf dem Bildschirm angezeigten Textausschnittes im Gesamttext an. Die erste Zahl steht für das Zeichen, das sich ganz links oben befindet, die zweite Zahl für das letzte (unterste) Zeichen. Die Anzeige des Textes kann über folgende Tastaturkommandos gesteuert werden: o Positionieren auf Textbeginn Backspace Taste 'r' o Nächste Bildschirmseite anzeigen Space Taste 'v' o Positionieren auf Zeichen durch Eingabe Taste 'z' der Nummer des Zeichens o Positionieren auf Zeichen durch Eingabe Taste 'p' in Prozent o Hilfeseiten anzeigen Taste 'h' o View abbrechen Taste 'q' Taste 'Esc' Das Programm kann auch durch einen Mausklick in das Schliessgadget des Textfensters (linke obere Ecke) verlassen werden. Wenn Sie die Kommandos 'p' oder 'z' verwenden, müssen Sie anschliessend in der Statuszeile eine Zahl eingeben. Wirksam sind die Tasten 0 bis 9 und die Backspace-Taste, welche die letzte eingegebene Ziffer löscht. Bei Prozentangaben können Sie Zahlen von 0 bis 100 und bei Zeichennummern von 0 bis zur Textlänge eingeben. Ein Beispiel zum starten über das CLI: "View +e +w Anleitung" zeigt einen Text namens "Anleitung" im Escape- und im Wortweise-Modus an. Weil normalerweise alle Optionen unwirksam sind, muss hier der Zeilentrennungs-Modus nicht mit "-t" explizit ausgeschaltet werden. A.4.2 LoadIFF ------------- Dieses Programm liest ein Bild von Diskette ein und zeigt es auf dem Bildschirm an. "LoadIFF" verträgt sowohl Bilder in den normalen Auflösungen als auch im HAM-Modus des Amiga. Alle Bilder können mit dem bekannten Colorcycling-Effekt (Farbrollen) angezeigt werden. Beim Aufrufen des Programmes kann angegeben werden, wie lange das Bild auf dem Bildschirm stehen bleiben soll. Der Mauszeiger verschwindet während der Anzeige und erscheint nach dem Beenden des Programmes wieder. LoadIFF kann nur vom CLI aus mit dieser Syntax aufgerufen werden: LoadIFF [H] [n] Die Inhalte der spitzen Klammern sind notwendig, die Inahlte der eckigen Klammern sind wahlweise anzugeben. Die Bedeutung der Bezeichner: Name Das Bild, das angezeigt werden soll. Delay Dauer, welcher der das Bild auf dem Bildschirm stehen bleibt. Die Zeit wird in 1/50 - Sekunden angegeben: 500 würde das Bild 10 Sekunden lang anzeigen. H Das Bild wird im HAM-Modus angezeigt. n Eine Zahl von 0 bis 7, die die Art des Colorcycling bezeichnet. Es ist möglich, drei Bereiche aller Farben gleichzeitig zu Rollen. Die Kombination der Bereiche wird durch die Zahl bestimmt: 0 = Kein Farbrollen, 1 = Bereich 1, 2 = Bereich 2, 3 = Bereich 1 und 2, 4 = Bereich 3, 5 = Bereich 1 und 3, 6 = Bereich 2 und 3, 7 = alle drei Bereiche. Dies entspricht übrigens den Bits, die durch die Zahl gesetzt werden, wenn sie im binären Zahlensystem dargestellt wird. LoadIFF befindet sich auf der Originaldiskette im Verzeichnis "c", das aber auf der Workbench nicht sichtbar ist. Das Programm ist zu 100% in Assembler geschrieben und deshalb sowohl sehr schnell als auch sehr kurz (etwa 3 kByte). A.5 Einstellungen _________________ A.5.1 Standardwerte ___________________ o Tabulatorsprung 16 Zeichen o Unterscheidung von Gross/Kleinschrift beim Suchen Eingeschaltet o Aufblitzen des Bildschirms nach dem 66. Zeichen Eingeschaltet o Makros der Funktionstasten f1 bis f10 Alle Redcode- Befehle o Makros der Funktionstasten F1 bis F10 Keine Wenn beim ersten Aufrufen des Editors von Core Wars die Einstellungsdatei namens "Einstellungen" im Verzeichnis "System" der Startdiskette nicht gefunden wird, werden die aufgeführten Standardwerte wirksam. A.5.2 Aufbau der Einstellungsdatei __________________________________ Es handelt sich um eine Textdatei, die durch ein Erkennungs- wort gekennzeichnet wird. Die folgende Tabelle zeigt den Aufbau einer solchen Textdatei: o Erkennungswort "Redcode Editor 1988 by Roger Meier & Patric Hofmann" o Makro-Liste Eine Liste aller 20 Makros, wobei jedes auf einer neuen Zeile beginnen muss. Eine nicht belegte Funktions- taste ist durch eine Leerzeile ge- kennzeichnet. o Tabulatorsprung Eine dreistellige Zahl, mit voran- gestellten Leerzeichen aufgefüllt. o Gross/Klein und Glocke Eine zweistellige Zahl, die aus den Ziffern 0 und 1 Besteht. 0 = Aus, 1 = Ein. Die erste Ziffer steht für die Gross/Klein Unterscheidung, die zwei- te für die Glocke (bzw. den Bild- schirmblitz). Anhang B: Index _______________ B.1 Fachbegriffe ________________ Adresse: Sie bestimmt eine Position im Speicherfeld des MARS-Systems. Jede Zelle des Speicherfeldes kann durch ihre Adresse gelesen und verändert werden. Jeder Programmzeiger eines Kampfprogrammes enthält die Adresse der nächsten auszuführenden Anweisung. Adressierungsart, Adressierungsmodus: Bestimmt die Vorgehensweise, nach der ein Argument eines Befehls interpretiert wird. Bei Redcode erlaubt vier verschiedene Adressierungsarten, die durch die Zeichen #, $, @ und < angegeben werden: Unmittelbar, direkt, indirekt und indirekt-dekrement. Anweisung: Ein Redcode-Befehl in einem Kampfprogramm mit zwei Argumenten und den Adressierungsarten der Argumente. Argument: Die Angaben in einer Anweisung, auf welche Speicherzelle oder -zellen sich der Befehl der Anweisung bezieht. Assembler: Uebersetzt den Quelltext in einen von MARS ausführbaren Objektcode. Ausdruck: Ein aus mehreren Symbolen bestehendes Argument eines Redcode Befehls. Ausdrücke können nur vom Assembler verstanden und übersetzt werden. Backspace: Die Taste ganz rechts oben auf der Tastatur mit dem aufgedruckten Peil nach links. Sie dient normalerweise zum Löschen des zuletzt eingegebenen Zeichens. Datei: Eine Sammlung von Zeichen, die sich in einem Massenspeicher (Diskette, RAM-Disk) befindet und die zur Verarbeitung von einem Programm eingelesen werden kann. Eine Datei kann ein Text sein, sie kann jedoch auch aus Sonder- und Steuerzeichen bestehen. Daten: Im MARS-Speicherfeld können sich Anweisungen von Kampfprogrammen sowie Datenwerte befinden. Der Unterschied besteht darin, dass ein Datenwert (DAT) nicht von einem Programm ausgeführt werden kann. Sollte dies doch versucht werden, gilt das betreffende Programm als zerstört. Editor: Der Teil des Core Wars Programmes auf dem Amiga, mit dem die Redcode-Programme geschrieben werden können. Der Editor speichert die Kampfprogramme als Textdatei (siehe unter Quellcode) in einem Massenspeicher wie Diskette oder RAM-Disk ab. File: Siehe unter Datei Gadget: Um die Eingabe eines Programmnamens über die Tastatur abzuschliessen, stehen oft zwei Gadgets zur Verfügung. Dies sind kleine umrahmte Kästen mit einer Aufschrift oder einem Sinnbild. Durch einen Mausklick in dieses Kästchen kann die Eingabe dem Programm übergeben oder der Vorgang abgebrochen werden. Kampfprogramm: Ein Redcode-Programm. Es dient einzig und allein dazu, ein gegnerisches Kampfprogramm zu beschädigen und so den Kampf zu gewinnen. MARS: Eine Abkürzung für Memory Array Redcode Simulator. Mit anderen Worten der Begriff für das System, durch das ein Redcode-Programm ausgeführt werden kann. Beim Amiga wird dies ausschliesslich durch Software realisiert: Es handelt sich um einen Programmteil von Core Wars. Menü: Das System des Amiga, bestimmte Aktionen durch herunterklappbare Menustreifen auszuwählen (Pulldown-Menüs). Beim Programm Core Wars werden Menüs im Editor und im Hauptprogramm verwendet. Objektcode, Objektdatei: Eine Datei, die ein von MARS ausführbares Kampfprogramm enthält. Der Assembler erzeugt aus einem Quelltext den Objektcode, der dann in Form einer Objektdatei in einen Massenspeicher geschrieben wird. Programmzeiger: Jedes aktive (laufende) Redcode-Programm besitzt einen Programmzeiger. Dieser bestimmt die nächste, von MARS auszuführende Anweisung des Programmes. Ein Programmzeiger ist nicht auf 'sein' Redcode-Programm beschränkt, er kann vielmehr durch Sprunganweisungen wie JMP an beliebige Stellen im Speicherfeld gesetzt werden. Quellcode, Quelldatei, Quelltext: Ein normaler Text, der ein Kampfprogramm enthält. Der Text wird mit dem Editor geschrieben und muss vor der Ausführung durch MARS vom Assembler in den Objektcode übersetzt werden. Redcode: Eine Programmiersprache, in der die Kampfprogramme geschrieben sind. Sie hat ähnlichkeit mit Assembler, ist aber weit weniger komplex. Redcode umfasst 10 Befehle, mit denen im Programm gesprungen, Vergleiche ausgeführt und Speicherarithmetik betrieben werden kann. Normalerweise wird ein Redcode-Programm vor der Bearbeitung durch MARS mit einem Assembler in ausführbaren Objektcode übersetzt. Space: Die Leertaste, die normalerweise einen Zwischenraum in den Text einfügt. Speicherfeld: Der 8000 Zellen umfassende Bereich, in dem die Kampfprogramme ablaufen können. Das Speicherfeld besitzt eine Ringförmige Struktur: Ein Zugriff auf die Zelle Nr. 8000 kommt einem Zugriff auf Zelle Nr. 0 gleich. Symbol: Ein Name, der in einem Argument einer Redcode-Anweisung für einen Zahlenwert steht. Der Zahlenwert ergibt sich aus der Zeilennummer, in der das Symbol definiert wurde. Symbole machen einen Quelltext übersichtlich und leichter verständlich. Ein Ausdruck in einer Redcode-Anweisung kann aus mehreren Symbolen bestehen, die durch die Operatoren + und - verknüpft werden. Task: Wenn sich ein Redcode-Programmzeiger durch einen SPL (Split)- Befehl in zwei eigenständige Programmzeiger aufgeteilt hat, spricht man auch von zwei Tasks. Jedes einzelne Redcode-Programm, das während einem Kampf auf dem MARS-System läuft, ist ein Task. Zelle: Sie kann eine vollständige Redcode-Anweisung aufnehmen: Den Befehl, die Argumente A und B sowie die Adressierungsmodi für die Argumente A und B. Zellen können durch Redcode-Befehle verglichen, gelöscht und kopiert werden. Zyklus: Ein Zyklus ist a) ein vollständiger Durchlauf einer Schleife in einem Kampfprogramm oder b) Die Ausführung eines Befehles beider Beider Programme, die gegeneinander Kämpfen. Die zweite Bedeutung wird bei der Einstellung der anzahl Zyklen eines Kampfes verwendet.