SOKOBAN

Als (bisher) letzter Versuch einer De-Kompilation habe ich das Spiel SOKOBAN verwendet. Gefunden habe ich es im Software-Archiv des KC-Clubs", in der Rubrik CP/M-Spiele" ( Ebenfalls auf dieser Seite findet sich das Spiel SLIDER. Ein Hinweis dazu findet sich hier ). Auch dieses Spiel war in TURBO PASCAL 3.x als .COM-Datei kompiliert. Für die De-Kompilation gilt, was unter QUATRIS beschrieben wurde.

Hier zunächst das Ergebnis des Originals mit den speziellen ESCape Sequenzen für den KC.

Das größte Problem war die Anpassung an die Grafik-Routinen. Hier habe ich zurückgegriffen auf Routinen, die im Artikel Turbo-Grafik für den JOYCE vorgestellt wurde. Hier dann das Ergebnis, zerlegt in drei Dateien:

Hinweis: Der Kern für die Grafik ist eine Assembler-Routine, die im Common Memory des JOYCE liegt, weshalb dieses Programm ohne Modifikation nicht unter allen CP/M-Maschinen lauffähig ist. (Diese Routine ist aus dem Artikel und leicht modifiziert). Es gibt folgende Zugriffspunkte:
  • _PLOT liegt in $F400 und wird von der Prozedur Plot (als GX_Dot) benutzt, die über Parameter auf einen Punkt im Video-Speicher zugreift.
  • _CLRGRAF liegt in $F462 und wird von der Prozedur CLRGRAF (als GX_Clr) benutzt, die den kompletter Bildschirm löscht.
  • _X liegt in $F410 und stellt die Speicheradresse für den 16 Bit Wert der X-Koordinate dar (als GX_X).
  • _YM liegt in $F412 und stellt die Speicheradresse für den 8 Bit Wert der Y-Koordinate dar (als GX_Y).
  • _YM+1 liegt in $F413 und stellt die Speicheradresse für die Art des Zugriffes auf den Bildpunkt dar (als GX_M). (Im Programm werden nur die Werte 0 (Pixel setzen) und 1 (Pixel löschen) verwendet).
Vor der Nutzung der Grafikroutinen werden diese noch in das Common Memory verschoben (mittels der Routine GraphInit).

Ein Tipp für die, die selber kompilieren wollen: Es muss eine .COM-Datei erzeugt werden. Wegen der Adresse von _PLOT ($F400) muss die Endadresse auf maximal $F3FF eingestellt werden.

Ein letzter Hinweis: Zum Aufbau des Spielfeldes werden normale Textdateien verwendet, in denen jeweils fünf Spielfelder enthalten sind. Bei Auswahl einer Spielebene wird eine dieser Dateien eingelesen und in ein internes Spielfeld gewandelt. Die Dateien haben Namen SOKO-x.PIC, wobei x von 0 bis 11 laufen kann ( [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] ).
Eine Information zum Spiel SOKOBAN findet sich in Wikipedia, der freien Enzyklopädie.
Zum Einstimmen hier der Eröffnungsbildschirm und zwei mögliche Spielfelder: