@DATABASE "Dokumentation für GED-Hexedit"
@NODE MAIN "Dokumentation für GED-Hexedit"
@{B}
           GED-Hexedit Version 1.00 von Wolfgang Morgeneier
           
@{UB}

  @{" Einleitung " Link 1.}

  @{" Installation " Link 2.}

  @{" Anwendung " Link 3.}

  @{" Funktionsbeschreibung " Link 4.}

  @{" Bekannte Fehler " Link 5.}

  @{" Versionsgeschichte " link 6.}

  @{" Rechtliches " Link 7.}

  @{" Author " Link 8.}
@ENDNODE

@NODE 1. "Einleitung"

@{B}    Einleitung:
@{UB}
Für den Amiga gibt es nur sehr wenig Hexeditoren.  Eines Tages fand ich dann
im Aminet ein Programm namens <BinHex>.  Dies brachte mich auf die Idee,
ein ähnliches Programm und eine Umgebung für hexadezimales Editieren für den
Editor GOLDED von Dietmar Eilert zu schreiben.  Dies ist das vorläufige
Endergebnis hiervon.

@{b}Das Programm kann Fehler enthalten!@{ub}
@{b}Es wird keine Haftung für Fehlfunktionen und Datenverluste übernommen!@{ub}

@{b}Um dies zu umgehen, ist es sinnvoll, nur mit Kopien der zu bearbeitenden Dateien
zu arbeiten!@{ub}

Wenn jemand Interesse daran hat, daß ich dieses Programm weiterentwickle,
sollte er mir eine EMail mit Fehlerbeschreibungen oder Anregungen schreiben.

@ENDNODE

@NODE 2. "Installation"

@{B}    Installation des Programms:
@{UB}
Das Programm wird mit Hilfe des Amiga-Installers installiert.
Hierzu muß das Icon <Install_Deutsch> doppelt angeklickt werden.
Danach läuft die Installation automatisch ab.

Folgendes ist für das Programm erforderlich:
- Golded 4.6.0+ von Dietmar Eilert
- Regedit (für die Installation)
- der Amiga-Installer im Suchpfad (für die Installation)
- delete, copy und rename im Verzeichnis c:
- ARexx
- das Verzeichnis t: muß existieren
  da oft Dateien in t: zwischengespeichert werden, sollte sich t: im RAM befinden
  (außer bei Speicherplatzmangel)
- ein schneller Amiga Computer (sonst ist die Bearbeitung einer Datei recht langsam)
- RAM-Speicher (es wird etwa das 10-fache der Größe der zu bearbeitenden Datei als
  Speicherplatz benötigt)

@ENDNODE

@NODE 3. "Anwendung"

@{B}    Anwendung und Funktion des Programms:
@{UB}

Das Programm installiert ein neues Icon am Ende der Toolbar mit der Aufschrift
<HEX>.  Durch Anklicken dieses Icons kann man in einem Dateirequester eine
Datei zum hexadezimalen Editieren auswählen.
Die zu editierende Datei wird daraufhin in den Speicher geladen, umformatiert und
angezeigt.

Die Anzeige ist in 3 Teile aufgeteilt:
- links die Adresse im Hex-Format
- in der Mitte der Dateiinhalt im Hex-Format, pro Zeile 16 Bytes, an Langwortgrenzen
  jeweils ein Leerzeichen
- rechts der Dateiinhalt im ASCII-Format.  Wenn hier ein ASCII-Zeichen nicht angezeigt
  werden kann, erscheint hierfür das Zeichen <·>.



Beispiel:

000014B0  1F223344 44552334 55667772 22332222  ··3DDU#4Ufwr·3··
000014C0  0A112345 67890123 45677777 88890234  ··#Eg··#Egww···4



Die Tastatur wurde entsprechend umdefiniert, damit nur an der jeweiligen Stelle
zulässige Zeichen eingegeben werden können.

