        RecoverX - v00 - .hpr'98 - f‡r den Sinclair QL, QDOS und QXL

       QXL Dateien-Auszugs- und -Rettungsprogramm, erste Probeversion
           QXL-files Extraction and Recovery - re "RecoverX_doc"


 Copyright (C) 1998 und Urheberrecht beim Autor, H.-Peter Recktenwald, Berlin
                       email: phpr@mail.geocities.com
 Das Programm kann im Rahmen der in deutscher §bersetzung als "GNU-G_txt" bei-
 gef‡gten GNU-Lizenz auf eigenes Risiko frei verteilt und benutzt werden, bei
 Widerspruch gegen Teile davon oder Nichteinhalten gilt sie als nicht gew€hrt.
 Es sei aber darauf hingewiesen, daœ beim Weitergabe auf beliebig geartete Ge-
 genleistung neben den stets geltenden Bestimmungen des Urheberrechts dann auch
 Produkthafung und AGBG zulasten des Versenders Rechtskraft bekommen, ohne die
 M„glichkeit, das auszuschlieœen.


Files:
        RecoverX                das eigenst€ndig ausf‡hrbare Programm.
        GNU_txt               \ die GNU-Lizenz (Original)
        GNU-G_txt             / dto. deutsch.

        qxlwin_scr              Quelltext, erfordert den "QF"-Basisjob v818,
                                "forth_scr" und "qxlsec_dat". Zur Bearbeitung
                                der Quelle wird auœerdem ein Editor ben„tigt,
                                der Text ohne Steuerzeichen auf festliegender
                                Breite von 64 Zeichen wiedergibt ("f6ed" oder
                                jeder andere Forth-typische Blockfile-Editor).
        qxlsec_dat              leere QXL-Sector-Vorlage



Zum Programm:


RecoverX ist ein aus dem GF6 erstelltes Forth-Programm zum Extrahieren und
Wiederherstellen von Dateien aus QXL.WIN-Laufwerken oder -Dateien. Es wird
interaktiv bei uneingeschr€nktem Zugriff auf das zugrundeliegende F6-System
betrieben und ist frei prgrammier- und €nderbar, sowohl interaktiv als auch
durch einen bis zu 1000 Zeichen langen Parameterstring beim EX-Aufruf.

Dazu stehen neben den Programmworten im Vocabular RQX s€mtliche Worte des F6
zur Verf‡gung. Insofern ist es einer "shell" entsprechend, wie sie auch das
*Basic des QL darstellt, die um die eigentlichen Worte des Anwendungszwecks
erweitert ist. Dar‡berhinas kann jederzeit sein aktueller Zustand als neuer
ausf‡hrbarer Job gesichert wreden (s.u.).

Aber keine Panik:
F‡r die vorgesehene Verwendung sind Forth-Kenntnisse nicht erforderlich...
Und, was hier "Wort" heiœt, entspricht recht genau der *Basic "PROCedure".

Details k„nnen der beigef‡gten (englisch) kommentierten Programmquelle und
dem Hilfstext im Programm entnommen werden. Hier nur das N„tigste zum Start.


Voraussetzungen:


Systemanforderungen:

        keine (so sollte es immerhin sein), auœer, daœ das Programm irgendetwas
        QDOS-Compatibles erwartet. Insbes. ist es unabh€ngig von irgendwelchen
        "Levels" der Filesyteme im Arbeits- wie im Zielrechner.
        Vorhandensein des PIF (Pointer I.F., "environment") ist vorteilhaft,
        aber zur Funktion nicht erforderlich.
        Die "comand line history" von Boris Jakubith wird automatisch mit 40
        Zeilen initiiert, wenn der Code vor dem Programmstart aktiviert wurde.
        Erg€nzende (d.h. nicht notwendige) Funktionen, wenn IO2 vorhanden ist.

