Befehlsbersicht zu TOSPATCH V2.4:
----------------------------------

;                   = Kommentar (d.h. Rest der Zeile berlesen).
<*                  = TOS aus ROM lesen (Daten im Patchfile mssen stimmen!)
<FILE.EXT           = TOS aus <FILE.EXT> lesen
=TT.MM.JJJJ         = Prfen, ob es sich um das richtige TOS handelt (Datum).
>Anzahl [Relocadr]  = gepachtes TOS in <Anzahl> Datei(en) schreiben.
                      Mgliche Werte fr 'Anzahl' sind 1,2,4,6 und 8. Wenn
                      'Relocadr' vorhanden, wird nach <Relocadr> reloziert.
                      <Relocadr> wird in die Variable .RELOCADR geschrieben.
                   = CRC-Prfsumme nach dem Patchen berechnen und setzen.
                      Die Variable .CRC wird von 0 auf 1 gesetzt wenn
                      die Prfsumme berchnet werden soll.
!Long,Long, ...     = Einzelne Ausnahmen beim Relozieren.
!Long1..Long2, ...  = Bereich von Long1 bis Long2 vom Relozieren ausnehmen.  
?                   = Einzelne Adressen Relozieren.
                      (bei Adressen, die z.B. das hchstwertige Byte benutzen
                      und somit von TOSPATCH nicht erkannt werden).
-Pfad               = Dateipfad ndern auf <Pfad> ndern (Ordner fnen etc.)
                      <Pfad> = .. schliet Ordner.
Offset $Byte,Byte.. = Ab <Offset> die durch Kommata getrennten Bytes in das
                      TOS schreiben und ~ aktualisieren. Statt Bytes knnen
                      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 aktualisiert.
Offset |$Byte,Byte..= dito, jedoch ohne ~ zu aktualisieren.
Offset FILE.EXT     = Ab <Offset> die Datei <FILE.EXT> ins TOS schreiben.
                      Die Datei mu entweder relocatibel oder zur
                      TOS-Basisadresse ($E00000) + <Offset> assembliert sein.
                      ~ wird aktualisiert.
Offset |FILE.EXT    = dito, jedoch ohne Aktualisieren von ~.
#Wert               = <Wert> wird in den internen Speicher schreiben.
+FILE.EXT           = Liest ein 2. Patchfile und wertet dies aus.
                      Es knnen in dem File knnen alle hier beschriebenen
                      Befehle benutzt werden bis auf diesen selbst.
                      D.h. ein 2. Patchfile kann KEIN Patchfile mehr laden!
_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.
_ELSE               = Falls die _IF-Bedingung falsch war, wird ab hier
                      weitergearbeitet.
_ENDIF              = Beendung einer _IF (/_ELSE) Konstruktion.
_ERROR ['Text']     = Abbruch des Patchvorganges und ggf. Ausgabe von:
                      'Fehler: ',Text,' in Zeile .xxx'
_EVEN               = Falls ~ gerade ist passiert garnichts, sonst wird ein
                      Nullbyte an Adresse ~ gepatcht, so da ~ gerade wird.
.Variable = Wert    = Schreiben von <Wert> in die Variable .Variable.
.Variable:          = Schreiben von ~ in die Variable .Variable.
                      Nach dem Doppelpunkt knnen 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 = Long        = 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-Lnge 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.
                      Mgliche Werte: .8, .16, .32, .64 .

.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.
~                   = ~ zeigt auf die Adresse nach letztem abgearbeitetem
                      Patch.

#<Breite>           = Ist eine einfache Variable, die durch den Befehl
                      #<Wert> auf <Wert> gesetzt wird, aber nicht bei
                      Operationen verwendet werden kann. Fr <Breite> sind
                      folgende Werte mglich: B fr Byte, W fr WORD und
                      L fr LONG. <Breite> mu mit angegeben werden.


Aufteilung beim Abspeichern:
----------------------------

Beim Abspeichern in mehrere Dateien wird das TOS wie folgt aufgeteilt:

WIDTH=.16: 1.Byte TOS.HIx
           2.Byte TOS.LOx
           3.Byte TOS.HIx
           4.Byte TOS.LOx usw.
WIDTH=.32: 1.Byte TOS.HHx
           2.Byte TOS.HLx
           3.Byte TOS.LHx
           4.Byte TOS.LLx
           5.Byte TOS.HHx
           6.Byte TOS.HLx
           7.Byte TOS.LHx
           8.Byte TOS.LLx usw.

Das  TOS  kann  dabei  in bis zu 16 Bnke, aber max. 32 Dateien, gesplittet
werden.  x  zhlt  von  0-9 hoch und fhrt dann mit A-P fort. Gibt es keine
zwei Dateien mit gleicher Extension, wird x 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 angehngt
werden: Ausdruck.B, Ausdruck.W oder Ausdruck.L (Default: .B)

Soll eine Zahl dezimal sein mu sie eine Punkt als Prefix 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 acht
Stellen ausgewertet, d.h. .VARIABLEA ist gleich .VARIABLEB!

Als  Zeichen  im  Variablenname  sind  erlaubt: A bis Z , 0 bis 9 sowie _ ,
wobei 0 bis 9 nicht an erster Stelle des Variablennamens stehe darf.

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:
30000 PATCH1.ABS
~     PATCH2.ABS
~     PATCH3.ABS
patcht ab Offset 30000 PATCH1.ABS, PATCH2.ABS und PATCH3.ABS hintereinander
in den Speicher


Prioritten:
------------

Als Operationen sind mglich (in Reihenfolge ihrer Prioritt):
^              : Potenzierung
*,/            : Multiplikation, Division
+,-            : Addition, Subtraktion
!A! oder !AND! : Und
!O! oder !OR!  : Oder
!X! oder !XOR! : Exklusiv Oder

Als Vergleiche sind mglich (auch als Operationen zu verwenden):
<> : Ungleich
<= : Kleiner oder Gleich
<  : Kleiner
>= : Grer oder Gleich
>  : Grer
=  : Gleich

Die  Vergleichszeichen knnen 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 die niedrigste Prioritt.

Klammerungen sind in bis zu 8 Ebenen mglich.


Allgemeines:
------------

Die maximale Gre des Hauptpatchfiles betrgt 64kByte.
Die maximale Gre des zweiten Patchfiles betrgt jedoch 'nur' 32kByte!

TOSPATCH erzeugt als Ausgabefile immer TOS.IMG!
Benennt  also das ausgelesene Original-TOS, falls es erhalten bleiben soll,
um, z.B. in STE_TOS.IMG oder TT_TOS.IMG! 


Zustzliche Programme:
----------------------

Das  Programm  AUTO_206.PRG/AUTO_306.PRG gehrt in den AUTO-Ordner. Es ldt
von  dort  ein  TOS.IMG  aus  dem ROOT-Directory (der Pfad kann im Programm
gepatcht werden) an die im TOS.IMG angegebene Adresse.
Zum  Konfigurieren  von  AUTO_206.PRG/AUTO_306.PRG  dient AUTOCONF.PRG. Mit
AUTOCONF.PRG  lassen  sich die Hotkeys, die Startup-Zeit und das zu ladende
TOS in AUTO_206.PRG/AUTO_306.PRG verndern.

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   Ihr   neue  Patches  einbaut,  mailt  sie  mir  bitte!!!  <<<

   Viel Spa wnscht
     Markus Heiden