Der Adressbereich und alle Leerstellen können nicht geändert werden.
Im Hexbereich sind alle Zifferntasten, die Buchstabentasten a ... f und
die Tasten zur Cursorbewegung erlaubt.  Die Buchstaben a ... f können groß
oder klein eingegeben werden.  Sie werden immer in Großschreibweise angezeigt.
Im ASCII-Bereich sind zusätzlich alle Buchstaben und die meisten Sonderzeichen
erlaubt.

Eine Sonderstellung nimmt die Tabulatortaste ein.
Mit ihr kann man zwischen HEX- und ASCII-Bereich hin und herspringen.

Die Maus dient zum Setzen des Cursors an eine beliebige Stelle.


  @{" Beschreibung des Menüs " link Menu}


  @{" Beschreibung der Toolbar " link Toolbar}


@ENDNODE

@node TOOLBAR "Toolbar"


   @{b}Beschreibung der Toolbar@{ub}


Die Toolbar besteht aus 6 Buttons.
Diese haben folgende Bedeutung (von links nach rechts):

- Neu: neues Fenster im Standardmodus öffnen

- Öffnen: vorhandene Datei im HEX-Modus öffnen

- Speichern: aktuelle Datei speichern

- Undo: letzte Aktion rückgängig machen

- Redo: letztes Undo rückgängig machen

- Hilfe: Hilfe zum Programm GED_Hexedit aufrufen


  @{" Zurück " link 3.}

@endnode

@node MENU "Menü"


   @{b}Beschreibung des Menüs@{ub}


  @{" Datei " link Datei}

  @{" Fenster " link Fenster}

  @{" Bearbeiten " link Bearbeiten}

  @{" Suchen " link Suchen}

  @{" Optionen " link Optionen}

  @{" Hilfe " link Hilfe}



  @{" Zurück " link 3.}

@endnode
@node DATEI "Datei"

   @{b}Menü Datei@{ub}


- neuer Text:
  öffnet einen neuen Text ohne Namen im normalen Modus.

- öffnen neu normal:
  öffnet eine vorhandene Datei im normalen Modus.  Die Datei kann mittels
  Dateirequester ausgewählt werden.

- öffnen neu hex:
  öffnet eine vorhandene Datei im Hex-Modus.  Die Datei kann mittels
  Dateirequester ausgewählt werden.

- speichern:
  speichert die Datei mit vorhandenem Namen.

- speichern als:
  ruft einen Dateirequester auf, mit dem der Name der Datei geändert werden kann
  und speichert diese anschließend.

- Dateieigenschaften:
  hiermit können der Dateiname, der Dateikommentar, die Schutzbits und der Dateityp
  der Datei geändert werden.  Der Dateityp von Dateien, die von GED_Hexedit
  bearbeitet werden, ist immer <HEX>.
  Hinweis: Falls durch ein unvorhersehbares Ereignis oder durch einen Programmfehler
  der Fensteraufbau des Programms zerstört wird, kann man durch Löschen des Dateityps,
  anschließendem normalem Ändern der Datei und erneutem Setzen des Dateityps <HEX>
  die Datei wieder verwendbar machen.

- schließen:
  hiermit wird die aktuelle Datei geschlossen.  Wenn diese geändert wurde, erscheint
  vorher noch ein Sicherheitsrequester.

- Ende:
  Hiermit werden alle Fenster geschlossen und das Programm beendet.
  Wenn die aktuelle Datei geändert wurde, erscheint vorher noch ein Sicherheitsrequester.
  Wenn zusätzliche Fenster geöffnet sind, erscheint unabhängig davon, ob in diesen
  Dateien Änderungen vorgenommen wurden, ein Sicherheitsrequester.

- offene Dateien:
  hier werden die einzelnen offenen Dateien angezeigt und können durch Anwählen
  direkt angesprungen werden.

  @{" Zurück " link Menu}


@endnode
@node FENSTER "Fenster"

   @{b}Menü Fenster@{ub}


- Fenster:
  dieser Menüpunkt dient mit seinen Unterpunkten zum Ändern der Größe bzw.
  Erscheinungform einzelner Fenster (siehe Anleitung für GoldED)