Speicherbedarf:

        84K f‡r Programm und Arbeitsspeicher, sowie etwa
         1K heap-Speicher je MB des betr. (pseudo-)Laufwerks
        f‡r die Verteilungstabelle der darin enthaltenen Datenbl„cke. Jene
        bestehen aus einer im Laufwerk selbst verankerten gleichbleibenden
        Anzahl aufeinanderfolgender Sectoren, z.B. vier. Der Speicherbedarf
        kann damit folgendermaœen ermittelt werden:
                        map-memory = allocation-units * 2 + 80
                                   = total-sectors / secs/alloc.unit * 2 + 80
        d.h. bei vier Sectoren/Block, was 2K Bytes entspricht, ist ein 80MB
        WIN-Laufwerk in 40K solcher Zuweisungs- Einheiten aufgeteilt, die je
        ‡ber einen 16-Bit-Index verwaltet werden. Das sind insges. 80K Bytes.

Andere Erfordernisse:

        ... ein taugliches QDOS.
        Entwickelt und unfassend gepr‡ft wurde RecoverX in der in der QXL,
        ein paar Tests wurden auch ‡ber das QDOS-NETzwerk mit Hilfe zweier
        MINERVA/GC-QL durchgef‡hrt.
        U.a. Aufruf von X (s.u.) mit
                Quelle (1MB, QXL): n3_flp2_qxl.win
                Speicher (QL)    : ram1_qxldir.out
                Ziel (QL)        : n1_flp1
        Mit seinem Transfer von 2K/sec gewiœ nichts f‡r die Alltagsarbeit, aber
        immerhin ein RecoverX-H€rtetest - bei dem im ‡brigen die Floppy des PC
        die eigentliche Bremse darstellt...
        Andere Pr‡fungen fanden mit dem UQLX-Emulator statt, der zwar extrem
        langsam ist (halbe GC-Geschwindigkeit), was aber durch die Verbindung
        mit der LINUX/UNIX-Umgebung wieder weitgehend ausgegliche wird. Dort
        wurde der Inhalt verschiedener QXL.WIN-Files zwischen 50MB und 80MB
        Gr„œe erfolgreich in das UQLX-Dateiensystem eingeordnet.

M„gliche Fehler:

        Auœer dem bekannten(?) SMSQ/WIN-Desaster in der QXL (auch, und dann
        besonders weitreichend, nach NETzwerk-Aktionen beobachtet) sind Fehler
        bis dato nicht aufgetreten. Dazu nur kurz:
        Falls es Fehlermeldungen "bad medium" gibt, muœ das Laufwerk noch
        keineswegs verdorben sein, jedoch sind dann im allgemeinen die Slave-
        Bl„cke im Speicher zerst„rt. Gegen tiefgreifende Sch€den hilft dann
        nur(!) unverz‡gliches Aufgeben des gesamten QXL-Systems.
        Solche Fehler sind nach entsprechenden Vorkehrungen im F6-System wie
        auch im Programm nicht mehr aufgetreten.

        Im UQLX gibt es mitunter Fehlanzeigen/-Funktionen wegen mangelhafter
        Ausf‡hrung einiger QDOS-Traps des Filesystems (Stand 3/1998), die z.B
        bei CHANS (s.u.) zum Tragen kommen, die aber allem Anschein nach die
        Grundfunktionen des Programms nicht weiter st„ren.

        Es waren leider keine fehlerfreien Unterlagen zum Aufbau der QXL-Files
        aufzutreiben, auch die j‡ngsten Ver„ffentlichungen z€hlen dazu. Es ist
        bedauerlich, daœ aus welchen (zweifelhaften) Gr‡nden auch immer die an
        dem betr. Filesystem Beteiligten keinerlei diesbez‡gliche Dokumentation
        ver„ffentlichen, und Interessenten dann zynisch auf dem "Rat" h€ngen-
        lassen, man m„ge die Strukturdaten experimentell selbst ermitteln.
        So weit, so schlecht, RecoverX ist aus eben diesem Grunde nur f‡r die
        QXL-WIN-Laufwerke geeignet, Werte von "Spuren" oder "Cylindern" werden
        nicht ber‡cksichtigt. Sollten die Verantwortlichen sich doch noch zu
        einer frei zug€nglichen seri„sen Dokumentation durchringen, k„nnte das
        Programm dann auch auf andere Aufzeichnungsstrukturen erweitert werden.
        Ausreichende Vorbereitungen dazu sind bereits getroffen.
        Alle erkannten Dinge wurden ber‡cksichtigt, doch muœ das Programm nicht
        unbedingt sicher sein. Darum, und weil die direkte Manipulation eines
        Laufwerks immer mit besonders hohen Risiken behaftet ist, wird in jedem
        Falle zus€tzliche Vorsicht angeraten sein.

        Direktzugriff auf QXL-Laufwerke ‡ber Netz scheitert an Inkonsistenzen
        im TK2-Fileserver, der anscheinend die Filepositionierung falsch an das
        Ziel weiterreicht, oder sie in der Quelle nicht erkennt - oder aufgrund
        der etwas merkw‡rdigen Bewertung der Filepositionierung als Kriterium
        f‡r die Natur eines Datenpakets ordnungsm€œige §bertragungen nicht
        zustandebringt. Von Programmen aus ist darauf kaum ein Einfluœ m„glich,
        und so wird man wohl (vergeblich, wie die Erfahrung zeigt) auf Korrek-
        turen seitens Mr.T. zu warten haben...


