home *** CD-ROM | disk | FTP | other *** search
-
-
-
-
-
- PatchStarCompiler V1.00
-
-
-
-
- Copyright 1990 Roger Fischlin
- Steigerwaldweg 6
- 6450 Hanau 7
- Deutschland
-
-
-
-
- Dieses Programm ist FREEWARE, d.h. das Urheberrecht liegt beim
- Autor !
-
- Die Weitergabe ist nur erlaubt wenn :
- 1. der Name des Autors und der Copyright-Vermerk nicht entfernt
- wurden,
- 2. die Weitergabe unentgeldlich ist bzw. nur die DIREKTEN
- Kosten erhoben werden.
-
-
-
-
-
-
-
-
- Patchen, d.h. das gezielte manipulieren einiger Bytes eines Files, ist
- in Mode gekommen. Überlicherweise benötigen Sie zum Patchen einen File-
- Editor (z.B. "NewZap","FileMaster"). Deshalb entstand die Idee, eine
- einfache , PASCAL-ähnliche Programmiersprache speziell für Patch-
- Programme zu entwickeln. Diese Programme können dann mit dem PatchStar-
- Compiler in ein im CLI ausführbares Programm übersetzt werden.
-
-
-
-
-
- PatchStar-Spache
-
-
- Die Spache umfaßt nur wenige Befehle:
-
- TEXT, PATCH, CHECK, IF TRUE, IF FALSE, BEGIN, END, EXIT
-
- Allgemein achtet der Compiler weder auf Groß- und Kleinschreibung,
- ferner können beliebig viele Leerzeichen und Tabs zur besseren Über-
- sichtlichkeit eingefügt werden. Jede Zeile kann mit einem vorange-
- stellten "*"- oder ";"-Zeichen als Kommentarzeile genutzt werden,
- außerdem kann mit einen ";"-Zeichen am Zeilenende nach dem Befehle eine
- Bemerkung im Quellcode hinzugefügt werden.
-
-
-
- TEXT : TEXT entspricht der PASCAL-Anweisung "WriteLn".Der in An-
- führungszeichen eingeschlossen Text wird im CLI-Fenster aus-
- gegeben, anschließend springt der Cursor in die nächste
- Zeile.
- Beispiele : TEXT "Programm gepatcht."
- TEXT 'Falsche Programmversion !'
-
-
- PATCH : PATCH ist der zentrale Befehl zum Patchen. Nach dem Befehls-
- wort folgt die Adresse (in dezimaler, hexadezimaler [$],
- binärer [%] oder oktaler [@] Schreibweise). Nach mindestens
- einem Leerzeichen folgenden dann die zu patchenden Byte-
- Werte in hexadezimaler Form. Zur besseren Übersichtlichkeit
- kann nach der Patch-Adresse ebenfalls ein Doppelpunkt einge-
- fügt werden. Falls Sie jedoch einen String patchen möchten,
- so wird dieser statt der einzelnen Bytes in Anführungs-
- zeichen gestzt. Das Mischen von Byte- und String-Angaben ist
- nicht möglich !
- Da PATCH der zentrale Befehl ist, kann das Befehlswort auch
- entfallen und man beginnt direkt mit der Patch-Adresse.
-
- Beispiele : PATCH $0000 : "256"
- PATCH 50 ff ff ff ea
- PATCH %110 '200'
- 123456 $4a $99 $5a
- @00 $349afb
-
-
- CHECK : CHECK dient zum Überprüfen von Bytes der zu patchenden
- Datei. Dies mag sinnvoll sein, wenn der Patch z.B. mehrere
- Programmversionen bearbeiten kann. Aber auch eine Abfrage,ob
- es sich um die richtige Version handelt, kann vor falsch ge-
- patchten Files bewahren. Der Befehl hat die gleiche Syntax
- wie PATCH, das Befehlswort darf aber nicht entfallen, da der
- Compiler die Anweisung sonst als einen PATCH-Befehl inter-
- pretiert. Das Ergebnis der Abfrage kann anschließend mit
- Hilfe der IF-Anweisung (siehe unten) ausgewertet werden.
-
- Beispiele : CHECK $0000 : "256"
- CHECK 50 ff ff ff ea
- CHECK %110 '200'
-
-
- BEGIN : Mit BEGIN und END werden, wie in Pascal, mehrere Programm-
- END zeilen zusammengefaßt. Dies ist nach einer IF-Abfrage (siehe
- unten) nötig, damit der Compiler weiß, welche Befehle der
- Computer ausführen soll, und welche wer gegebenenfalls über-
- springen soll.
-
-
-
- IF FALSE : Mit beiden IF-Befehlen wird das Ergebnis der CHECK-Anweisung
- IF TRUE verarbeitet. Die nach "IF FALSE" folgenden Befehle werden
- ausgeführt, wenn die CHECK-Überprüfung negativ (falsch) war,
- die sich an "IF TRUE" anschließenden Anweisungen werden aus-
- geführt, falls die Überprüfung positiv (wahr) war. Die nach
- der IF-Anweisung auszuführenden Befehle müssen, auch wenn es
- sich nur um einen Befehl handelt, innerhalb einer BEGIN-END-
- Anweisung stehen.
- Der IF-Befehl bezieht sich immer auf die zuletzt ausgeführte
- CHECK-Anweisung ! Innerhalb der BEGIN-END-Anweisung können
- weitere IF-Abfragen vorkommen.
-
-
- Beispiel : CHECK $132 : "256"
- IF TRUE
- BEGIN
- TEXT "PAL-Version !"
- END
- IF FALSE
- BEGIN
- PATCH $132 : "256"
- TEXT "NTSC- auf PAL-Version gepatcht!"
- END
-
-
-
-
- EXIT : Trifft der Computer auf eine EXIT-Anweisung, beendet er die
- Ausführung des Patches vorzeitig.
-
-
- Beispiel : CHECK $4656 : "1.3"
- IF FALSE
- BEGIN
- TEXT "Leider falsche Programmversion!"
- EXIT
- END
-
-
-
-
- Beispielprogramm
-
-
- ; ED Patch taken from FileMaster
-
-
- check $1aad : "199" ; check if it's the right version !
-
-
- if true ; yes, now patch window size
- begin
- Patch $1aad : "255"
- Text "ED 1.4 will now open PAL window."
- end
-
-
-
- if false ; no, it's a different version of ED !
- begin
- Text "Sorry, wrong version of ED !"
- end
-
-
-
-
-
-
-
-
-
- Patch erzeugen
-
-
- Erstellen Sie den Quellcode in der oben beschriebenen Sprache in einem
- ASCII-Editor (z.B. ED) und speichern Sie die Datei ab.Erzeugen Sie eine
- zweite Datei, deren Inhalt beim Aufruf des Programmes mit einem "?"
- ausgeben wird. Rufen Sie dann im CLI den PatchStarCompiler auf:
-
- 1> PatchStarCompiler <Info-Datei> <Quellcode> <Name des Patches>
-
-
- Der Compiler generiert in mehren Schritten aus den Dateien das reine
- Patch-Programm und speichert es unter dem Namen, der als dritter
- Parameter übergeben wurde.
-
-
-
- 27. Oktober 1990 Roger Fischlin
-