- Fenster nächstes:
  das nächste offene Fenster wird zum aktuellen Textfenster

- Fenster vorheriges:
  das vorherige offene Fenster wird zum aktuellen Textfenster

- verborgene Texte:
  dieser Menüpunkt dient mit seinen Unterpunkten zum Ändern der Größe bzw.
  Erscheinungform einzelner Fenster (siehe Anleitung für GoldED)


  @{" Zurück " link Menu}

@endnode
@node BEARBEITEN "Bearbeiten"

   @{b}Menü Bearbeiten@{ub}


- Undo:
  macht die letzte Aktion rückgängig

- Redo:
  macht die letzte Undo-Aktion rückgängig

- Position merken:
  es können bis zu 5 Positionen gemerkt werden, die mit dem nächsten Menüpunkt
  angesprungen werden können

- Position abrufen:
  springt eine von maximal 5 gemerkten Textpositionen an

- gehezu Byte:
  hiermit kann man zu einem bestimmten Byte im Hex-Bereich springen.  Im Requester
  ist hierzu die Adresse einzugeben.
  Hierzu gibt es 2 Möglichkeiten:
  - mit dem Zeichen $ am Anfang kann man die Adresse im Hexadezimalformat eingeben
  - man kann die Adresse im Dezimalformat eingeben

- Byte einfügen:
  hiermit wird vor dem aktuellen Byte ein neues Byte eingefügt.  Dazu muß sich
  der Cursor im Hex-Bereich befinden.
  ACHTUNG: wenn man dies bei Programmen anwendet, so sind diese hinterher im
  allgemeinen nicht mehr lauffähig.  Deshalb erscheint vor der Ausführung dieses
  Menüpunktes ein Sicherheitsrequester.

- Byte löschen:
  hiermit wird das aktuelle Byte gelöscht.  Dazu muß sich der Cursor im
  Hex-Bereich befinden.
  ACHTUNG: wenn man dies bei Programmen anwendet, so sind diese hinterher im
  allgemeinen nicht mehr lauffähig.  Deshalb erscheint vor der Ausführung dieses
  Menüpunktes ein Sicherheitsrequester.


  @{" Zurück " link Menu}

@endnode
@node SUCHEN "Suchen"

   @{b}Menü Suchen@{ub}


- Datei suchen:
  hiermit kann man eine Datei suchen (siehe Anleitung für GoldED)

- Hexbytes suchen:
  hiermit kann eine Folge von Hexbytes gesucht werden.  Im erscheinenden Requester
  ist der Suchstring einzugeben.  Hierbei sind alle Ziffern und die Buchstaben
  a ... f in Klein- bzw. Großschreibung erlaubt.  Bei eingeschalteter Wildcardsuche
  kann auch das Fragezeichen eingegeben werden.  Es können maximal 16 Bytes
  (d. h. 32 Zeichen) jeweils byteweise eingegeben werden.  Nach Bestätigen durch
  <OK> wird der Hex-Bereich nach unten nach der eingegebenen Bytefolge durchsucht.
  Wird eine Bytefolge gefunden, so wird der Cursor auf den Beginn dieser gesetzt.
  Der eingegebene Suchstring wird gemerkt und erscheint bei der nächsten Suche als
  Vorgabewert.

- Hexbytes weitersuchen:
  hiermit wird ebenfalls eine Folge von Hexbytes gesucht.  Diese kann allerdings
  nicht eingegeben werden, sondern es wird die zuletzt eingegebene Bytefolge als
  Suchstring verwendet.  Dies funktioniert nur richtig, wenn zuvor auch Hexbytes
  gesucht wurden.

