************************************************************
  Dokumentation zum Programm HexEdit V 2.0  Bernd Preusing
************************************************************

Auf vielfachen Wunsch (Fridtjof!) gibt es nun die ultimative Version
2.0 dieses Programms.

Mit Hilfe dieses Programmes kann man ein File in Hexadezimal- und
ASCII-Modus editieren.
Nun gibt es bereits in der PD ein Programm namens NewZap, das das
gleiche leistet, aber NewZap und allen diesen Programmen fehlt, ist
die Möglichkeit, Bytes einzufügen oder zu löschen.
Dieses bietet nun HexEdit.

Da das Programm hauptsächlich für den Eigenbedarf entwickelt wurde,
habe ich auf großen Bedienkomfort verzichtet. So ist eine Mausbedie-
nung vielleicht recht nützlich, aber eben nicht implementiert.

Das Programm kann sowohl von der Workbench wir auch vom CLI aus
gestartet werden.
Es sollte sowohl auf PAL- als auch auf NTSC-Amigas laufen, NTSC
kann ich aber leider nicht testen.
Es benötigt sehr viel Stack; die Version auf dieser Disk ist ohne
Stackprüfung kompiliert, das .info-File ist korrekt!

Im PAL-Modus werden jeweils 24 Zeilen (also 384 Bytes) dargestellt,
im NTSC-Modus 16 Zeilen (256 Bytes).
In der zweiten Zeile wird der jeweilige Status angezeigt, sowie die
Position im File und die Gesamtlänge. Nachdem ein File verändert wurde,
erscheint die Meldung 'Geändert!'. Nur in diesem Fall  wird auch
abgespeichert.
Unterhalb des Editorbereichs sind die Funktionstasten erklärt.


Editieren:
~~~~~~~~~~
Mit Hilfe der Cursortasten bewegt man sich an die gewünschte Stelle.
Dort kann man je nach eingeschalteten Modus die Daten verändern.
Im Hex-Modus werden nur Ziffern und 'a'..'f' angenommen, im Asc-Modus
nur druckbare Zeichen.
Wenn man im Hex-Modus das erste Halbbyte eigegeben hat, MUSS erst das
Byte vervollständigt werden!

Im Einfüge-Modus wird mit der Del-Taste das Byte auf der Cursorposition
gelöscht, ansonsten wird jedes Byte eingefügt. In diesem Modus kann
man auch HINTER das Fileende gelangen.


Die Bedienung des Editors geschieht mit folgenden Tasten:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Cursorpfeile: Bewegung um eine Zeile oder Spalte in die Richtung
Shift-Links : an den Anfang der Zeile
Shift-Rechts: ans Ende der Zeile
Shift-Hoch  : ganz an den Anfang des Files
Shift-Runter: ganz ans Ende
Alt-Hoch    : eine Anzeigeseite höher
Alt-Runter  : eine Seite tiefer
Esc         : Ende des Programms
F1          : Umschaltung Hex-/ASCII-Modus
F2          : Umschaltung Einfügen/Überschreiben
F3	    : Umschaltung Speichern mit/ohne Backup
F4          : Umschaltung Groß-/Klein-Unterscheidung beim Suchen
F5	    : Umschaltung der jeweils zusammengefassten Bytes
		Hier gibt es Einzelbytes, Worte und Langworte.
		Dies wird zyklisch durchgeschaltet.
F6	    : Suchen ab Cursorposition.
		Hierbei wird die zu suchende Bytefolge erfagt.
F7	    : Weitersuchen mit der alten Bytefolge.
F8	    : Neues File Einlesen.
F9          : File speichern mit FileRequester (OHNE BACKUP!)
F10         : File speichern und Programmende


Laden/Speichern:
~~~~~~~~~~~~~~~~
Wird das Programm mit einem Parameter gestartet, wird das File sofort
geladen, anderfalls erscheint der Lade-Requester und man kann das
gewünschte File auswählen.
Wenn man im Laderequester Cancel anklickt, wird das Programm sofort
beendet!

Nach dem Laden ist der Puffer um 6000 Bytes größer als das File, d.h.
es können maximal 6000 Bytes eingefügt werden. Falls man mehr braucht,
kann man es abspeichern und wieder neu laden, dann hat man wieder
6000 Bytes frei usw.
Neue Files können hiermit nicht erzeugt werden, sie können aber die
Länge 0 haben und dann beliebig vergrößert werden. Neue Files kann man
z.B. mittel 'Copy * filename' erzeugen, die Eingabe wird dann mit
Ctrl-\ abgebrochen. Dies geht aber nicht mit Arp-Copy, weil der * dort
eine andere Bedeutung hat.

Es ist nicht möglich, ein neues File einzuladen oder das Programm zu ver-
lassen, wenn das alte File verändert wurde. Hier erscheint immer ein
Requester, der zunächst abfragt, ob das File nicht vorher noch gespei-
chert werden soll.
Bei Lese- oder Schreibfehlern hat man immer die Möglichkeit, mittels des
Filerequesters einen anderen Namen zu wählen.

Beim Abspeichern (falls Änderungen vorgenommen wurden) wird, falls
Backup eingeschaltet ist, das alte File in 'Name.bak' umbenannt und
die geänderte Version unter dem alten Namen abgespeichert.


Suchen:
~~~~~~~
Im Asc-Modus gibt man einen String ein, im Hex-Modus einzelne Bytes.
Diese müssen nicht durch Leerzeichen getrennt sein. '3f3 45' ergibt
3F 03 45, aber '3 f345'ergibt 03 F3 45.
Bei ungültigen Hex-Zeichen wird die Anfrage wiederholt.
Im Asc-Modus wird abhängig vom Groß/Klein-Schalter gesucht, im Hex-
Modus nicht. Groß bedeutet, daß keine Unterscheidung gemacht wird,
also 'a'='A' ist (Vorsicht bei Umlauten! Hier ist CAP('ä')='ä'!).
Bei Klein müssen die Werte exakt stimmen.

Die Eingabezeile für den Suchstring kann editiert werden, Esc bedeutet
hier, daß die ganze Zeile gelöscht wird. Wenn man bei leerer Eingabe
RETURN drückt, wird das Suchen unterbunden.

Falls die Bytefolge gefunden wurde ertönt ein Doppelpieps und der Cursor
steht HINTER der Folge, ansonsten ertönt ein einfacher Piepser.


Sonstiges:
~~~~~~~~~~
Für den FileRequester muß die Arp.library im libs: Ordner vorhanden sein.
Falls dies nicht der Fall ist, sollte man es schleunigst dorthin kopieren!

Hinweis für Programmierer: ich mußte eine eigene Requesterprozedur
schreiben, weil der Arts-Requester leider immer auf dem Workbench-
Screen landete. Auch die Dos-Requester kommen nun auf meinen eigenen
Screen.

Das Modul TextWindow ist ein Update von Amok #12. Korrekturen sind
in TextWindow.mod angezeigt.