Start:

Das aus dem *Basic z.B. mit EX, EW, EXEC oder EXEC_W gestartete Programm ist
zun€chst inaktiv und erwartet (€hnlich dem *Basic) nun irgendwelche Eingaben.
Um etwa die Dateien-§bertragung zu beginnen, schreibt man im einfachsten
Falle hin:
                X
und bet€tigt die <enter>-Taste.
Dann werden der Reihe nach die unten erkl€rten Eingaben abgefragt.
Sofern alle Namen brauchbar waren, beginnt danach der Programmablauf.

In derselben Reihenfolge k„nnen die betr. Namen auch unmittelbar nach dem "X"
hingeschrieben oder dem EXEC-Aufruf als Parameterstring mitgegeben werden:
                EX RecoverX
und darin die Eingabe
                X win1_*d2d win2_directory-win1_dat win3_x-dir

oder, nur zur einmaligen sofortigen Ausf‡hrung des Kommandos
                EX RecoverX;"X win1_*d2d win2_directory-win1_dat win3_x-dir bye"

Das angeh€ngte BYE sorgt daf‡r, daœ sich das Programm zum Schluœ selbst€tig
aus dem Speicher entfernt.

Da ein Forth-System immer auch einen Textinterpreter enth€lt, er‡brigen sich
obscure "Schalter" und "Optionen", oder das allem Anschein nach mehr zuf€llig
(wenn ‡berhaupt) funktionierende Warten auf Tastenbet€tigung wie bei einigen
"C"-Programmen. Man ‡bgibt im Parameterstring den Text einfch genauso, wie man
ihn auch in direkter Eingabe hinschreiben w‡rde.
Der String wird bis zu einer L€nge von 1000 Zeichen angenommen.
Interaktiv akzeptiert der Interpreter Zeilen von bis zu 170 Zeichen L€nge.



* Die Aufrufe im einzelnen:

- Die hier angegebenen "[", "]", "<", ">" sind nicht mitzuschreiben:
  [ .. ] faœt optionale Angaben ein, < .. > steht f‡r Tastaturaktionen.
  "nn" vor einem Wortnamen steht f‡r eine vorher hinzuschreibende Zahl.
  Die Schreibweise groœ oder klein ist ausnahmslos ohne Belang.
  Nahezu alle Worte des Programms stehen im Vocabular RQX; der besseren
  §bersicht halber sind aus dem standardm€œig allein aktiven Vocabular
  FORTH nur die hier notierten Worte sofort zug€nglich.



    X [ qxlfile [ dirfile [ zieldirectory [ refrenzenfile ]]]]

Trennzeichen ist das Leerzeichen; davon k„nnen beliebig viele hingeschrieben
werden. F‡r die Namen gelten alle Schriftzeichen aus dem Codebereich 33 bis
255 (alle Schrift-, Markierungs- und Rechenzeichen mit der einzigen Ausnahme
des Leerzeichens, sowie die z.B. mit MINERVA darstellbaren Sonderzeichen im
Bereich ab Code 192). Bei der interaktiven Namensanforderung ist auch das Leer-
zeichen zul€ssig, die Zeichen ab Code 192 sind von dort aus nicht zug€nglich.

