*************************************************************************
*************************************************************************
***                                                                   ***
***            FILESELECTORBOX  (C) by Martin Patzel                  ***
***                                                                   ***
***               --- alle Rechte vorbehalten ---                     ***
***                                                                   ***
***                        Version 4/89                               ***
***                                                                   ***
***                                                                   ***
***  Diese Fileselectorbox ist frei kopierbar.                        ***
***  Das Programm darf nicht gewerblich vertrieben                    ***
***  bzw. verkauft werden.                                            ***
***                                                                   ***
*************************************************************************
*************************************************************************






     Inhalt
     ======

     I.   Žnderungen seit Version 5/88
     II.  Beschreibung der Fileselectorbox FSELECT.PRG
     III. Beschreibung des Tastaturbelegungsprogrammes PATCH.PRG
     IV.  Anhang





     I.   Žnderungen seit Version 5/88
     =================================

     - Die Box ist jetzt mit JEDER Tos-Version lauff„hig!
     - Die Box kann nun auch ber die Tastatur bedient werden.
     - L„uft jetzt auch mit Programmen, bei denen es bisher
       Schwierigkeiten gab.
     - max. 16 Laufwerkskn”pfe
     - Directory (=Ordnerinhalt) kann jetzt auch unsortiert
       ausgegeben werden.
     - Die Art der Pfadnamenspeicherung kann nun gew„hlt werden.
     - Der Formats-Ordner von 1st-Word wird korrekt bedient.
     - Die Pfadnamenkorrektur wurde erweitert und verbessert.
     - Die Box wurde um eine Zeile tiefer gesetzt, da viele Programme
       ber der Box eine Meldung ber die aktuelle T„tigkeit ausgeben.
       Diese Meldung wird jetzt nicht mehr durch die Box verdeckt.
     - Einige kleinere Fehler (soweit sie bekannt waren) wurden
       beseitigt.
     - Stellt nun auch die Textzeile der fsel_exinput()-Funktion dar.
       Diese neue AES-Funktion ist normalerweise erst ab TOS 1.4
       verfgbar. Durch die Box ist diese Funktion jetzt aber in
       allen TOS-Versionen verfgbar! (siehe auch PATCH.PRG ->)
     - Die Box h„ngt nun in den Vektoren 2 (GEM) und 13 (BIOS).
       In beiden Vektoren h„lt die Box das XBRA-Protokoll ein.





     II.  Beschreibung der Fileselectorbox FSELECT.PRG
     =================================================

     Grunds„tzliches:
     ----------------
     Das Programm FSELECT.PRG ist ein Programm fr den AUTO-Ordner
     und sollte auch nur von dort beim Booten des Rechners gestartet
     werden. Es verbleibt nach dem Start im RAM und wartet dort
     auf einen Aufruf der bisherigen Fileselectorbox.
     Wird nun irgendein Programm gestartet, das die Fileselectorbox
     benutzt, so erscheint statt der alten Box nun die neue.

     Wird das Programm dennoch manuell vom Desktop aus gestartet, so
     muž hinterher ein *.TOS oder *.TTP - Programm gestartet werden,
     damit sich die Box in die Vektoren einh„ngt (dies funktioniert
     jedoch nicht mit dem neuen TOS 1.4, bei diesem TOS muž die Box also
     beim Booten aus dem AUTO-Ordner gestartet werden!).
     Es reicht auch, sich eine Textdatei vom Desktop aus anzeigen zu
     lassen (z.B. xyz.txt anklicken, erste Seite anzeigen und beenden).
     Dieser Effekt ist leider eine Folge des v”llig neuen Mechanismus,
     mit dem die Box nun im Betriebssystem h„ngt. Der Mechanismus hat
     allerdings einen (riesigen) Vorteil: Er ist nicht mehr von der
     verwendeten TOS-Version abh„ngig!

     Ich m”chte nochmals darauf hinweisen:
     Das nachtr„gliche Starten eines *.TOS oder *.TTP - Programms ist
     NICHT notwendig, wenn die Box beim Booten des Rechners aus dem
     AUTO-Ordner gestartet wird!

     --> Also: Um Probleme zu vermeiden, Box immer aus dem AUTO-Ordner
               starten!


     1. Funktionen der Hauptbox:
     ---------------------------

     Kopfzeile
     ---------
     In der ersten Zeile der Box befindet sich die Copyright-Meldung.
     Sie ist als Button gestaltet und fhrt beim Anklicken zur
     Optionsbox (->).
     Wird die Box vom aufrufenden Programm ber die Funktion
     fsel_exinput(path, filename, button, message) (nur fr Programmierer
     interessannt) aufgerufen, so wird anstelle der Copyright -
     die <message> - Meldung ausgegeben.
     Fr den Anwender heižt das, daž von den Programmen in dieser
     Zeile zus„tzliche Mitteilungen ausgegeben werden k”nnen, etwa
     "Datei laden" oder "Bitte Textdatei angeben".
     Diese Meldung kann max. 38 Zeichen lang sein.


     Laufwerkskn”pfe A-P
     -------------------
     Die Laufwerkskn”pfe dienen zur schnellen Anwahl der verschiedenen
     Laufwerke.
     Anw„hlbar sind dabei nur diejenigen Laufwerke, die beim Betriebs-
     system ber den Bitvektor $4C2 angemeldet sind, d.h. aktiv bzw.
     eingeschaltet sind.
     Maximal werden 16 Laufwerkskn”pfe dargestellt.
     Durch einen Doppelklick auf einen Knopf werden Informationen ber
     dieses Laufwerk ausgegeben: Gesamtkapazit„t, belegter und freier
     Platz.
     Wird das Laufwerk durch Anklicken eines dieser Kn”pfe gewechselt,
     so wird automatisch auf den auf diesem Laufwerk gltigen Pfad
     umgeschaltet (Pfadnamenspeicherung ->).


     Pfadnamenfeld (2.Feld von oben)
     -------------------------------
     In diesem Feld wird der aktuelle Pfad angezeigt. Ist der Pfad l„nger
     als angezeigt werden kann, so wird der Rest abgeschnitten (nur bei
     der Anzeige, intern wird der Pfad voll mit 256 Zeichen verwaltet).

     In diesem Feld kann der Pfadname auch manuell eingegeben werden.
     Anschliežend muž zur šbernahme in die Box das Mover-Feld (das graue
     Feld ber dem Dateinamenfenster) angeklickt werden.
     Dabei bestehen mehrere Eingabem”glichkeiten:

     - Nur Laufwerk und ':' (z.B. "A:")
       -> wird mit Auswahlpattern "*.*" versehen (im Bsp.: "A:\*.*")
     - nur ein angezeigter Ordnername (wenn. z.B. im aktuellen Verzeichnis
       der Ordner TEST existiert und "TEST" eingegeben wird, so wird
       in den Ordner TEST gewechselt und der Pfadname entsprechend
       erweitert). Laufwerk und Auswahlpattern werden nicht ver„ndert!
     - jegliche Art von Pfadnamen (z.B. "..\..\XYZ\DEF\*.C"). Sobald
       jedoch ein '\' oder '*' in der Eingabe vorkommt, MUSS der Pfad-
       name mit einem Auswahlmuster enden (s.u.).

     Generell gilt fr den eingegeben Pfadnamen:
     Zuerst wird vom Ende her ein '\' gesucht. Wird dieses Zeichen
     gefunden, so wird angenommen, daž der Rest danach ein Auswahlmuster
     darstellt und von dem eingegebenen Pfadnamen abgeschnitten.
     Wird kein '\' gefunden, so wird vom Anfang her nach dem Zeichen
     '*' gesucht. Wird es gefunden, so wird angenommen, daž es das erste
     Zeichen eines Auswahlmusters (z.B. "*.BAS") darstellt und vom
     restlichen Pfadnamen abgeschnitten.
     Anschliežend wird untersucht, ob die Eingabe mit einer Laufwerks-
     angabe (z.B. "A:") beginnt. Falls nicht, wird das aktuelle Laufwerk
     vor den Pfadnamen gesetzt.
     Dann wird untersucht, ob der Pfadname mit einem '\' beginnt.
     Falls nein, so wird der bis dahin aktuelle Pfad vor den einge-
     gebenen Pfadnamen gesetzt (z.B. wird aus der Eingabe "XYZ" der
     Pfad "C:\TEST\ABC\XYZ").
     Der so zusammengesetzte Pfad wird nun auf Korrektheit hin untersucht:
     Dazu werden zuerst alle mehrfachen '\' zu einem einzigen zusammen-
     gefažt (aus "C:\\\XXX\\YYY\\\\\\ZZZ" mach "C:\XXX\YYY\ZZZ").
     Dieser Pfad wird nun vom Ende her so weit abgeschnitten, bis er
     eine gltige Pfadnamenbezeichnung darstellt (dies kommt vor,
     wenn man falsche Ordner angibt).
     Im Extremfall wird der Pfad bis auf die Wurzel gekrzt ("A:\").

     Dieses Bearbeiten des Pfades gilt auch fr Pfadnamen, die ein
     externes Programm der Fileselectorbox bergibt (insbesondere
     werden jetzt also Pfadnamen, die in der alten Box zwei '\'
     hintereinander enthielten, korrekt angezeigt)!


     Dateinamenfeld (3.Zeile von oben)
     ---------------------------------
     In dieses Feld kann der auszuw„hlende Dateiname von Hand
     eingetragen werden.
     Wird ein Dateiname im Fenster angeklickt, so wird er automatisch
     in dieses Feld eingetragen.


     Fenster
     -------

     a) "Mover"-Feld (oberste Zeile des Dateinamenfensters)
        Mit einem Klick auf dieses Feld wird der Text im Pfadnamenfeld
        eingelesen und verarbeitet. Aužerdem wird in diesem Feld
        das zur Zeit gltige Auswahlmuster angezeigt.

     b) "Closer"-Feld (Feld links neben dem Mover-Feld)
        Mit einem Klick auf dieses Feld steigt man in der Hierarchie der
        Directories um eine Ebene nach oben.

     c) Pfeile oben/unten
        Mit diesen Feldern kann der Fensterinhalt nach oben/unten
        verschoben werden, falls mehr als 11 Dateinamen im aktuellen
        Ordner vorhanden sind. Diese Felder sind mit einer Repeatfunktion
        ausgestattet.

     d) Fensterschieber
        Dient ebenfalls der Auswahl des Fensterbereichs.
        Funktioniert wie bei allen anderen GEM-Fenstern.

     e) Pfeile links/rechts
        Mit ihnen kann ausgew„hlt werden, was im Fenster angezeigt
        werden soll: Datei-/Ordnernamen, Dateigr”že, Erstellungsdatum
        oder Erstellungszeit.
        Was jeweils angezeigt wird, steht im Feld zwischen den beiden
        Pfeilen.

     f) Die 11 Dateinamenzeilen des Fensters
        Hier werden die Dateinamen des aktuellen Ordners angezeigt
        (evtl. nur ausgew„hlte Dateinamen).
        Ordner werden mit einem vorangestellten ''-Zeichen gekenn-
        zeichnet.
        Durch einen Doppelklick auf einen Namen wird dieser ausgew„hlt
        und die Box automatisch mittels 'OK' verlassen.
        Bei einem Klick auf einen Ordnernamen wird automatisch in dieses
        neue Verzeichnis gewechselt. Ordnernamen werden nicht in
        das Dateinamenfeld eingetragen.


     Extensionfelder (die 2*6 Felder rechts neben dem Fenster)
     ---------------------------------------------------------
     Mit diesen Extensionfeldern k”nnen bestimmte Auswahlmuster
     durch einen einfachen Klick ausgew„hlt werden (z.B. werden
     mit "*.PRG" nur noch alle Dateien angezeigt, die mit .PRG enden.
     Ordner werden allerdings immer angezeigt (bis auf eine Aus-
     nahme, siehe Sortierung ->).
     Mit einem Doppelklick auf eines der Extensionfelder kann dessen
     Inhalt editiert werden. Der neue Wert wird dann mittels der
     Returntaste oder Mausklick auf dieses Feld bernommen.
     Auf diese Weise kann man sich seine pers”nliche Sammlung von
     Auswahlmustern zusammenstellen, die man am h„ufigsten braucht.


     Sortierung (rechts unten)
     -------------------------
     Bei der Sortierung hat man 5 M”glichkeiten, den Fensterinhalt
     sortieren zu lassen:

     a) Name
        Es wird nach dem Datei-/Ordnernamen sortiert
     b) Extension
        Es wird vorrangig nach der Extension sortiert, sollten
        diese gleich sein, wird innerhalb einer Extensiongruppe
        (z.B. *.DOC) nach dem Dateinamen sortiert.
     c) Gr”že
        Es wird nach der Dateigr”že sortiert (kleinste Dateien zuerst)
     d) Datum/Zeit
        Es wird zuerst nach dem Datum und dann nach der Zeit sortiert.
        Die jngsten Dateien werden zuerst angezeigt.
     e) Unsortiert
        Diese "Sortierung" erreicht man durch Doppelklick auf eines
        der 4 Sortierfelder. Die Dateien werden dann in ihrer Reihenfolge
        angezeigt, wie sie wirklich im Directory stehen. Diese Art
        der Anzeige ist z.B. ntzlich, um anzeigen zu lassen, in welcher
        Reihenfolge im Auto-Ordner die Programme abgearbeitet werden.

     Achtung:
     Bei unsortierter Anzeige werden auch die Ordnernamen in das
     Auswahlmuster mit einbezogen. Es kann also vorkommen, daž kein
     Ordnername mehr angezeigt wird (z.B. beim Auswahlmuster *.C,
     welcher Ordnername endet schon mit .C ?).
     Wird dann wieder auf sortierte Anzeige zurckgeschaltet, bleiben
     die ausgeblendeten Ordner weiterhin verschwunden!
     Um wieder alle Ordner anzuzeigen, reicht es, einen Laufwerksknopf,
     das Mover-Feld oder ein Extensionfeld anzuw„hlen.




     2. Funktionen der Optionsbox
     ----------------------------

     Die Optionsbox wird durch Anklicken der Kopfzeile aktiviert.
     Folgende zus„tzliche Auswahlm”glichkeiten stehen nun zur
     Verfgung:


     Redraw-Modi
     -----------
     "Redraw" heižt "neu zeichnen" und ist im GEM des Atari eine
     sehr wichtige Funktion:
     Wird n„mlich irgendetwas auf dem Bildschirm ver„ndert, z.B. ein
     Fenster verschoben, verkleinert oder ganz weggel”scht, so muž
     der freiwerdende Bildhintergrund wieder neu gezeichnet werden.

     a) Redraw-Modus
     ---------------
     Der Standardmechanismus, den GEM hier dem Programmierer anbietet,
     funktioniert in etwa so (hier am Beispiel der Box):
     Die Fileselectorbox wurde vom Anwender mit OK oder Abbruch
     beendet und muž nun dafr sorgen, daž der von ihr benutzte
     Bildschirmbereich neu gezeichnet wird.
     Sie schickt dazu an das AES eine Meldung ber Position und Gr”že
     des von ihr benutzten Bildschirmbereichs. Das AES fllt darauf
     diesen Bildschirmbereich mit dem Standardgrau aus und zeichnet
     evtl. vorhanden Fensterr„nder neu (nicht die Inhalte). Um auch die
     Fensterinhalte zu restaurieren, weiž das AES wiederum, wer
     sich alles auf dem Bildschirm tummelt (Applikationen, Accessories)
     und schickt seinerseits die Meldung an alle auf dem Bildschirm
     aktiven Programme weiter.
     Diese prfen nun, ob sie gewisse Bildschirmbereiche neu zeichnen
     mssen und tun dies ggf.
     Nun gibt es aber Programme, die (gerade bei der Fileselectorbox)
     die Meldung ber die Position und Gr”že ignorieren und von einer
     konstanten Gr”že der Box ausgehen. Sie restaurieren deshalb nur
     einen Bereich auf dem Bildschirm, der so grož ist, wie die alte
     Fileselectorbox.
     Da die neue Box aber gr”žer ist, wird auch mehr Platz auf dem
     Bildschirm belegt. Am Ende zeichnet das AES daher auch einen
     gr”žeren grauen Bereich. Die Programme restaurieren jedoch nur den
     kleineren Bereich der alten Box und somit bleibt ein grauer
     Streifen auf dem Bildschirm brig.
     Um hier nun aus der Klemme zu kommen, habe ich den folgenden
     Modus dazugebaut:

     b) Auto-Modus
     -------------
     In diesem Modus wird, noch bevor die Box auf den Bildschirm
     gezeichnet wird, ein 32KB-Puffer angelegt und der gesamte Bild-
     schirminhalt in diesen Puffer kopiert.
     Anschliežend wird die Box gezeichnet und der Anwenderdialog
     gefhrt.
     Beendet der Anwender den Dialog, wird einfach wieder der Puffer
     auf den Bildschirm kopiert und anschliežend freigegeben.
     In diesem Modus wird also berhaupt keine Meldung mehr an das
     AES geschickt, den Bildschirm zu restaurieren. Die Box bernimmt
     die Wiederherstellung des Bildschirms also v”llig selbstt„tig!
     Dadurch, daž nun einfach der Bildschirminhalt hin- und herkopiert
     wird und sich das Anwenderprogramm nicht mehr um den Redraw
     kmmern muž, geht dieser sehr viel schneller vonstatten.
     Nun gibt es aber Programme (z.B. 1st Word und STAD), die den
     gesamten verfgbaren Speicher fr sich beanspruchen.
     Die Box kann dann nicht mehr die 32KB Pufferspeicher anlegen
     und schaltet intern in den Redraw-Modus (fr den Auto-Modus
     muž mind. 32KB + Platz fr 200 Directory-Eintr„ge vorhanden sein).
     Dann ist aber wieder das Problem mit dem grauen Balken wieder da
     (z.B. bei STAD).
     Dafr gibt es jetzt den 3.Modus, den

     c) Fest-Modus
     -------------
     In diesem Modus wird beim Starten von FSELECT.PRG (nicht erst beim
     Aufruf der Box) sofort der 32KB-Puffer angelegt.
     Diese 32KB sind dann fest fr die Box reserviert und werden im
     weiteren Verlauf auch nicht wieder freigegeben, d.h., sp„ter
     gestartete Programme erhalten von Beginn an 32KB weniger Speicher
     zur Verfgung gestellt.
     Sie funktionieren dann aber (meistens) dennoch und (!) die Box hat
     ihren eigenen Bildschirmspeicher, so daž sie den Bildschirm nach
     einem Boxaufruf korrekt restaurieren kann.
     Dieser Modus ist eigentlich nur sinnvoll, wenn die Box mit einem
     Programm im redraw-Modus nicht korrekt zusammenarbeitet und dieses
     Programm zudem den ganzen verfgbaren Speicher an sich reižt, so
     daž auch ein evtl. angew„hlter Auto-Modus in den redraw-Modus
     gezwungen wird.
     Die Bildschirmrestaurierung sollte also in diesem Modus immer
     funktionieren.
     Damit dieser Modus jedoch aktiv wird, muž mit "Parameter abspeichern"
     der Modus gespeichert und der Rechner neu gebootet werden.
     Es ergibt sich also folgende Vorgehensweise:
     - Fest-Modus selektieren
     - "Parameter abspeichern" anw„hlen
       -> der Modus wird jetzt gesichert
     - Beenden der Box und allen noch laufenden Programmen
     - Neustart des Rechners (Reset, Aus-/Einschalten)
       -> der Rechner bootet und die Box wird im Fest-Modus gestartet

     Noch ein generelles Wort zu den Redraw-Modi:
     Normalerweise verwende ich immer den Auto-Modus. Er bietet den
     Vorteil einer enorm hohen Redrawgeschwindigkeit. Und sollte
     einmal wirklich nicht der Speicher reichen, so schaltet er auto-
     matisch in den Redraw-Modus.
     Der Fest-Modus ist eigentlich nur bei den Programmen sinnvoll,
     die das Problem mit dem grauen Balken haben und zudem den gesamten
     Speicher fr sich belegen.
     Dieser Modus belegt die 32KB Pufferspeicher n„mlich die ganze Zeit,
     w„hrend der Auto-Modus diesen Speicher nur belegt, wenn die Box
     am Bildschirm sichtbar ist.
     Der Redraw-Modus ist eigentlich nur sinnvoll bei Grožbildschirmen,
     da bei diesen nicht der gesamte Bildschirminhalt weggespeichert
     werden kann (zumindest nicht mit den hier benutzten 32KB).
     Die Box habe ich jedoch noch nicht im Zusammenhang mit einem
     solchen Bildschirm ausprobieren k”nnen.

     Achtung: Beim Programm TIMEWORKS muž der REDRAW-Modus verwendet werden!


     Klemmen
     -------
     Mit diesen beiden Kn”pfen (Pfad, Extension) kann man festlegen,
     wer den Pfad bzw. die Extension (das Auswahlmuster) vorgeben
     soll:
     - das externe Programm, das die Box aktiviert hat (Knopf
       nicht selektiert)
     - oder die Box (Knopf selektiert)
     Es gibt immer wieder Programme, die meinen, einen festen Pfad
     vorgeben zu mssen, obwohl man auf einem anderen Pfad arbeiten
     m”chte.
     In einem solchen Fall kann man den Pfad-Knopf selektieren und
     damit den aktuellen Pfad festklemmen. Das Programm kann nun
     an die Box an Pfaden liefern, was es will, die Box nimmt immer
     den zuletzt (mit der Box) benutzten Pfad.
     Genauso kann man es der Extension ergehen lassen (H„H„...).


     Pfad-Sp(eicherung)
     ------------------
     Bei den bisherigen Versionen der Box wurde die Speicherung der
     Pfadnamen dem GEMDOS berlassen. Die Box verhielt sich daher
     nach aužen hin nicht genauso wie die Original-Box.
     Dieser Effekt machte sich das erste Mal bei 1st-Word mit dem
     FORMATS-Ordner bemerkbar. Der Ordner wurde von 1st-Word nicht mehr
     gefunden.
     Die Pfadspeicherung kann deshalb jetzt ebenfalls gew„hlt werden:

     a) Fsel(ect)
     ------------
     Die Box bernimmt die komplette Speicherung der Pfadnamen auf allen
     aktiven Laufwerken. Wird ein Laufwerk in der Box das erste Mal
     angesprochen, so wird dort defaultm„žig der Wurzelpfad ("X:\")
     gesetzt.
     Die Box verh„lt sich somit in diesem Modus nach aužen hin genauso
     wie die Originalbox.
     Insbesondere macht sie keine Ver„nderungen nach aužen hin, nimmt
     aber auch keine Ver„nderungen von aužen an (siehe n„chster Modus)!

     b) TOS
     ------
     Dieser Modus entspricht dem Modus in den bisherigen Versionen
     von FSELECT. Die Pfadnamenspeicherung wird also vom GEMDOS bernommen.
     Dies hat einerseits den Effekt, daž 1st-Word den FORMATS-Ordner
     nicht mehr findet, andererseits bekommt die Box alle Žnderungen
     von aužen mit:
     d.h. ”ffnet man z.B. ein Fenster auf Laufwerk E: mit dem Pfad
     E:\BEISPIEL\PFAD und startet dann auf Laufwerk C: ein Programm,
     das wiederum die Fileselectorbox aufruft, so erscheint dort
     zun„chst der vom Programm vorgegebene Pfad (sofern man nicht geklemmt
     hat). Klickt man nun den Laufwerksknopf E an, so erscheint sofort
     der Pfad E:\BEISPIEL\PFAD, w„hrend dies im Fall a) normalerweise
     nicht der Fall ist.
     Man ist somit meistens sofort auf dem Pfad, auf dem man sein m”chte.
     Die Box gibt sich in diesem Modus also v”llig offen nach aužen hin:
     Sie nimmt die Pfadnamen vom GEMDOS, egal, wer sie gesetzt hat;
     sie setzt aber auch neue Pfadnamen im GEMDOS mit allen Konsequenzen
     (->FORMATS-Ordner)!

     c) T(OS)->F(select)
     -------------------
     Dieser Modus der Pfadnamenspeicherung ist ein Kompromiž zwischen
     den beiden vorhergehenden Modi:
     Immer, wenn die Box aufgerufen wird, liest sie von s„mtlichen
     angemeldeten (aktiven) Laufwerken die kompletten Pfadnamen ein.
     Dadurch kann sie auf Žnderungen von aužen wie im Modus b) reagieren.
     Anschliežend bernimmt sie die Verwaltung der Pfadnamen v”llig
     selbst„ndig wie im Modus a).
     Das heižt insbesondere, daž sie keine Pfadnamen im GEMDOS speichert.
     Daher funktioniert der FORMATS-Ordner auch in diesem Modus.
     Noch einen kleinen Haken hat die Sache:
     Durch das st„ndige Neueinlesen der Pfade bei jedem neuen Aufruf
     der Box werden die Pfade nur solange gespeichert, solange die Box
     auf dem Bildschirm sichtbar ist. Dies ist aber m.E. nicht weiter
     hinderlich.
     In diesem Modus werden die Laufwerke A: und B: gesondert behandelt:
     Fr Festplattenbesitzer ist es besonders hinderlich, wenn bei jedem
     Aufruf der Box die Meldung "Bitte Diskette B: in Laufwerk A: einlegen"
     erscheint. Dies passiert immer dann, wenn nur ein Laufwerk ange-
     schlossen ist und die Pfadnamen von A: und dann von B: eingelesen
     werden.
     Daher werden einfach, sobald ein Laufwerk >= C: angemeldet ist,
     die Pfadnamen von A: und B: nicht mehr bei jedem Aufruf der Box
     eingelesen. Diese Laufwerke werden dann wie im Modus a) behandelt.
     Sind jedoch nur A: und B: angemeldet, so werden die Pfadnamen dieser
     beiden Laufwerke dennoch bei jedem Aufruf der Box eingelesen mit der
     Konsequenz, daž ab und zu die Aufforderung zum Diskttenwechsel
     erscheint (je nach Lust und Laune des GEMDOS).
     Ist dieser Effekt nicht gewnscht, so muž der Modus a) oder b)
     verwendet werden.


     Ordner/Datei l”schen:
     ---------------------
     Es wird der/die Ordner/Datei im aktuellen Verzeichnis gel”scht,
     dessen/deren Name im Dateinamen-Eingabefeld steht. Bei einem
     Mižerfolg wird eine Fehlermeldung ausgegeben.
     Also: zu l”schende Datei einmal anklicken bzw. Ordnernamen
     ins Dateinamenfeld eingeben und "Ordner/Datei l”schen" in der
     Optionsbox anklicken.


     Ordner anlegen:
     ---------------
     Damit kann ein Ordner im aktuellen Verzeichnis angelegt werden,
     und zwar mit dem Namen, der im Dateinamen-Eingabefeld steht.


     Parameter abspeichern:
     ----------------------
     Damit k”nnen alle wichtigen Einstellungen der Box gesichert werden,
     und zwar: Die Sortierung, die Default-Extensions, der Redraw-Modus,
     das Klemmen von Pfad und Extension (hier wird auch einer der 12
     Default-Extenders, sofern ausgew„hlt, mit gesichert), die Pfadnamen-
     speicherung (nicht jedoch die Pfadnamen selbst) und die Art
     der Anzeige (Namen, Gr”že,...).
     Damit die Abspeicherung funktioniert, muž das Fileselectorprogramm
     selbst im dem Autoordner, von dem gebootet wurde, unter dem Namen
     FSELECT.PRG liegen.
     Dies ist notwendig, da bei der Abspeicherung das Programm selbst
     modifiziert wird (wenn die abgespeicherten Daten aus einer eigenen
     Datei geladen wrden, so wrde sich die Zeit beim Booten verl„ngern;
     aužerdem hat man bei der jetzigen Form nur 1 Datei, n„mlich das
     Programm selbst!).



     Tastaturbedienung
     -----------------
     Eine wesentliche Neuerung ist nun die Bedienbarkeit der Box
     ber die Tastatur.
     Da sich mittlerweile viele Programme sowohl mit der Maus als auch
     mit der Tastatur bedienen lassen, habe ich die Box dahingehend
     umgebaut, daž sich jetzt alle Funktionen auch ber die Tastatur
     steuern lassen.
     Dadurch f„llt ein weiterer Griff zur Maus weg (ich hoffe, der Vorteil
     der Tastaturbedienung hat sich so langsam herumgesprochen)!

     Achtung:
     Die Funktionen der Optionsbox k”nnen ber die Tastatur von der
     Hauptbox aus aufgerufen werden! Die Optionsbox braucht also
     nicht erst zur Anzeige gebracht werden!

     Die Belegung der Tasten l„žt mittels des Programmes PATCH.PRG
     um„ndern.
     Die genaue Belegung der Tasten steht in der Datei FSELECT.INS.
     Hier die wichtigsten:

     Undo      : Abbruch
     Help      : Optionsbox
     ^a-^p     : Laufwerke A: - P:
     ^s        : Parameter abspeichern (funktioniert auch in der Hauptbox)
     ^Insert   : Ordner anlegen        (  -"-  )
     ^Delete   : Ordner/Datei l”schen  (  -"-  )

     Durch zus„tzliche Bet„tigung der Shift-Taste kann ein Doppelklick
     auf den entsprechenden Knopf simuliert werden.
     Genauere Beschreibung siehe Punkt III. ->


     Sonstiges
     ---------
     Wichtig fr Harddisk-Besitzer:
     Sollte das Programm im Auto-Ordner liegen und sich beim Booten mit
     irgendeinem anderen Programm nicht vertragen (B”mbchen, B”mbchen....),
     so kann mit niedergedrckter Alternate-Taste w„hrend des Bootens ein
     Programmstart verhindert werden.





     III. Beschreibung des Tastaturbelegungsprogrammes PATCH.PRG
     ===========================================================


     1. Beschreibung der Installationsdatei FSELECT.INS
     --------------------------------------------------
     Generell gilt:
     Die Reihenfolge der Zeilen in der Datei ist nicht von Bedeutung!
     In jeder Zeile kann ein Kommentar stehen, er beginnt mit einem '#'
     und geht dann bis zum Zeilenende.
     Leerzeichen drfen berall stehen, nur nicht in zusammengeh”renden
     Symbolen (etwa Zahlen ("$4E"), Namen ("header") und Ascii-Konstanten
     ("'A'")).
     Schlsselworte k”nnen grož und klein geschrieben werden.

     Jede Zeile beginnt mit einem Schlsselwort. Es bestimmt das Objekt
     in der Box, das mit einer Tastenkombination erreicht werden soll
     (z.B. "drive0").
     Daraufhin folgt ein "=", gefolgt von einer Konstanten.
     Diese Konstante stellt den ASCII-Code der dem Schlsselwort
     zuzuweisenden Taste dar. Die Konstante kann folgende Formate
     annehmen (z.B.):
     - $4C     (Hex-Format) fr den Buchstaben 'L' oder dazu „quivalent
     - 76      (Dezimalformat) oder
     - 'L'     (ASCII-Format)
     Bei den Sondertasten und Tasten des numerischen Eingabefeldes
     sind meistens nur symbolische Konstanten m”glich (z.B. "F1", "F2",
     "ESC", "TAB", "INSERT").
     Anschliežend folgen (optional) zwei Shifttasten-Kombinationen,
     jeweils durch Komma vom vorigen Wert getrennt:
     Die erste Kombination definiert die Taste fr einen Einfachklick,
     die zweite fr einen Doppelklick.
     Eine Kombination besteht aus max. 3 Shifttasten-Schlsselw”rtern
     (siehe unten) mit dem Zeichen '+' dazwischen.
     ...Etwas kompliziert zu beschreiben, deshalb zwei Beispiele,
     da sieht's gleich einfacher aus (oder besser mal FSELECT.INS
     ansehen):

     "drive0 = '5', shift, alt"
          d.h. Laufwerk A: (drive0) kann ber Shift-5 angew„hlt werden und
          mittels Alt-5 werden die Laufwerksinformationen ber Laufwerk
          A: ausgegeben.
     "ext0 = 'a', , shift"
          d.h. mit einem einfachen Tastendruck auf A wird der erste
          Extender ausgew„hlt, w„hrend er sich mit Shift-A editieren
          l„žt. Es kann in diesem Fall kein 'A' mehr ins Pfadnamenfeld
          oder ins Dateinamenfeld eingegeben werden!

     Aufgrund der Abfragetechnik in der Box l„žt sich pro Taste nur
     ein Objekt definieren, fr dieses k”nnen dann aber fr Einfach-
     und Doppelklick verschiedene Shifttastenkombinationen definiert
     werden.
     Pro Objekt k”nnen aber mehrere Tasten definiert werden (wie z.B.
     fr die Kopfzeile geschehen ist: sie ist sowohl ber Ctrl-Q als
     auch ber Help erreichbar).
     Ich habe die Tastaturabfrage in der Box so konstruiert, daž
     die Optionsbox nicht mehr dargestellt werden braucht!
     So kann z.B. jederzeit in der Hauptbox Ctrl-S gedrckt werden,
     um die Boxparameter abzuspeichern.
     M”chte jemand eine Funktion der Box fr die Tastatur sperren
     (z.B. weil Ctrl-Delete auch von der Hauptbox aus Dateien und
     Ordner l”scht), so ist einfach die entsprechende Zeile aus der
     Installationsdatei zu entfernen und das Patchprogramm neu zu
     starten.

     Pro Taste sollten immer beide Shifttastenkombinationen definiert
     werden. Wird eine Kombination weggelassen, so bekommt die Taste
     bereits ohne irgendwelche Shifttasten eine Steuerfunktion fr
     die Box (siehe Beispiel 2 oben)!
     Sind beide Kombinationen gleich, so wird der Tastendruck als
     Einfachklick gewertet.

     Eine Ausnahme in der Steuerdatei bildet das Schlsselwort
     "fixdrives":
     Es muž alleine auf einer Zeile stehen und schaltet
     eigentlich nur eine Option der Box ein oder aus (je nachdem,
     ob es in der Installationsdatei erscheint oder nicht):

     So kann man mit dieser Option die Tasten, die die Laufwerke
     ausw„hlen, entweder an die Laufwerksbezeichnungen oder an die
     Laufwerkskn”pfe festbinden:
     z.B. aktiviert bei der Option 'fixdrives' die Taste 'c' immer das
     Laufwerk C:, egal ob A: und B: angemeldet sind oder nicht.
     Ist die Option 'fixdrives' ausgeschaltet (gel”scht oder auskommen-
     tiert), so ist die jeweilige Taste nicht an die Laufwerkskennung,
     sondern an den jeweiligen Knopf gebunden:
     Die Taste 'c' aktiviert dann immer den 3. Laufwerksknopf, egal, ob
     dort Laufwerk C:, D: oder E: eingetragen ist.

     Es folgt noch ein Syntaxdiagramm in EBNF-Notation mit einer
     Auflistung s„mtlicher Schlsselw”rter:

     lines:    { line }
     line:     [ "fixdrives" | ( OBJECT "=" KEY kshifts ) ] "\n"
     kshifts:  [ "," ( kshift [ "," kshift ] ) | ( "," kshift ) ]
     kshift:   SHIFT [ "+" SHIFT [ "+" SHIFT ] ]

                                             Shifttasten-Schlsselworte
     SHIFT:      "shift"              | "s"  Linke/rechte Shifttasten
               | "alternate" | "alt"  | "a"  Alternate-Taste
               | "control"   | "ctrl" | "c"  Control-Taste

                                             Schlsselworte der Hauptbox
     KEY:        "DRIVE0"                    Laufwerk 0 (normal A:)
               | "DRIVE1"                    Laufwerk 1 (normal B:)
               | "DRIVE2"                    ...
               | "DRIVE3"
               | "DRIVE4"
               | "DRIVE5"
               | "DRIVE6"
               | "DRIVE7"
               | "DRIVE8"
               | "DRIVE9"
               | "DRIVE10"
               | "DRIVE11"
               | "DRIVE12"
               | "DRIVE13"
               | "DRIVE14"
               | "DRIVE15"
               | "HEADER"                    Kopfzeile
               | "WICLOSE"                   Closer-Feld des Dateinamenfensters
               | "WIMOVE"                    Mover-Feld des Dateinamenfensters
               | "WI0"                       1. Dateinamenzeile des Fensters
               | "WI1"                       2. -"-
               | "WI2"                       ...
               | "WI3"
               | "WI4"
               | "WI5"
               | "WI6"
               | "WI7"
               | "WI8"
               | "WI9"
               | "WI10"
               | "WIUPARR"                   Fensterpfeile nach oben
               | "WIDNARR"                   ... nach unten
               | "WILTARR"                   ... nach links
               | "WIRTARR"                   ... nach rechts
               | "EXT0"                      die Extensionfelder "*.C"-"*.*"
               | "EXT1"
               | "EXT2"
               | "EXT3"
               | "EXT4"
               | "EXT5"
               | "EXT6"
               | "EXT7"
               | "EXT8"
               | "EXT9"
               | "EXT10"
               | "EXT11"
               | "SORTNAME"                  Sortierung nach Namen
               | "SORTEXT"                   ... Extension
               | "SORTDATE"                  ... Datum
               | "SORTSIZE"                  ... Dateigr”že
               | "EXIT"                      Abbruch der Hauptbox

                                             Schlsselworte der Optionsbox
               | "OPFEST"                    Fest-Modus
               | "OPAUTO"                    Auto-Modus
               | "OPREDRAW"                  Redraw-Modus
               | "OPKLPF"                    Klemmen des Pfades
               | "OPKLEX"                    Klemmen der Extension
               | "OPSPFSEL"                  Fselect speichert Pfad
               | "OPSPTOS"                   TOS speichert Pfad
               | "OPSPTOSFS"                 Fselect bernimmt Pfad von Fselect
               | "OPREMOVE"                  Ordner/Datei l”schen
               | "OPMKDIR"                   Ordner anlegen
               | "OPSAVE"                    Parameter abspeichern
               | "OPEXIT"                    Abruch der Optionsbox

     OBJECT:     ( "$" ( "0".."9" | "A".."F" ) { "0".."9" | "A".."F" } )
               | ( ( "0".."9" ) { "0".."9" } ) 
               | ( "'" " ".."~" "'" )
               | "Z("                        Die Zeichen auf der numerischen
               | "Z)"                        Eingabetastatur
               | "Z/"
               | "Z*"
               | "Z+"
               | "Z-"
               | "Z."
               | "Z0"
               | "Z1"
               | "Z2"
               | "Z3"
               | "Z4"
               | "Z5"
               | "Z6"
               | "Z7"
               | "Z8"
               | "Z9"
               | "ZCR"                       Enter auf der num. Tastatur
               | "ENTER"                     dto.
               | "HELP"                      div. Sondertasten
               | "UNDO"
               | "INSERT"
               | "HOME"
               | "CLR"
               | "CURUP"
               | "CURDOWN"
               | "CURLEFT"
               | "CURRIGHT"
               | "ESC"
               | "TAB"
               | "SPACE"
               | "BACKSPACE"
               | "RETURN"
               | "DELETE"
               | "F1"
               | "F2"
               | "F3"
               | "F4"
               | "F5"
               | "F6"
               | "F7"
               | "F8"
               | "F9"
               | "F10"



     2. Beschreibung des Programmes PATCH.PRG
     ----------------------------------------
     Das Programm PATCH.PRG dient zum Patchen der Tastenbelegungstabelle
     von FSELECT.PRG.

     Dazu wird die gewnschte Tastenbelegung in der Datei FSELECT.INS
     eingetragen und das Programm PATCH.PRG gestartet.
     Zu diesem Zeitpunkt sollte die Fileselectorbox bereits aktiv sein,
     da das Patchprogramm zu Demonstrationszwecken von der M”glichkeit
     Gebrauch macht, eine Kopfzeile in der Box mit angeben zu k”nnen.
     Ist die Fileselectorbox trotzdem noch nicht aktiv, so kann das
     Programm mit niedergedrckter Alternate-Taste gestartet werden
     (Taste halten, bis die Fileselectorbox erscheint).
     In diesem Fall wird dann der normale Fileselectoraufruf benutzt.

     Das Programm fragt jetzt nach dem Namen der Installationsdatei
     (im Normalfall FSELECT.INS).
     Die Datei wird dann gelesen und interpretiert.
     Etwaige Fehler in der Datei werden gemeldet.
     Falls keine Fehler auftraten, fragt das Programm anschliežend
     nach dem zu patchenden Programm.
     Dies ist im Normalfall FSELECT.PRG im AUTO-Ordner.
     Ging alles glatt, so werden keine Fehlermeldungen ausgegeben
     und der Rechner kann anschliežend neu gebootet werden, um die
     Version mit der neuen Tastenbelegung in den Speicher zu laden.




     IV. Anhang
     ==========

     Das Programm BOXTEST.PRG ist eigentlich nur zur Demonstration
     der Box mit der Kopfzeile gedacht. Man kann auch verschiedene
     Pfadnamen eingeben und sehen, was die Box daraus macht.
     War eingentlich nur zum Testen der Box gedacht...


     Den Quelltext zu dieser Version von FSELECT gibt's bei mir
     fr lasche DM 30.- (170KB Sourcecode, 400KB alle Dateien).

     Wer ihn m”chte, soll mir bitte eine Diskette (DD,DS), einen
     frankierten Rckumschlag und natrlich 30DM zuschicken.
     Fehlt was, gibt's nichts!

     Anforderungen an den Compiler:
     Mark Williams C >= 3.0  (2.1.7 tuts fast auch!)
     fr das Programm patch.prg ist zus„tzlich lex und yacc sehr
     von Nutzen (aber nicht unbedingt notwendig)!           ----

     Fr Anregungen und Benachrichtigungen ber Fehler bin ich immer
     dankbar!
     Fr Rckantworten bitte frankierten Umschlag beilegen! Danke!


     Und hier noch meine Adresse:

     Martin Patzel
     Promenadeweg 15
     D-7905 Dietenheim 1
     West-Germany

