Befehlsbersicht zu TOSPATCH V2.9.2: -------------------------------------- ; --- Kommentar (d.h. Rest der Zeile wird berlesen). <* --- TOS aus ROM lesen (TOS-Daten im Patchfile mssen stimmen!) lesen = TT.MM.JJJJ [,NATION] ---------------------- Prfen, ob es sich um das richtige TOS handelt (Datum und optional Nation). >Anzahl [Relocadr] ------------------ gepachtes TOS in Datei(en) schreiben. M”gliche Werte fr 'Anzahl' sind 1,2,4,6 und 8. Wenn vorhanden ist, wird nach reloziert und wird in die Variable .RELOCADR geschrieben. Sonst wird nur .BASE in .RELOCADR geschrieben. Ý --- CRC-Prfsumme nach dem Patchen berechnen und setzen. Die Variable .CRC wird auf 1 gesetzt (.CRC wird mit 0 initialisiert). !Adr,Adr, ... ------------- Einzelne Ausnahmen beim Relozieren. !Adr1..Adr2, ... ---------------- Bereich von Adr1 bis Adr2 vom Relozieren ausnehmen. Auch m”glich zusammen mit einzelnen Relozierausnahmen (s.o.). ? Adr ----- Einzelne Adressen (Adr) forciert Relozieren (bei Adressen, die z.B. das h”chstwertige Byte benutzen und somit von TOSPATCH nicht erkannt werden). -Pfad ----- Dateipfad „ndern auf „ndern (Ordner ”fnen etc.). = .. schliežt Ordner. Offset $Byte,Byte, ... ---------------------- Ab die durch Kommata getrennten Bytes in das TOS schreiben und ~ aktualisieren. Statt Bytes k”nnen hier auch beliebige Ausdrcke eingesetzt werden (Variablen, #, Operationen etc.). Hinter einem Ausdruck kann auch die gewnschte Breite stehen, z.B. .B fr Byte (Default), .W fr WORD und .L fr LONG. ~ wird nach jedem Wert aktualisiert. Offset |$Byte,Byte, ... ----------------------- dito, jedoch ohne ~ zu aktualisieren. Offset FILE ----------- Ab die Datei ins TOS schreiben. Die Datei muž entweder relocatibel oder zur TOS-Basisadresse ($E00000) + assembliert sein. ~ wird aktualisiert. Offset |FILE ------------ dito, jedoch ohne Aktualisieren von ~. #Wert ----- wird in den internen Speicher (Variable) geschrieben. +FILE ----- Liest ein Unterpatchfile und wertet dies aus. Es k”nnen bis zu 8 Unterpatchfiles rekursiv aufgerufen werden. _IF Ausdruck ------------ Wenn der Ausdruck wahr ist, werden die nachfolgenden Zeilen bis _ELSE oder _ENDIF (falls kein _ELSE) ausgefhrt. Ist der Ausdruck falsch werden die nachfolgenden Zeilen bis _ELSE (falls vorhanden) oder _ENDIF bersprungen. _IFDEF Variable ---------------- Wie _IF, Bedingung ist erfllt, wenn definiert ist. _IFNDEF Variable ---------------- Wie _IF, Bedingung ist erfllt, wenn nicht definiert ist. _ELSE ----- Falls die _IF-Bedingung falsch war, wird ab hier weitergearbeitet. _ENDIF ------ Beendung einer _IF (/_ELSE) Konstruktion. _DEFINE Variable ---------------- Definiert Variable. _UNDEF Variable --------------- L”scht Variable. _SWITCH Wert ------------ Setz Vergleichswert fr _CASE. _CASE Wert: ----------- Fhrt nachfolgende Befehle aus, wenn gleich dem durch _SWITCH gesetztem Wert ist. _DEFAULT: --------- Fhrt nachfolgende Befehle aus, wenn kein _CASE ausgefhrt wurde. _ENDSWITCH ---------- Schliežt eine _SWITCH-Befehl-Konstruktion ab. _ERROR ['Text'] --------------- Abbruch des Patchvorganges und ggf. Ausgabe von: 'Fehler: ',Text,' in Zeile .xxx' _EVEN [$Wert] ------------ Falls ~ gerade ist passiert garnichts, sonst wird ~ um 1 erh”ht und falls angegeben ist, wird an die freie Stelle gepatcht. _FILL Start,Ende,X ------------------ Fllt den Bereich von bis mit der max. 32 Bytes langen Bytefolge und aktualisiert ~. Syntax von ist genau wie bei Offset. _FILL Start,Ende,|X ------------------- dito, jedoch ohne Aktualisieren von ~. .Variable = Wert ---------------- Schreiben von in die Variable .Variable. .Variable: ---------- Schreiben von ~ in die Variable .Variable. Nach dem Doppelpunkt k”nnen Patches folgen. /'Text',Zahl,$Zahl ------------------ Print-Befehl schreibt Texte ('Text'), dezimale Zahlen (Zahl) und hexadezimale Zahlen ($Zahl), die durch Komma getrennt sind, in beliebiger Reihenfolge auf den Bildschirm. Fr Zahlen sind beliebige Ausdrcke erlaubt. Spezielle Variablen: ---------------------- .BASE = Adr ----------- TOS-Basisadresse setzen, zu der das TOS reloziert ist. $FC0000 fr TOS 1.xx, $E00000 fr TOS 2.xx und 3.xx. .LENGTH = Long -------------- TOS-L„nge setzen. $30000 fr TOS 1.xx, $40000 fr TOS 2.xx und $80000 fr TOS 3.xx. .WIDTH = Long ------------- Breite des TOS setzen. Gibt an, ob das TOS 16-bittig (.16) oder 32-bittig (.32) organisiert sein soll. Ist wichtig beim Abspeichern in mehreren Dateien zum Brennen. Normal: TOS 2.06: .16, TOS 3.06: .32. M”gliche Werte: .8, .16, .32, .64 . .NATION = Nation ---------------- Nationale TOS-Version setzen. Dazu sind folgende Variablen (deren Namen der L„nderkennung entspricht) bereits vorbesetzt: .USA, .FRG, .FRA, .UK, .SPA, .ITA, .SWE, .SWF, .SWG, .TUR, .FIN, .NOR, .DEN, .SAU, .HOL, .CZE, .HUN. Z.B. .NATION = .FRG fr das deutsche TOS. .CRC ---- .CRC wird durch den Ý-Befehl von 0 auf 1 gesetzt. Diese Variable zeigt an, ob die CRC-Prfsumme nach dem Patchen berechnet und gesetzt wird. .RELOCADR --------- in .RELOCADR steht die Adresse, an die das TOS nach dem Patchen reloziert wird. Ist .RELOCADR gleich .BASE wird nicht reloziert. ~ --- ~ zeigt auf die Adresse nach letztem abgearbeitetem Patch. # Ist eine einfache Variable, die durch den Befehl # auf gesetzt wird, aber nicht bei Operationen verwendet werden kann. Fr sind folgende Werte m”glich: B fr Byte, W fr WORD und L fr LONG. muž mit angegeben werden. Priorit„ten: -------------- Als Operationen sind m”glich (in Reihenfolge ihrer Priorit„t, absteigend): ^ --- Potenzierung, z.B. 2^3. *,/ --- Multiplikation und Division, z.B. 2*3/4. +,- --- Addition und Subtraktion, z.B. 2+3-4. Wert !IN! [Zahl,Zahl, ...] -------------------------- Test, ob in der Menge [Zahl,Zahl, ...] enthalten ist, z.B. 2 !IN! [1,2,3,4]. ACHTUNG: NACH !IN! im Ausdruck stehende Operationen haben niedrigere Priorit„t. D.h. nach !IN! folgende Operationen werden so behandelt, als h„tte !IN! h”chste Priorit„t. Vor !IN! stehende Operationen werden normal behandelt. !N! oder !NOT! -------------- Bool'sches Not: !N! 1 = 0, !N! 0 = 1 !A! oder !AND! -------------- Und-Verknpfung, z.B. 7 !A! 3. !O! oder !OR! ------------- Oder-Verknpfung, z.B. 3 !O! 4. !X! oder !XOR! -------------- Exklusiv-Oder-Verknpfung, z.B. 2 !X! 3. Als Vergleiche sind m”glich (auch als Operationen zu verwenden): <> --- Ungleicheit, z.B. 3 <> 4. <= --- Kleiner oder Gleichheit, z.B. 3 <= 4. < --- Kleiner, z.B. 3 < 4. >= --- Gr”žer oder Gleichheit, z.B. 3 >= 4. > --- Gr”žer, z.B. 3 > 4. = --- Gleichheit, z.B. 3 = 4. Die Vergleichszeichen k”nnen dabei auch in Ausrufungszeichen eingeklammert werden, z.B. a<>b ist das gleiche wie a!<>!b. Die Vergleiche liefern als wahr eine 1 und als falsch eine 0 zurck und haben alle die gleiche niedrigste Priorit„t. Klammerungen sind in bis zu 8 Ebenen m”glich. Aufteilung beim Abspeichern: ------------------------------ Beim Abspeichern in mehrere Dateien wird das TOS wie folgt aufgeteilt: WIDTH = .16 ----------- 1.Byte TOS.HIx 2.Byte TOS.LOx und dann wieder von vorne WIDTH = .32 ----------- 1.Byte TOS.HHx 2.Byte TOS.HLx 3.Byte TOS.LHx 4.Byte TOS.LLx und dann wieder von vorne Das TOS kann dabei in bis zu 16 B„nke, aber max. 32 Dateien, gesplittet werden. z„hlt von 0-9 hoch und f„hrt dann mit A-P fort. Gibt es keine zwei Dateien mit gleicher Extension, wird weggelassen. Ausdrcke und Variablen: -------------------------- Ab jetzt kann man auch fr (fast) jede Zahl im Patchfile eine Ausdruck angeben. Die Breite diese Ausdruck kann an das Ende des Ausdrucks angeh„ngt werden: Ausdruck.B, Ausdruck.W oder Ausdruck.L (Default: .B) Soll eine Zahl dezimal sein muž sie eine Punkt als Pr„fix haben: .20 = dezimal 20, 20 = hexadezimal 20! Alle Variablen beginnen mit einem Punkt. Grož- und Kleinschreibung ist egal. Von dem Variablenname nach dem Punkt werden nur die ersten 16 Stellen ausgewertet, d.h. Variablennamen k”nnen zwar l„nger als 16 Zeichen sein, zum Vergleich werden jedoch nur die ersten 16 verwendet. Als Zeichen im Variablenname sind erlaubt: A bis Z , 0 bis 9 sowie _ , wobei 0 bis 9 nicht an erster Stelle des Variablennamens stehen drfen. Eine spezielle Variable ist ~. In ihr steht das Ende des letzten Patches. Vor ihr, sowie auch vor #, darf kein Punkt stehen. Diese Variable kann z.B. genutzt werden, um mehrere Patches hintereinander zu laden: z.B. 30000 PATCH1.ABS ~ PATCH2.ABS ~ PATCH3.ABS patcht ab Offset 30000 PATCH1.ABS, PATCH2.ABS und PATCH3.ABS hintereinander ins TOS. Allgemeines: -------------- TOSPATCH erzeugt als Ausgabefile immer TOS.IMG! Benennt also ein evtl. ausgelesene TOS um, falls es erhalten bleiben soll, z.B. in STE_TOS.IMG oder TT_TOS.IMG! TOSPATCH akzeptiert als Zeilenendekennung CRLF sowie LF. Zus„tzliche Programme: ------------------------ Das Programm LOADTOS.PRG geh”rt in den AUTO-Ordner. Es l„dt von dort ein TOS.IMG aus dem ROOT-Directory (der Pfad kann im Programm gepatcht werden) an die im TOS.IMG angegebene Adresse. Es kann aber auch vom Desktop gestartet werden, dann l„dt es entweder das Default-TOS.IMG oder eine Datei, falls eine in der Commandline bergeben wurde. ACHTUNG: LOADTOS l”scht den Resetpointer, d.h. Programme die auf Ausfhrung einer Routine vor dem Reset bestehen, gehen baden, z.B. Festplattencaches mit delayed write haben Datenverluste, wenn noch nicht alle Daten geschrieben wurden! Zum Konfigurieren von LOADTOS.PRG dient LT_CONF.PRG. Mit LT_CONF.PRG lassen sich die Hotkeys, die Startup-Zeit und das zu ladende TOS in LOADTOS.PRG ver„ndern. Das Programm RESETTOS.PRG dient dazu das TOS, wenn es mit RAMRESET reset- fest gemacht wurde, aus dem Speicher zu entfernen, ohne den Rechner aus- schalten zu mssen. Wenn die PMMU ausgenutzt wird z.B. durch OUTSIDE oder VRAM kann es sein, daž RESETTOS abstrzt. Ansonsten funktioniert RESETTOS mit der PMMU problemlos. >>> Wenn Ihr neue Patches einbaut, mailt sie mir bitte !!! <<< Viel Spaž wnscht Markus Heiden