Die Dateien-§bertragung beginnt, sobald alle Namen g‡ltig angegeben wurden; sie
kann mit <ESC> zum Ende der ggf. gerade bearbeiteten Datei abgebrochen werden.
Unbrauchbare Namen k„nnen nach einer dann erscheinenden Abfrage ge€ndert werden,
mehr dazu s.u. bei "ANY" und "WAIT".


Quelle: "device+qxlfilename"
z.B.:           n3_win1_*d2d
                flp2_qxlfiles_qxl-1.win
eine QXL.WIN-Copie beliebigen Namens, oder in der QXL auch das Originallauferk,
das dann mit dem Filenamen entsprechend dem Direktzugriff f‡r DD-Disketten zu
bezeichnen ist, etwa "win3_*d2d" f‡r WIN3.
Die Auswahl QXL.WIN-File oder Direktzugriff in der QXL erfolgt allein ‡ber
den Namen: Steht an vierter Stelle vom Ende des Namen her gez€hlt ein "*", so
wird Direktzugriff angenommen. Alles andere gilt als gew„hnlicher Dateiname.
Die hiervon abh€ngig unterschiedlichen Zugriffsmodalit€ten werden im Programm
dann selbst€tig verwaltet. Besondere Angaben dazu sind nicht n„tig.

QXL-Directoryspeicher: "device+dirfilename"
z.B.:           mdv1_qxlwin_dir
ein Beliebiger Device+Filename, wo s€mtliche existierenden und gel„schten(!)
Directoryeintragungen Platz finden m‡ssen. Da je nach Gr„œe der Quelle sehr
viele Eintragungen zusammenkommen k„nnen, wurde hierf‡r nicht der Speicher des
Rechners gew€hlt. Wer dort gen‡gend Platz hat, gibt z.B. RAM1_ als Device an.

Zieldirectory: "device+zieldirectory"
z.B.:           win6_q
irgendein Device+Pfadname, dieser aber ohne(!) abschlieœenden "_" Unterstrich
und m„glichst kurz, da sonst ausschweifend "descriptive" Filenamen der Quelle
im Ziel sehr leicht f‡r das QDOS-Limit von 36 Zeichen zu lang werden k„nnen.

Sollte dieser Fall eintreten, erscheint ein entsprechender Hinweis, und die
Frage nach entweder einem neuen Pfad+Filenamen, oder der Markierung des Teils
des angegebenen Pfades, der durch einen danach einzugebenden k‡rzeren Pfad
ersetzt werden soll. Daf‡r muœ die K‡rzung des urspr‡nglichen Namen vom Ende
her erfolgen und der verbleibende Teil muœ mit einem "_" Unterstrich enden,
der als Hinweis an das Programm dient, diese Ersetzung einzuleiten. Beide
Teilpfade gelten jeweils f‡r den und ab dem Anfang des betr. Gesamtnamen.
Waren die Eingaben korrekt, so gilt der Ersatzpfad von da an ohne erneute
Abfrage f‡r alle Dateien des angegebenen Ursprungspfades.

Die Namensersetzung kann bereits vor der eigentlichen Dateien-§bertragung
pr€pariert werden. Mehr dazu weiter unten. Danach bedarf der eigentliche
§bertragungsvorgang keiner weiteren Eingabe mehr.

Das Programm arbeitet unabh€ngig davon, ob die Versuche, im Zielger€t "echte"
Directories anzulegen, erfolg haben, oder nicht. Der Pfad wird Vorspann f‡r die
extrahierten Filenamen, und dabei ist eine wie auch immer geartete "Echtheit"
von Directories vollkommen belanglos:
Der Pfad hat ordnende Funktion und gibt eine M„glichkeit, sonst gleichnamige
schon vorhandene Dateien vor dem §berschreiben zu sch‡tzen.


Referenzenfile: "device+filename"
z.B.:           mdv1_qxlwin_ref
Liste von Filenamen die durch Ersatznamen ver€ndert wurden.