- ASCII suchen:
  hiermit kann eine Folge von ASCII-Zeichen gesucht werden.  Im erscheinenden Requester
  ist der Suchstring einzugeben.  Hierbei sind alle Ziffern, alle Buchstaben in
  Klein- bzw. Großschreibung, Leerzeichen und die meisten Sonderzeichen erlaubt.
  Bei eingeschalteter Wildcardsuche hat das Fragezeichen die Sonderfunktion des
  Wildcards.  Es können maximal 16 Zeichen eingegeben werden.  Nach Bestätigen durch
  <OK> wird der ASCII-Bereich nach unten nach der eingegebenen Zeichenfolge durchsucht.
  Wird eine Zeichenfolge gefunden, so wird der Cursor auf den Beginn dieser gesetzt.
  Der eingegebene Suchstring wird gemerkt und erscheint bei der nächsten Suche als
  Vorgabewert.

- ASCII weitersuchen:
  hiermit wird ebenfalls eine Folge von ASCII-Zeichen gesucht.  Diese kann allerdings
  nicht eingegeben werden, sondern es wird die zuletzt eingegebene Zeichenfolge als
  Suchstring verwendet.  Dies funktioniert nur richtig, wenn zuvor auch ASCII gesucht
  wurde.

- Hexbytes ersetzen:
  Dies ist eine Erweiterung der Funktion Hexbytes suchen.  Wenn eine Hexbyte-Folge
  gefunden wurde, kann eine Ersatz-Hexbyte-Folge eingegeben werden.  Hiermit wird
  dann die ursprüngliche Bytefolge im Text ersetzt.  Die Ersatz-Hexbyte-Folge muß
  genauso lang sein wie die gesuchte Hexbyte-Folge.  Das Fragezeichen kann nicht
  als Wildcard verwendet werden.  Die eingegebenen Such- und Ersetzenzeichenfolgen
  werden für die nächste Aktion gemerkt und als Vorgabe eingesetzt.

- ASCII ersetzen:
  Dies ist eine Erweiterung der Funktion ASCII suchen.  Wenn eine Zeichenfolge
  gefunden wurde, kann eine Ersatzzeichenfolge eingegeben werden.  Hiermit wird
  dann die ursprüngliche Zeichenfolge im Text ersetzt.  Die Ersatzzeichenfolge muß
  genauso lang sein wie die gesuchte Zeichenfolge.  Das Fragezeichen kann nicht
  als Wildcard verwendet werden.  Die eingegebenen Such- und Ersetzenzeichenfolgen
  werden für die nächste Aktion gemerkt und als Vorgabe eingesetzt.

- Groß/klein beachten:
  wenn dieser Menüpunkt angewählt ist, wird beim Suchen im ASCII-Bereich Groß-
  und Kleinschreibung unterschieden.

- mit Wildcard:
  wenn dieser Menüpunkt angewählt ist, können beim Suchen Wildcards verwendet werden,
  d. h. das Zeichen <?> kann anstelle eines beliebigen Zeichens eingegeben werden.
  Bei der HEX-Suche müssen <?>-Zeichen immer für ein gesamtes Byte eingegeben werden,
  d. h. es müssen immer 2 Fragezeichen eingegeben werden.
  Weiterhin darf das erste Zeichen bzw. Byte kein Wildcard sein.


  @{" Zurück " link Menu}

@endnode
@node OPTIONEN "Optionen"

   @{b}Menü Optionen@{ub}


- Toolbar:
  ein- bzw. ausschalten der Toolbar

- Optionen lokal:
  lokale Optionen einstellen (siehe Anleitung für GoldED)

- Optionen global:
  globale Optionen einstellen (siehe Anleitung für GoldED)

- Einstellungen speichern:
  aktuelle Einstellungen speichern (siehe Anleitung für GoldED)


  @{" Zurück " link Menu}

@endnode
@node HILFE "Hilfe"

   @{b}Menü Hilfe@{ub}


- Statistik:
  ruft einen Requester mit Angaben zur Textstatistik auf (siehe Anleitung für GoldED)

- GED_Hexedit:
  ruft diese Hilfedatei auf

- über GoldED 4:
  ruft einen Requester mit Angaben zum Programm GoldED auf


  @{" Zurück " link Menu}

