-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBEFEHLE.TXT
432 lines (316 loc) · 11.1 KB
/
BEFEHLE.TXT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
Übersicht zu TOSPATCH V2.9.8:
===============================
Kommandozeile:
================
TOSPATCH [-<switches>] [<batch.fil>]
Switches:
-----------
a:
---
Alle gepatchten Adressen ausgeben.
l:
---
Alle Ausgaben ins Logfile TOS.LOG schreiben.
m:
---
Alle Nachfragen mit Ja beantworten.
q:
---
Bildschirmausgaben werden unterdrückt.
Befehlsübersicht:
===================
;
---
Kommentar (d.h. Rest der Zeile wird überlesen).
<*
---
TOS aus ROM lesen (TOS-Daten im Patchfile müssen stimmen!)
<FILE.EXT
---------
TOS aus <FILE.EXT> lesen
= TT.MM.JJJJ [,NATION]
----------------------
Prüfen, ob es sich um das richtige TOS handelt (Datum und optional
Nation).
>Anzahl [Relocadr] [,Machine]
-----------------------------
gepachtes TOS in <Anzahl> Datei(en) schreiben. Mögliche Werte für 'Anzahl'
sind 1,2,4,6 und 8. Wenn <Relocadr> vorhanden ist, wird nach <Relocadr>
reloziert und <Relocadr> wird in die Variable .RELOCADR geschrieben. Sonst
wird nur .BASE in .RELOCADR geschrieben. <Machine> gibt die Plattform an
für die das TOS generiert werden soll und benennt die Ausgabefiles
entsprechend.
Z.Z. implementiert Plattformen:
- PAK3 (bei <Anzahl> = 4: TOS.U10, TOS.U11, TOS.U12, TOS.U13)
§
---
CRC-Prüfsumme 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 <Pfad> ändern (Ordner öfnen etc.). <Pfad> = .. schließt
Ordner.
Offset $Byte,Byte, ...
----------------------
Ab <Offset> die durch Kommata getrennten Bytes in das TOS schreiben und ~
aktualisieren. Statt Bytes können hier auch beliebige Ausdrücke eingesetzt
werden (Variablen, #, Operationen etc.). Hinter einem Ausdruck kann auch
die gewünschte Breite stehen, z.B. .B für Byte (Default), .W für WORD und
.L für LONG. ~ wird nach jedem Wert aktualisiert.
Offset |$Byte,Byte, ...
-----------------------
dito, jedoch ohne ~ zu aktualisieren.
Offset FILE
-----------
Ab <Offset> die Datei <FILE> ins TOS schreiben. Die Datei muß entweder
relocatibel oder zur TOS-Basisadresse ($E00000) + <Offset> assembliert
sein. ~ wird aktualisiert.
Offset |FILE
------------
dito, jedoch ohne Aktualisieren von ~.
#Wert
-----
<Wert> wird in den internen Speicher (Variable) geschrieben.
+FILE
-----
Liest ein Unterpatchfile <FILE> 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) ausgeführt. Ist der Ausdruck falsch werden die
nachfolgenden Zeilen bis _ELSE (falls vorhanden) oder _ENDIF übersprungen.
_IFDEF Variable
----------------
Wie _IF, Bedingung ist erfüllt, wenn <Variable> definiert ist.
_IFNDEF Variable
----------------
Wie _IF, Bedingung ist erfüllt, wenn <Variable> 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 <Wert> für _CASE.
_CASE Wert1[,Wert2]:
--------------------
Führt nachfolgende Befehle aus, wenn <Wert1> oder einer der folgenden Werte
<Wert2> gleich dem durch _SWITCH gesetztem Wert ist.
_DEFAULT:
---------
Führt nachfolgende Befehle aus, wenn kein _CASE ausgeführt 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
<Wert> angegeben ist, wird <Wert> an die freie Stelle gepatcht.
_FILL Start,Ende,X
------------------
Füllt den Bereich von <Start> bis <Ende> mit der max. 32 Bytes langen
Bytefolge <X> und aktualisiert ~. Syntax von <X> ist genau wie bei Offset.
_FILL Start,Ende,|X
-------------------
dito, jedoch ohne Aktualisieren von ~.
.Variable = Wert
----------------
Schreiben von <Wert> 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. Für Zahlen sind beliebige Ausdrücke
erlaubt.
Spezielle Variablen:
======================
.BASE = Adr
-----------
TOS-Basisadresse setzen, zu der das TOS reloziert ist.
$FC0000 für TOS 1.xx, $E00000 für TOS 2.xx und 3.xx.
.LENGTH = Long
--------------
TOS-Länge setzen. $30000 für TOS 1.xx, $40000 für TOS 2.xx und
$80000 für 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 für das deutsche TOS.
.CRC
----
.CRC wird durch den §-Befehl von 0 auf 1 gesetzt. Diese Variable zeigt an,
ob die CRC-Prüfsumme 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.
#<Breite>
Ist eine einfache Variable, die durch den Befehl #<Wert> auf <Wert>
gesetzt wird, aber nicht bei Operationen verwendet werden kann. Für
<Breite> sind folgende Werte möglich: B für Byte, W für WORD und
L für LONG. <Breite> 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 <Wert> 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-Verknüpfung, z.B. 7 !A! 3.
!O! oder !OR!
-------------
Oder-Verknüpfung, z.B. 3 !O! 4.
!X! oder !XOR!
--------------
Exklusiv-Oder-Verknüpfung, 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 zurück 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. <x> zählt von 0-9 hoch und fährt dann mit A-P fort. Gibt es keine
zwei Dateien mit gleicher Extension, wird <x> weggelassen.
Ausdrücke und Variablen:
==========================
Ab jetzt kann man auch für (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 dürfen.
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.
TABs werden wie Spaces behandelt.
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
beliege TOS-Datei, falls eine in der Commandline übergeben wurde.
ACHTUNG: LOADTOS löscht den Resetpointer, d.h. Programme die auf Ausführung
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 müssen. Wenn die PMMU ausgenutzt wird z.B. durch OUTSIDE oder
VRAM kann es sein, daß RESETTOS abstürzt. Ansonsten funktioniert RESETTOS
mit der PMMU problemlos.
>>> Wenn Ihr neue Patches einbaut, mailt sie mir bitte !!! <<<
>>> email: [email protected] <<<
Viel Spaß wünscht
Markus Heiden