Dir Doktor 1.0 T&J du GPA (c) 2003
------------------------------------
Dir Doktor est un logiciel dont le but est de vous aider a reconstruire le
catalogue d'une disquette lorsque ce dernier est endommage ou tout simplement
detruit. Ce genre de mesaventure semble se produire de plus en plus souvent
chez nos amis CPCistes (disquettes hors d'age, lecteurs fatigues, etc...).
L'idee de ce programme est en fait tres ancienne, et a germe dans mon esprit
lors du Byte'98, apres avoir vu Madram passer deux heures a refaire le
catalogue d'une disquette.
L'occasion faisant le laron, mon lecteur 3.1/2 ayant detruit la piste
catalogue d'une disquette de travail de "Citadelle", autre programme made in
GPA, j'ai decide de me mettre au boulot, et ai bricole ce petit programme.
Son utilisation recquerant un minimum de connaissances sur la structure
d'une disquette, je vous incite fortement a lire cette notice afin de tirer
le meilleur partie de Dir Doktor. Une fois son fonctionnement assimile, il
vous fera gagner beaucoup de temps si vous devez reparer un catalogue detruit.
Pour faire des commentaires sur ce programme, signaler des bugs, ou pour me
coucher sur votre testament, une seule adresse E-mail : herve.buggosĂ free.fr !
1) Comment ca marche ?
**********************
Les fichiers presents sur une disquette sont stockes sous la forme de blocs
(un bloc est un groupe de deux secteurs).
Ces blocs sont references dans une partie speciale de la disquette, appelee
catalogue.
Sur une disquette DATA, le catalogue est situe sur les 4 premiers secteurs de
la piste 0 (secteurs &C1 a &C4).
Sur une disquette VENDOR, le catalogue est situe sur les 4 premiers secteurs
de la piste 2 (secteurs &41 a &44).
Lorsque le catalogue est detruit, tout n'est pas perdu, car les blocs
contenant les donnees des fichiers sont toujours presents sur la disquette.
Tout le probleme est de pouvoir les retrouver et les reallouer a leurs
fichiers respectifs.
* Pour les fichiers BASIC et BINAIRE, le CPC nous aide quelque peu, car il
stocke systematiquement dans le premier bloc d'un fichier une en-tete de
128 octets (le fameux header) contenant le nom du fichier, son type, son
adresse de chargement, sa longueur et son adresse d'execution.
Dir Doktor fait une analyse de tous les blocs d'une disquette pour
detecter ces fameuses en-tetes. Munis de ces informations, il determine
la longueur en secteurs de chaque fichier "retrouve", et vous laisse le
loisir d'allouer vous-meme les blocs aux fichiers.
* Pour les fichiers ASCII, c'est bien plus complique, car ils n'ont pas
d'en-tete.
Dir Doktor recherche des chaines de caracteres dans les secteurs de la
disquette (&0A &0D, fin de ligne ASCII et &1A, fin de fichier ASCII).
La recuperation est habituellement bien plus compliquee que pour des
fichiers BASIC ou BINAIRE. Pour ce faire, Dir Doktor a une fonction
permettant de voir a l'ecran le contenu d'un secteur, ce qui permet en
general de verifier si on est en presence d'un fichier ASCII ou pas.
* Toujours plus fort, les fichiers CPM. Ils n'ont pas d'en-tete, et
correspondent a du code machine.
Pour ce type de fichier, Dir Doktor ne fait pas d'analyse, Seule la
visualisation des secteurs de la disquette vous permettra d'allouer
correctement les blocs a ce type de fichier apres plusieurs essais.
C'est bien beau de retrouver le debut d'un fichier, mais comment savoir ou
se trouvent tous ses secteurs ?
Si le fichier n'a pas ete reecrit plusieurs fois, il y a de fortes chances pour
que les blocs composant le fichier soient stockes a la suite de son en-tete.
Si ce n'est pas le cas (le fichier est dit fragmente), il faut savoir que
les blocs sont forcement "plus loin" que l'en-tete du fichier. On ne peut
pas avoir physiquement un bloc dont la position est anterieure au bloc
d'en-tete.
Une fois que les blocs ont ete realloues par vos soins, Dir Doktor vous
permet de regenerer automatiquement les secteurs du catalogue.
Si vous n'avez rien compris, ce n'est pas grave ! Apres l'habituelle
description des differents menus du programme, un exemple simple vous
permettra de vous familiariser avec Dir Doktor.
2) Les menus
************
Dans Dir Doktor, toutes les commandes se lancent avec une lettre ou un chiffre.
Elles sont systematiquement indiquees entre " " dans les menus.
2.1) Le menu general
********************
"D"iscover sectors
------------------
Analyse d'une disquette. Le programme demande d'inserer dans le
lecteur de travail la disquette a etudier, puis affiche secteur par
secteur dans une sorte de carte les informations qu'il a trouvees :
- un carre gris correspond a un secteur vide
- un carre noir correspond a un secteur contenant des donnees
- un 'H' jaune correspond a un secteur d'en-tete de fichier BINAIRE ou
BASIC
- un 'X' gris correspond a un secteur illisible
- un 'A' bleu correspond a un secteur ou une fin de chaine ASCII a ete
detectee
- un 'E' bleu correspond a un secteur ou une fin de fichier ASCII a
ete detectee
Notez bien qu'un 'A' ou un 'E' ne correspondent pas forcement a des
donnees ASCII. Nous en reparlerons dans le menu '"A"llocate block'.
"S"ave map
----------
Permet de sauvegarder une cartographie. Cela permet de ne pas avoir a
refaire la commande "D"iscover a chaque fois que vous voulez esssayer
de nouvelles repartitions de blocs.
Il est possible de sauvegarder jusqu'a 9 cartographies differentes.
Cela permet de 'morceler' le travail de recuperation pour le cas ou
la disquette contient beaucoup de fichiers fragmentes.
Les fichiers de sauvegarde sont toujours enregistres sur la disquette
programme (celle avec Dir Doktor), par sur la disquette a reparer !
Dans la mesure du possible, il est conseille de travailler avec deux
lecteurs. Voyez la fonction '"C"hange working drive' pour plus
d'informations.
"L"oad map
----------
Chargement d'une cartographie precedemment sauvegardee.
"A"llocate blocks
-----------------
Donne acces au sous-menu permettant de definir les blocs des fichiers.
A utiliser apres avoir fait une cartographie de la disquette.
"W"rite directory
-----------------
Ecriture du 'nouveau' catalogue sur la disquette endommagee.
Apres un message de confirmation, Dir Doktor ecrira les quatre
secteurs catalogue sur la disquette de travail.
A noter que pour les fichiers ASCII et CPM, Dir Doktor n'ecrit pas
forcement le nombre exact d'enregistrements.
La methode de calcul est : nombre de blocs * 8
Cela n'a heureusement aucune incidence sur le bon chargement des
fichiers recuperes.
Important ! Si ces secteurs sont illisibles, Dir Doktor ne pourra pas
ecrire dessus. Il faut alors utiliser le programme compagnon WRITECAT
qui permet de rendre ces secteurs lisibles.
"C"hange working drive
----------------------
Bascule le lecteur de travail de A: vers B: et inversement.
Si vous avez deux lecteurs, il est preferable de les utiliser, afin
d'eviter des changement de disquette.
Le premier lecteur contiendra Dir Doktor (Program drive), et
le deuxieme la disquette a analyser/reparer (Working drive).
L'etat des lecteurs est systematiquement rappele sur le menu principal.
Dir Doktor vous donne meme le type de formatage de la derniere
disquette analysee (DATA ou VENDOR).
2.2) Allocation de blocs
************************
On accede a ce menu via la commande "A" du menu general. A travers
ses commandes, vous allez pouvoir associer des blocs aux fichiers
que Dir Doktor a trouve lors de la phase d'analyse de la disquette.
Les fichiers trouves sont affiches un par un sous la fenetre de
cartographie. Pour chaque fichier, on retrouve son adresse de
chargement, sa longueur, et, information tres utile, le nombre de
secteurs qu'il occupe.
Les touches du curseur "HAUT" et "BAS" permettent de choisir le
fichier precedent ou suivant. Les touches "GAUCHE" et "DROITE"
permettent d'aller sur le premier fichier ou le dernier.
Le symbole '#' bleu s'affiche dans la cartographie a la place du
premier secteur du fichier, afin de mieux reperer son emplacement.
"R"estore file
--------------
Alloue automatiquement les blocs necessaires a un fichier. N'allez
pas croire a un miracle, la commande se contente de choisir les
blocs contigus au bloc contenant l'en-tete du fichier.
Si une autre en-tete fait partie de ces blocs, la selection
s'arrete, et un message vous indique le nombre de secteurs restant
a allouer.
Cette commande donne de bons resultats si les fichiers ne sont pas trop
fragmentes.
Un fichier sur lequel la commande "R"estore a ete faite s'affiche
sur un fond jaune.
"U"ndo restore
--------------
Annule la commande precedente. Utile si le nombre de blocs restant
a allouer manuellement est trop important.
"D"isplay blocks
----------------
Permet de visualiser les blocs alloues a un fichier dans la
cartographie. Les blocs concernes sont affiches en bleu.
"S"elect blocks
---------------
Selection manuelle des blocs d'un fichier. La commande vous fait
basculer sur un sous-menu ou il est possible avec un curseur de se
deplacer dans la cartographie (voir sous-menu 2.3) Selectionner un
bloc).
"N"ew file
----------
Ajoute un fichier 'vide' dans la liste des fichiers. Cela permet
de creer un fichier ASCII (que Dir Doktor ne peut trouver par
lui-meme) ou un fichier CPM. La taille de ce fichier sera toujours
de 0, meme si des secteurs lui ont ete alloues.
Le programme demande de saisir d'abord le nom du fichier, puis son
extension.
"C"hange filemane
-----------------
Modifier le nom d'un fichier existant. Le but est d'eviter de se
retrouver avec des doublons dans la liste. En effet, on peut avoir
plusieurs fois le meme nom de fichier dans des en-tetes differentes.
Comment est-ce possible ? Eh bien, lorsque vous enregistrez un
fichier deux fois de suite avec le meme nom, l'AMSDOS renomme le
premier fichier en .BAK quand vous sauvez le deuxieme. Mais en fait,
il se contente de changer le nom dans le catalogue de la disquette,
et pas dans l'en-tete de l'ancien fichier !
Si vous ne changez pas le nom d'un fichier apparaissant plusieurs
fois sur une cartographie, vous vous retrouverez avec un seul
fichier dont la taille est inexacte. Il sera toujours chargeable,
mais vous aurez perdu sa 'deuxieme' version. Bref, a eviter.
"M"enu
------
Retour au menu principal
2.3) Selection manuelle de blocs
********************************
Ce sous-menu vous donne la possibilite d'allouer des blocs a un
fichier manuellement. C'est le seul moyen qui permet de regenerer
les fichiers ASCII et CPM.
Vous deplacez sur la cartographie un pointeur (symbolise par un
losange gris).
"COPY" Select block
-------------------
Allocation d'un bloc au fichier courant
"ENTER"
-------
Annulation de l'allocation
"V"iew sector datas
-------------------
Affiche le contenu du secteur courant sous la forme de deux
tableaux de 256 octets, en hexadecimal et ASCII. Les caracteres
inferieurs a 32 sont remplaces par des espaces.
Cette fonction permet de verifier si un secteur correspond a un
fichier ASCII, par exemple.
"F9"
----
Retour au menu 'Allocation de blocs'
3) Conseils d'utilisation
*************************
Toujours travailler avec une sauvegarde de votre disquette endommagee. Meme
si Dir Doktor ne pourra pas faire de degats, cela vous permettra de verifier
que seul le catalogue est abime.
Lorsque vous faites une reparation, commencez par essayer de recuperer les
fichiers avec l'option "R"estore file. Sauvegardez votre travail avant de
generer le catalogue, puis verifiez que les fichiers sont lisibles et corrects.
Ensuite, il ne vous reste plus (!) qu'a essayer de recuperer les fichiers
fragmentes.
Si un fichier a un nombre impair de secteurs, il est probable que le secteur
suivant le dernier secteur soit vide. On peut reperer ainsi facilement des
fins de fichiers.
4) Limitations de Dir Doktor
*****************************
Dir Doktor ne permet pas de 'reparer' un secteur defectueux. Il est conseille
d'utiliser dans ce cas des logiciels de copie integrale style Discology.
Le programme ne reconnait pas les disquettes avec des formats non standards.
On ne peut travailler qu'avec des disquettes DATA 40 pistes ou VENDOR 40 pistes.
Cela correspond en general a des 'disquettes de travail', les plus enclins a
s'autodetruire !
Pour les amateurs de formats speciaux, il est possible qu'a moyen terme, une
autre version de Dir Doktor permettant de travailler sur plus de secteurs et
pistes sorte. La seule contrainte est le manque de lisibilite en mode 2 d'une
cartographie de disquette...
Les menus de Dir Doktor sont en anglais... Ce genre de programme n'existant
pas a ce jour, je me suis dis que nos amis d'Outre-Rhin et d'Outre-Manche ne
seraient pas mecontents de pouvoir essayer de s'en servir.
5) Un exemple ?
***************
Afin de mieux vous aider a comprendre comment utiliser Dir Doktor, rien de
tel qu'un exemple concret !
* Formatez une disquette en DATA. Cette disquette sera appelee EXEMPLE.
* Chargez en memoire le programme "EXAMPLE.BAS", puis lancez le sur la
disquette EXEMPLE.
-" Ce programme va creer sur la disquette les fichiers suivants :
ROMBASIC.BIN
GPA.TXT
SCREEN.BIN
VECTORS.BIN
Les fichiers ROMBASIC.BIN, GPA.TXT et VECTORS.BIN sont enregistres de
facon contigue (les blocs de chaque fichiers se suivent a la
queue-leu-leu).
Le fichier SCREEN.BIN est enregistre de facon a ce qu'il soit fragmente
en deux parties.
* Chargez Dir Doktor, et faites une cartographie de la disquette EXEMPLE a
l'aide de la commande "D"iscover.
-" Dir Doktor va normalement retrouver 3 en-tetes.
1 - Piste 0 secteur &C5
2 - Piste 4 secteur &C7
3 - Piste 7 secteur &C6
* Appuyer sur "A"llocate pour associer des blocs a ces entetes.
1er fichier : ROMBASE.BIN - 33 secteurs
Appuyer sur "R"estore
-" 34 secteurs contigus sont alloues.
Faire "fleche vers le bas" pour selectionner le 2eme fichier.
2eme fichier : SCREEN.BIN - 33 secteurs
Appuyer sur "R"estore
-" 26 secteurs contigus sont alloues. Il manque 7 secteurs.
Faire "fleche vers le bas" pour selectionner le 3eme fichier.
3eme fichier : VECTORS.BIN - 4 secteurs
Appuyer sur "R"estore
-" 4 secteurs sont alloues.
En regardant la cartographie, on s'apercoit qu'a la suite du
fichier VECTORS.BIN, il y a 7 secteurs non alloues. Cela semble
correspondre a ceux qui manquent au fichier SCREEN.BIN.
Faire "fleche vers le haut" pour selectionner le 2eme fichier.
Appuyer sur "S"elect block.
Deplacer le curseur sur le premier secteur libre en piste 8 et
appuyer sur la touche "Copy" pour selectionner les blocs a
associer au fichier.
Appuyer sur "F9" pour revenir au menu Allocation de fichiers.
Pour verifier la bonne selection des blocs, appuyer sur la
touche "V"iew blocks.
* Il nous reste maintenant a retrouver le fichier ASCII GPA.TXT. Dir Doktor
n'a evidemment pas retrouve son en-tete (il n'y en a pas !), mais en
regardant la cartographie, on trouve une zone de 3 secteurs consideres
par Dir Doktor comme ASCII.
Premiere etape, il faut creer le nouveau fichier.
A partir du menu "A"llocate blocks.
Appuyer sur "N"ew file.
Filename : taper GPA puis appuyer sur "ENTER"
Extension : taper TXT puis appuyer sur "ENTER"
Si tout s'est bien passe, en faisant defiler les fichiers avec les touches
"haut" et "bas" du curseur, vous devez trouver un 4eme fichier dont la
longueur est &0000 et le nombre de secteurs &0.
Appuyer sur "S"elect blocks.
Allouer au fichier les blocs 19 et 20 (piste 4 secteurs &C3 a &C6).
Faire "F9" pour revenir au menu precedent.
Appuyer sur "M" pour revenir au menu general.
Il faut maintenant sauvegarder votre travail, des fois que vous ayez fait
des erreurs, et qu'il faille proceder a des corrections apres avoir ecrit le
catalogue.
A partir du menu principal.
Appuyer sur "S"ave map.
Choisir le 1er fichier de sauvegarde en appuyant sur la touche "0".
Derniere etape, la generation du catalogue !
A partir du menu principal.
Appuyer sur "W"rite directory.
Une fois le catalogue genere, faire un simple CAT de la disquette.
On doit retrouver les fichiers avec les bonnes tailles.
Le seul fichier que l'on puisse veritablement verifier, c'est
l'ecran de presentation.
Charger le fichier SCREEN.BIN en &C000. Normalement, vous devez
voir du texte en mode 1 s'afficher... Si tel n'est pas le cas,
vous avez fait une erreur de selection !