@endnode
@node 4. "Funktionsbeschreibung"

   @{b}Funktionsbeschreibung des Programm@{ub}s

Dieser Teil befaßt sich mit den Internas des Programms.  Das Lesen dieses Teils
ist für die Bedienung des Programms nicht notwendig.

Das Programm basiert auf dem Editor GoldED von Dietmar Eilert.  Dieser wird mit
Hilfe einer neuen Tastatur-, Maus-, Menü-, Toolbar- und Syntaxbelegung dazu in
die Lage versetzt, mit der Hexadezimaldarstellung umgehen zu können.
Außerdem werden bei den meisten Aktionen ARexx-Programme aufgerufen.
Diese werden bei der Installation des Programms in das Verzeichnis GOLDED:tools/hex
kopiert.

Beim Laden einer Datei wird ein ARexx-Programm namens <OpenAsHex.ged> aufgerufen.
Dieses Programm erstellt zuerst eine Sicherungskopie des Originals
(Original + Endung .bak.hex).  Dann wird das Programm <hexbin> aufgerufen, welches
aus dem Original eine temporäre hexcodierte Datei namens <t:gedhex> erzeugt.  Diese
wird dann vom Editor eingeladen.  Jetzt werden die Titelanzeige im Editor geändert,
so daß der richtige Dateiname angezeigt wird.  Anschließend wird die temporäre Datei
wieder gelöscht.

Beim Speichern mit dem ARexx-Programm <SaveAsBin.ged> wird die Datei
wieder in die temporäre hexcodierte Datei gespeichert.  Anschließend wird das
Programm <hexbin> aufgerufen, welches wieder die Originaldatei im Verzeichnis t:
erzeugt.  Am Schluß wird diese Datei noch an ihren ursprünglichen Ort kopiert.
Abschließend werden dann noch die temporären Dateien gelöscht.

Das Programm <hexbin> prüft vor der Umwandlung das Format der HexDatei.  Geprüft
wird, ob alle Zeilen mindestens 48 Zeichen lang sind und sich an den entsprechenden
Stellen Leerzeichen befinden.  Wenn die Prüfung positiv ausfällt, werden die Daten
umgewandelt.  Dabei wird ausschließlich der Hexbereich der Datei berücksichtigt.

Beim Suchen mit den Programmen <searchascii.ged> und <searchbytes.ged> wird zuerst
das erste Byte bzw. Zeichen gesucht (bis eine Stelle im richtigen Bereich hex/ASCII
der Datei gefunden wird).  Dann werden die anschließenden Zeichen bzw. Bytes im Text
mit dem Rest des Suchstrings verglichen.  Stimmen diese überein, so ist die Suche
erfolgreich beendet.  Stimmen diese nicht überein, so wird wieder nach dem ersten
Byte bzw. Zeichen gesucht.  Aus diesem Verfahren ergibt sich, daß die Suche umso
langsamer ist, je öfter das erste Byte bzw. Zeichen in der Datei vorkommt.

Beim Einfügen eines Bytes mit dem Programm <insertbyte.ged> wird die aktuelle Zeile
aufgetrennt und ein Byte eingefügt.  Das jeweils letzte Byte einer Zeile wird am
Anfang der nächsten Zeile eingesetzt, usw.  Daraus ergibt sich, daß das Einfügen
umso länger dauert, je mehr Zeilen nach dem eingefügten Byte noch in der Datei zu
bearbeiten sind.

Beim Löschen eines Bytes mit dem Programm <deletebyte.ged> wird von der letzten Zeile
das erste Byte abgeschnitten.  Dieses wird an das Ende der vorherigen Zeile gesetzt
und von dieser wiederum das erste Byte entfernt.  Dies wird bis zur aktuellen Zeile
fortgesetzt.  Daraus ergibt sich, daß das Löschen umso länger dauert, je mehr Zeilen
nach dem zu löschenden Byte noch in der Datei zu bearbeiten sind.