Zu Beginn des Aufrufs X erscheint ggf. die Frage, ob eine schon angelegte
Ersetzungsliste gel„scht werden soll. Dies ist zum einen sinnvoll, wenn sonst
mehrdeutige Namen entst‡nden, und zum andern, wenn sie bereits so lang ist,
daœ der intern verf‡gbare Speicher zu knapp wird: Jeder Ersatzblock ben„tigt
neben der L€nge beider Namen zusammen noch weitere 8 Bytes Platz. Gr„œe des
noch freien Speichers wird angezeigt, wieviel davon belegt werden wird, muœ
zuvor abgesch€tz werden. Notfalls bricht die Procedur ab, wenn die Grenze des
f‡r das Programm selbst erforderlichen Bereichs erreicht ist.

Danach folgt die Frage, ob zuerst Ersatznamen gebildet werden sollen. Wird
sie verneint, beginnt die Dateien‡bertragung sofort und Ersatznamen werden
in deren Verlauf bedarfsweise angefordert. Meist wird es jedoch g‡nstiger
sein, die Ersatzpfade bereits zu anfang anzugeben, da nur dann s€mtliche
zugeh„rigen Dateien dort eingeordnet werden, und dies nicht erst geschieht,
nachdem wom„glich schon einige Dateien unter dem Originalnamen ‡bertragen
wurden.

Andernfalls wird der Filename f‡r die Datei der ge€nderten Namen angefordert
und das Programm durchsucht die zu deisem Zeitpunkt schon vorhandene Directory-
datei. N„tigenfalls wird dann zur Eingabe der zu ersetzenden und der neuen
Pfadanteile aufgefordert.
Alle mit ver€ndertem Namen abzulegenden Dateien werden in der obenganannten
Datei in Form einer Liste notiert, worin neben den neuen auch die urspr‡ng-
lichen Namen verzeichnet sind, sodaœ sp€ter alle Files leicht in die erzeugte
Directory- und Programmstruktur eingeordnet werden k„nnen.
Aufgezeichnet werden in je einer Zeile, je durch Leerzeichen abgeschlossen und
von der Dateienart unabh€ngig:
     Erzeugter Pfad+Name
     Originalpfad+Name oder Index bei fehlendem/verdorbenem Namen
     File-L€nge
     Dataspace
     File-Typ
     Zugriffscode
     Nummer im Directory
     Index des ersten Blocks

F‡r den Fall, daœ auf diese vorbereitende Kontrolle verzichtet wurde, oder
daœ noch infragekommende Namen unbearbeitet geblieben sind, erfolgt die
Abrage w€hrend des Programmablaufs auœerdem bedarfsweise f‡r jeden Filenamen:

Um die automatische §bertragung der ganzen Quelle nicht unn„tig zu verz„gern,
ist die einleitende Frage, ob ‡berhaupt eine  nderung durchgef‡hrt werden soll,
mit anfangs sechs Sekunden Wartezeit versehen. Wurde sie verneint oder innerhalb
der Wartezeit nicht beantwortet, setzt das Programm die §bertragung fort und
ersetzt ungeeignete Namen ohne weitere Abfrage durch die Nummer ihres Block-
Index. Auœerdem reduziert sich die Wartezeit dann solange je um ein Viertel,
bis das Minimum von 0,4 Sekunden erreicht ist. Sie stellt sich wieder auf den
Anfangswert ein, wenn irgendwann zwischendurch eine positive Antwort gegeben
wurde (Taste "Y" oder "J").
In direkter Eingabe kann die Wartezeit durch NO-WAIT stillgelegt, oder durch
Hinschreiben einer Zahl 0..655 und das Wort WAIT auf die entsprechende Dauer
in Sekunden eingestellt werden (s.u.).


Directory:

    XDIR [ qxlsubdir [ device+qxlfilename ]]
zeigt das aktuelle oder an- rsp. eingegebene QXL-Directory an. Mit <ESC> kann
die Procedur abgebrochen werden, und mit <SPACE> wird die Ausgabe angehalten.
"qxlsubdir" kann zur Directoryauswahl angegeben werden. Mit ".." wird diese
Auswahl zur‡ckgenommen, bis dahin gilt sie f‡r alle weiteren Aufrufe von XDIR.
Bei f‡hrendem "_" wird der Name an einen ggf. schon vorhandenen angef‡gt.
Nach ANY.. gilt der Auswahlstring f‡r beliebige Positionen in den jeweiligen
Namen, bei VALID.. nur, wenn er am Anfang des betr. Namen gefunden wird (s.u.).


