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