Mit dem Programm <hexchar.ged> werden alle eingegebenen Zeichen verarbeitet, die nicht
gleich vom Editor GoldED verschluckt werden.  Dieses wird aus Geschwindigkeitsgründen
beim Start des Hexprogramms nach t: kopiert.

@endnode


@NODE 5. "Bekannte Fehler"

@{B}    Bekannte Fehler und Unzulänglichkeiten:
@{UB}

Wenn das Close-Gadget betätigt wird, wird der aktuelle Text ohne Warnung
geschlossen, auch wenn er verändert wurde.

Da das Programm mit ARexx-Makros arbeitet, ist die Ausführungsgeschwindigkeit,
besonders auf nicht beschleunigten Amigas, recht niedrig.
Dies macht sich vor allem beim suchen, ersetzen, einfügen und löschen von Bytes
bemerkbar.


@ENDNODE

@node 6. "Versionsgeschichte"

@{B}    Versionsgeschichte:
@{UB}

Version 0.8:  erste Version, Upload ins Aminet

Version 0.9: zweite Version, Upload ins Aminet
Folgendes wurde geändert:
- Programm kann nun mit Leerzeichen im Dateinamen umgehen
- zur besseren Übersicht wurden im Hex-Bereich zwischen Langwortgrenzen
  Leerzeichen eingefügt
- suchen im Hexbereich und im ASCII-Bereich wurde hinzugefügt
- die ARexx-Skripts wurden mit dem Programm Rexxopt von Ulrich Sibiller gepackt
- kleinere Veränderungen
Vielen Dank an Mario Kemper für seine Bugreports!

Version 1.0: dritte Version, Upload ins Aminet
Folgendes wurde geändert:
- Das Makro hexchar.ged zur Verarbeitung der Zeicheneingaben wird nach t:
  kopiert, dadurch schnellerer Zugriff (t: normalerweise im RAM)
- Fehler im Makro hexchar.ged bei der Darstellung im ASCII-Bereich behoben
- Menü abgeändert und erweitert
- alle Tasten belegt bzw. alle unerwünschten Tasten (hoffentlich) gesperrt
- die Hex-Datei ist jetzt schreibgeschützt. Dadurch wird beim Betätigen
  des Close-Gadgets nicht mehr zum Speichern aufgefordert (Tip von Dietmar Eilert)
- Syntax-Parser hinzugefügt (von Dietmar Eilert erhalten)
  (vielen Dank für die Unterstützung an Dietmar Eilert)
- neue Funktionen hinzugefügt (speichern als, gehezu Byte, suchen mit Wildcard,
  ersetzen, Byte einfügen und Byte löschen)
- Anleitung erweitert

Momentan habe ich keine Pläne für eine neue Version.
Dies kann sich ändern, wenn
- ich einen größeren Fehler im Programm finde
- ich (realisierbare) Verbesserungsvorschläge oder Bugreports erhalte
- eine neue Version von GOLDED erscheint

@endnode

@NODE 7. "Rechtliches"

@{B}    Rechtliches:
@{UB}
Das Programm ist Freeware.  Es darf frei kopiert werden, solange alle
Dateien unverändert weitergegeben werden.  Die Verbreitung des Programms auf
Shareware-CDs und Shareware-Disketten ist erlaubt.  Eine weitergehendere
kommerzielle Verwertung des Programms ist ohne meine Einwilligung jedoch nicht
erlaubt.

Sie benutzen das Programm auf eigenes Risiko.  Ich übernehme als Author
keinerlei Haftung für Schäden, die durch die Verwendung des Programms
entstehen.  Denken Sie daran, daß Programmfehler durchaus möglich sind!

Für eventuelle Verbessungsvorschläge und Fehlerbeschreibungen bin ich
jedoch dankbar.
@ENDNODE

@NODE 8. "Author"

@{B}    Name und Anschrift des Authors:
@{UB}
   Wolfgang Morgeneier
   Kurfürstenstr. 22
   D-92637 Weiden
   Deutschland

   EMail: Wolfgang.Morgeneier@t-online.de


@ENDNODE