Einzeldatai:

 nn XTRACT [ device+zieldirectory ]
erwartet eine Filenummer, wie sie z.B. mit XDIR angezeigt wird, extrahiert
diese eine Datei und legt sie im aktuellen rsp anzugebenden Directory ab.
F‡r nn gilt 0 < nn <= NFILES.


    XTRACTŸ pfad[+filename] Ÿ
extrahiert eine namentlich bezeichnete Datei oder, bei abschlieœendem "_",
die entsprechende Dateiengruppe. Nach ANY (s.u.) werden ggf. s€mtliche
Files ‡bernommen, die das angegebene Textst‡ck enthalten. Mit Verlassen
der Procedur wird stets der Zustand VALID (s.u.) hergestellt.
Das Zeichen "Ÿ" (Code 159, Taste CTR/SH/"-") schlieœt den Parameterstring,
ein, innerhalb dessen s€mtliche anderen Zeichen zul€ssig sind.
Den Namen umschlieœende Leerzeichen werden gekappt; wenigstens ein Leerzeichen
nach dem Wort XTRACTŸ ist erforderlich.
Beim UQLX-Emulator werden "/" Schr€gstriche ersetzt (s.u.).


Programm (aus einem Standard-QDOS-Filesystem) als Job ausf‡hren:

    EX-P dev+pfad+filename Ÿ ..{parameterstring}.. Ÿ
entspricht den Job-Aufruf aus dem *Basic, wobei aber das RecoverX-Programm
zum Besitzer des neuen Jobs wird.
Kan€le k„nnen ‡bergeben werden, indem deren Kanal-ID(s) als vollst€ndige
"doppeltgenaue" Zahl(en) zwischen Filenamen und Parameterstring hingeschrieben
werden (was aber bislang nur oberfl€chlich gepr‡ft ist, die String‡bergabe
dagegen ist sicher). Eine "doppeltgenaue" Zahl entsteht dadurch, daœ sie
irgendwo (mindestens) einen "." Punkt oder ein "," Komma enth€lt:
    EX-P jobfilename $0001.0001 Ÿ..parameter..Ÿ
startet einen Job, der das Standardfenster #1 des ersten *Basic benutzt.

Das Zeichen "Ÿ" (Code 159, Taste CTR/SH/"-") schlieœt den Parameterstring,
ein, innerhalb dessen s€mtliche anderen Zeichen zul€ssig sind.

    EW-P
arbeitet gleichartig, jedoch mit R‡ckkehr in das aufrufende Programm erst
nach Beendigung des auszuf‡hrenden Jobs.

    ET-P
legt einen inaktiven Job an.

F‡r Aufrufe ohne Parameter sind EX und EW vorhanden. Alle diese Worte hinter-
lassen den Fehlercode und ggf. die neue Job-ID, die z.B. als sedezimale Zahlen
hingeschrieben werden k„nnen mit
        D$. (Fehlercode) D$. (Job-ID)
Die Jobs werden mit Priorit€tszahl 10 eingerichtet; dieser Wert kann vor dem
EX..-Aufruf ge€ndert werden mit
        ( zahl ) IS X-PRI


Quellenstruktur:

    ?XDATA [ device+qxlfilename ]
zeigt die Strukturdaten des aktuellen rsp. angegebenen Laufwerks an.
    .XDATA
gibt die j‡ngsten Laufwerksdaten ohne erneuten Datentr€gerzugriff an.


Esatznamen:

    MX-FN
ist die von X ausgef‡hrte Procedur zur Festlegung von Ersatznamen, die auch
einzeln aufgerufen werden kann, wenn zuvor z.B. mit FILES sichergestellt wurde,
daœ alle n„tigen Daten vorhanden sind und die Directorydatei ge„ffnet ist.


    FILES
Vorspann in X, XTRACT, XDIR zum bedarfsweisen ¤ffnen der erforderlichen Files
und zum Hereinholen der intern ben„tigten Daten. Kann einzeln aufgerufen werden.


Programmende:

    BYE
Programm verlassen/aufgeben.


Neue Quelle:

    A-CLOSE
