Memory Array Redcode Simulator

Anleitung zum Schreiben von RED-CODE Programmen

see also the english version


Der "KRIEG DER KERNE" ist ein von A.K.Dewdney in Spectrum der Wissenschaft (Bd.8/84) vorgestelltes Computerspiel, bei dem zwei "Kampfprogramme" in einem 8000 Programmadressen umfassenden, zyklischen Speicher versuchen sich gegenseitig auszuschalten. Beim Spielablauf wird abwechselnd jeweils eine Anweisung der beiden Programme ausgefuehrt. Ein Programm hat verloren, wenn sein Programmcounter auf einen nicht ausfuehrbaren Befehl (DAT-Anweisung) zeigt. Die Programme werden in einer einfachen Assembler-Sprache, dem sogenannten "Redcode" geschrieben. Die Kontrolle ueber den gesamten Spielablauf hat das uebergeordnete Java-Programm " M A R S" (Memory Array Redcode Simulator). Nach dem Loeschen des Speichers mit DAT 0 Anweisungen hat dieses Programm zunaechst die Aufgabe die beiden Kampfprogramme an zufaellige Adressen in dem 8000 Programmzeilen umfassenden Speicher auszusetzen, wobei der minimale Abstand der beiden Programme 1000 Schritte umfasst. Es stehen fuer jeden Spieler maximal 32000 Ausfuehrungszyklen zur Verfuegung. Sollten beide Programme nach dieser Zeit noch lauffaehig sein, endet das Spiel unentschieden. Nur das MARS-Programm kennt die absoluten Positionen der Kampfprogramme, da alle Adressierungen relativ erfolgen.

Die von uns erstellte MARS-Version stellt waehrend des Kampfes die letzten 200 Programmaktionen auf dem Bildschirm dar. Kampfprogramme koennen vom Server oder aus dem mittleren Textfenster geladen werden. Bis zu 100 Spielwiederholungen sind einstellbar, wobei nach jedem Spiel eine Auswertung erfolgt.

Auf dem Server befinden sich eine Reihe von fertigen Kampfprogrammen:

Einfache Programme ohne Reaktionsvermoegen:

KNIRPS ist das kuerzeste Kampfprogramm ueberhaupt. Es besteht nur aus einer Programmzeile und kopiert sich bei jeder Ausfuehrung um ein Feld weiter.

GNOM belegt den ganzen Speicher in Viererabstaenden mit DAT 0-Bomben, wobei es selbst gerade nicht getroffen wird.

MICE der Weltmeister des letzten internationalen "Krieg der Kerne" Turniers! Dieses Programm enthaelt die SPL (Split)-Anweisung und macht nichts anderes als sich staendig zu verdoppeln.

Intelligentere Programme:

WINZLING ist ein von uns geschriebenes Programm, das gegen MICE mit relativ hoher Wahrscheinlichkeit gewinnt.

Weitere Literatur:
A.K.Dewdney, Spektrum der Wissenschaft Band 5/1985 und 4/1987

Befehlstabelle nach ICWS88
Anweisung Kürzel Argument A Argument B
Data Anweisung DAT - direkt
Verschiebe MOV #,@,<,direkt @,<,direkt
Addiere ADD #,@,<,direkt @,<,direkt
Subtrahiere SUB #,@,<,direkt @,<,direkt
Springe JMP @,<,direkt -
Springe wenn Null JMZ @,<,direkt @,<,direkt
Springe wenn nicht Null JMN @,<,direkt @,<,direkt
Vermindere und springe wenn nicht Null DJN @,<,direkt @,<,direkt
Vergleiche CMP #,@,<,direkt @,<,direkt
Überspringe wenn kleiner SLT #,@,<,direkt @,<,direkt
Spalte auf SPL @,<,direkt -

Ausführliche Befehlsbeschreibung nach ICWS88:

Adressierungsarten:

Als Argumente koennen generell Label, positive und negative Zahlen im Bereich von -7999 bis +7999 verwendet werden. Die Angaben von Zahlen beziehen sich auf den momentanen Stand des Programmcounters. Labels werden beim Laden des Programms entsprechend umgerechnet. Ein MARS-Programm kann also niemals seine absolute Position feststellen.

Programme werden mit einem Text-Editor erstellt und besitzen folgende Syntax:

( 1-6 Zeichen Label), 1 Space, 3 Zeichen Befehlskürzel, 1 Space, Argument A, 1 Space, Argument B,( 1 Space, Kommentar).

Beispiele gültiger Programmzeilen:

LOOP1 MOV #2222 -1500
A1 JMP 500 ; springe auf ziel2
DAT -4560
COPY DJN COPY DATE1
ZIEL EQU -780
; Dies ist ein Kommentar

Beispielprogramme:

diese beiden Programme sind gleichwertig!

GNOM DAT -1 GNOM1 DAT -1
ADD #5 -1 LOOP ADD #5 GNOM1
MOV #0 @-2 MOV #0 @GNOM1
JMP -2 JMP LOOP

Anschrift der Autoren:

Thomas Kentemich
Haferbuckel 18
D-40789 Monheim

Wolfgang Zimmer
Lazarett Str. 8
D-82467 Garmisch-Partenkirchen


updated by W. Zimmer, 27.07.97