Als ersten Versuch einer De-Kompilation habe ich das Spiel Quatris verwendet.
Dieses Spiel war in TURBO PASCAL 3.x als .COM-Datei kompiliert.
Da in TURBO PASCAL die komplette Run Time Library gelinkt wird, sind die Adressen der Run Time Routinen bekannt, was eine De-Kompilierung vereinfacht.
Die Hauptaufgabe war also, die Kontrollanweisungen
(IF ...THEN ...ELSE , FOR ...TO , FOR ...DOWNTO , REPEAT ...UNTIL , WHILE ...DO , CASE )
aus dem disassemblierten Quellcode zu ermitteln.
Zum Einstimmen auf das Spiel hier die Original-Dokumentation. Hier dann das Ergebnis: QUATRIS.PAS. Hinweis: Die Geschwindigkeitssteuerung erfolgt über eine interne Variable, der SysClock". Deshalb ist dieses Programm ohne Modifikation nur unter CP/M lauffähig. Natürlich gibt es kein optimales Programm, also habe ich auch dieses verschlimmbessert. Die interne Variable SysClock" ist umgangen, der Text eingedeutscht und die Tastatur auf den JOYCE abgestimmt. Außerdem werden doppelte Spielernamen unterdrückt und der Spielstand sortiert - hier also QUATRISJ.PAS |