schlieœt alle File-Kan€le und sorgt so u.a. daf‡r, daœ bei erneutem Aufruf
von X oder XDIR, etc., die Anforderung zur Namenseingabe aktiviert wird,
was die Arbeit an unterschiedlichen Quellen rsp. Files erm„glicht.


Hilfe:

    H
gibt ein paar Hilfsseiten aus.
Wenn das PIF vorhanden ist, wird danach der Hintergrund wiederhergestellt.


Fenster:

    W
Ver€ndern der Fensterabmessungen rsp. Verschieben des gesamten Fensters:
Verschieben mit den Cursortasten,
Maœe am rechten oder am unteren Rand ver€ndern mit SHIFT und Cursortasten.
Bei Tastenbet€tigung zugleich mit ALT werden die entsprechenden Schritte vergr„œert.
Verkleinern auf Cursorgr„œe mit <SPACE>, beenden mit <ENTER>.
Das PIF ist hierf‡r erforderlich.



Systemparameter:

Zahlen zur Gestalt der Daten-QUELLE (alle anderen Werte werden entsprechend
den aktuellen Verh€ltnissen w€hrend des Programmablaufs selbst€tig ermittelt):

Diese sind s€mtlich mit IS €nderbar, z.B.
                64 IS HED       <enter>

    F/N
Standardl€nge+Z€hlerposten f‡r g‡ltige Filenamen (38).
    C/N
entsprechend nur die Anzahl zul€ssiger Zeichen (36).

    FHD
Standardl€nge eines Fileheaders im Datentr€ger (64).

    HED
Standardl€nge einer Directoryeintragung (64).

    DIRT
Standard-Typencode f‡r Directoryfiles (255).

    B/SEC
Standardl€nge eines Massenspeicher-Sectors (512). Das ist die Einheit,
in der z.B. das DIR des *Basic die Laufwerkskapazit€t hinschreibt.

    DSP
schaltet die Bildschirmausgabe von X und XTRACT. Sie wird stillgelegt mit
        0 IS DSP
und aktiviert durch irgendeine Zahl =/= Null (Vorgabe ist 1).

    MXL
Doppeltgenaue Constante mit der maximalen L€nge f‡r wiederherzustellende Files.
Vorgabe $7f.ffff, entspr. 8M Bytes; €ndern z.B. mit
    100 KB IS MXL               auf 100K Bytes
    50.000 IS MXL               auf 50.000 Bytes
Die ‡bergebene Zahl muœ einen "." Punkt oder ein "," Komma enthalten,
sofern sie nicht in der ersten Form mit KB hingeschrieben wird!

    "/"
Diese Constante enth€lt ein Zeichen, durch das im UQLX-Emulator Schr€gstriche
innerhalb von QDOS-Filenamen ersetzt werden. Vorgabe ist "&"; einstellbar z.B.:
    {- IS "/"
was des Minuszeichen als Eratzzeichen bestimmt.
Die f‡hrende "{" Klammer ist als Signal erforderlich, die Constante heiœt "/",
einschlieœlich der Anf‡hrungszeichen.


Ausgabe-Modifizierung:

Die betr. Worte sind zu verwenden in der Art
        any short xdir
oder:   33 valid xtract
oder:   any x


    SHORT
stellt kurzgefaœte Directory-Ausgabe ein.


    LONG
stellt ausf‡hrliche Directory-Ausgabe ein.


    VALID
schr€nkt die Fileauswahl auf g‡ltige Dateien ein. Als g‡ltig werden solche
mit intaktem Filenamen im Header angesehen, Kriterium daf‡r ist die L€ngen-
eintragung dort im Bereich 1 bis F/N.
VALID gilt f‡r XDIR und f‡r XTRACT sowie X.


    ANY
gibt §bertragung auch von verlorenen Ketten frei, sofern im Fileheader noch
wenigstens der Anfangs-Index intakt scheint. §bertragung solcher Ketten wird
nach M„glichkeit bei der urspr‡nglichen L€nge der verlorenen Datei abgebrochen.
Dies wird jedoch nicht immer gelingen, darum kann Abbruch auch mit der <ESC>-
Taste herbeigef‡hrt werden. ANY gilt f‡r XDIR und f‡r XTRACT sowie X.


Wartezeit:

 nn WAIT
erwartet eine Anzahl Sekunden, auf die dann die Wartezeit zur  nderungsabfrage
bei unbrauchbaren Filenamen eingestellt wird. - Mehr hierzu s.o bei "X".
Beim Start vorgegeben sind 6 Sekunden.

    NO-WAIT
Keine Wartezeit f‡r die  nderungsabfrage.


Weitere Forth-Kommandos:

Aus dem zugrundeliegenden F6 Forth-System k„nnen s€mtliche Aktionen ausge-
f‡hrt werden, die vom *Basic her bekannt sind, und vieles mehr, was sonst
nur mit Hilfe besonderer Programme m„glich ist.
All das ist in F6WORDS_txt als Teil der GF6-Sammlung umfassend beschrieben,
die vom Autor oder aus dem I-net (www.snafu.de/~phpr) bezogen werden kann.
Hier nur kurz ein paar Angaben zu einigen f‡r dieses Programm m„glicherweise
hilfreiche Worte:


    BACKUP device+pfad+quellenfilename device+pfad+zielfilename
Copie der Quellendatei in die Zieldatei anfertigen, ‡berschreibend.

    ?BACKUP
dasselbe mit interaktiver Namenseingabe.


    CHANS
gibt die Namen der zum Zeitpunkt des Aufrufs f‡r RecoverX offenen Kan€le an.
Erfaœt werden Fenster, Files und alles andere, was die QDOS-Trap md.inf zu-
l€œt - wozu, weiœ der Geier (oder Tebby) warum, die Kan€le des Direktzugriffs
NICHT z€hlen. In jedem Falle wird die betr. Kanal-ID hingeschrieben.


    DIR device+directoryname_
zeigt €hnlich dem *Basic-Befehl das mit vollst€ndigem Pfad und abschlieœen-
dem "_" Unterstrich hinzuschreibende Directory an. Dieser Pfad erscheint
je Darstellungsseite nur als §berschrift, es folgen die Dateinamen ohne Pfad,
mit vorangestellter File-L€nge, den Dateientyp und dem Zugriffscode.


    .JOBS
gibt die aktuellen Jobs an, deren Basis- und Startadresse, Job-Nummer, -Tag,
-Name, und die evtl. verbleibende Wartezeit bis zu deren (Re-)Aktivierung.


    NO-SUBS
Falls Pfadnamen-Ersatzstrings angelegt wurden und eigene Forth-Worte neu
definiert werden sollen, m‡ssen(!) die Strings zuerst mit NO-SUBS gel„scht
werden. SAFE! sch‡tzt die Worte dann vor z.B. FORGET oder EMPTY.


    W-SAVE device+jobfilename
Das Programm selbst wird mit all seinen Einstellungen (einschlieœlich Fenster-
Position und -Gr„œe),  nderungen und ggf. neu hinzugef‡gten Worten unter dem
angegebenen Namen gesichert und kann sp€ter in derselben Weise als ausf‡hrbarer
Job benutzt werden.


    VLIST
f‡r Neugierige: "VocabularyLIST". Man schreibt den Namen des zu untersuchenden
Vocabulars hin, dann VLIST und <enter>, um sich alle Worte des betr. Vocabulars
anzeigen zu lassen. Vocabulare erf‡llen im Forth eine auf die Befehle (Worte)
der Programmiersparache bezogene €hnlich n‡tzliche und ‡beraus hilfreiche Funk-
tion wie Directories f‡r Files. Es gibt auch eine dem Suchpfad ("PATH") von
Filesystemen vergleichbare Einrichtung, den "Vocabularstack", der alle Vocabu-
lare enth€lt, in denen der Interpreter dann nach eingegebenen Worten sucht und
sie ggf. ausf‡hrt. Im F6 existieren
        ASSEMBLER, EDITOR, FORTH, FP, HIDDEN, PIF, QDOS, ROOT
Auœerdem f‡r dieses Programm
        RQX

    .VOCS
schreibt den Inhalt des Vocabularstacks hin, alle ‡berhaupt vorhandenen
Vocabularnamen, und eine speziell dem F6 eigene Vocabularverkettung, die zur
Unterst‡tzung objektorientierter Programmierung eingerichtet ist.


» eof »
