{"id":3737,"date":"2020-09-25T15:50:23","date_gmt":"2020-09-25T13:50:23","guid":{"rendered":"https:\/\/ceo.oric.org\/?p=3737"},"modified":"2020-09-25T15:50:23","modified_gmt":"2020-09-25T13:50:23","slug":"undel","status":"publish","type":"post","link":"https:\/\/oric.bqtt.net\/index.php\/2020\/09\/25\/undel\/","title":{"rendered":"UNDEL"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\"><strong>Utilitaire Sedoric pour r\u00e9cup\u00e9rer des fichiers apr\u00e8s un DEL<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/oric.bqtt.net\/wp-content\/uploads\/2020\/09\/Undel-EcranAccueil.png\" alt=\"\" class=\"wp-image-3738\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Catastrophe&nbsp;: Tout votre travail &nbsp;est perdu \u00e0 cause d&#8217;un DEL malencontreux&nbsp;! Et vous \u00e9tiez tellement dans l&#8217;action que, bien s\u00fbr, vous n&#8217;avez pas sauvegard\u00e9 depuis un bon moment. Le pi\u00e8ge principal (mais pas que) est d\u00fb \u00e0 la commande DEL&#8221;*.*&#8221; pour laquelle il faut confirmer par Y ou N si chacun des fichiers est \u00e0 supprimer ou pas. Une erreur est vite arriv\u00e9e\u2026<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pas de panique rien n&#8217;est perdu, mais de gr\u00e2ce n&#8217;\u00e9crivez plus rien sur cette disquette\u00a0! Et si possible, prot\u00e9gez-l\u00e0 en \u00e9criture, faites-en une copie et op\u00e9rez sur la copie.<\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\"><strong>Petit historique<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;envie de faire cet utilitaire m&#8217;est venue en 1995, en \u00e9crivant l&#8217;annexe n\u00b0 9\u00a0: &#8220;Que se passe-t-il lors d\u2019un DEL ?&#8221;, \u00e0 la page 511 de &#8220;Sedoric 3.0 \u00e0 nu&#8221;. Et depuis lors, ce projet n&#8217;a pas boug\u00e9 de ma liste &#8220;Tout doux&#8221;\u00a0! Au fil du temps, quelques Oriciens se sont adress\u00e9s \u00e0 moi pour r\u00e9cup\u00e9rer leur travail effac\u00e9 par erreur, ce qui a renforc\u00e9 ma motivation. Mais c&#8217;est le corona qui m&#8217;a fait passer \u00e0 l&#8217;acte\u2026<\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\"><strong>Quelques pr\u00e9cisions<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Le programme UNDEL est \u00e9crit en Basic 1.1 et utilise plusieurs instructions Sedoric sans \u00e9quivalent dans les autres DOS. Par cons\u00e9quent, il ne tournera que sur un syst\u00e8me \u00e9quip\u00e9 d&#8217;une Rom 1.1 et sous Sedoric. Il s&#8217;agit typiquement d&#8217;une configuration Atmos + Microdisc + Sedoric. UNDEL fonctionne avec tout syst\u00e8me \u00e9mulant cette configuration (Euphoric et Oricutron test\u00e9s). Il est inutile de l&#8217;essayer avec un Oric-1 ou avec un Telestrat sous Hyper-Basic. Les instructions Sedoric PMAP, SMAP, CRESEC, FRESEC, etc. sont incontournables et si vous voulez vous en passer, il faut r\u00e9\u00e9crire leur \u00e9quivalent en code machine.<\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\"><strong>Base technique du probl\u00e8me<\/strong><\/h4>\n\n\n\n<h5 class=\"has-text-align-center wp-block-heading\">Que se passe-t-il lorsqu&#8217;on \u00e9crit un fichier avec SAVE*, ESAVE ou COPY*\u00a0?\u00a0:<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Dans l&#8217;ordre\u00a0: Un descripteur est cr\u00e9\u00e9, un ou plusieurs secteurs du fichier proprement dit sont enregistr\u00e9s \u00e0 la suite, les 2 secteurs de bitmap sont ajust\u00e9s (plusieurs secteurs sont marqu\u00e9s occup\u00e9s, le nombre de fichiers pr\u00e9sents sur la disquette est incr\u00e9ment\u00e9, le nombre de secteurs libres est r\u00e9duit) enfin une entr\u00e9e est ajout\u00e9e au directory et l&#8217;offset de la prochaine entr\u00e9e libre est ajust\u00e9. <em>Il est \u00e0 noter que le descripteur est toujours \u00e9crit sur le 1<sup>e<\/sup> secteur libre \u00e0 partir du d\u00e9but de la bitmap<\/em>. Le ou les secteurs du programme proprement dit sont \u00e9crits, dans l&#8217;ordre, sur les secteurs libres suivants, qui ne sont pas forc\u00e9ment contigus lorsque la disquette a d\u00e9j\u00e0 subi plusieurs \u00e9critures\u00a0\/\u00a0suppressions.<\/p>\n\n\n\n<h5 class=\"has-text-align-center wp-block-heading\">Que se passe-t-il si on supprime un fichier avec DEL, DELBAK ou DESTROY\u00a0?\u00a0:<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsqu&#8217;il efface un fichier, SEDORIC ne modifie en fait que les secteurs de bitmap et de directory.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;entr\u00e9e du directory est remplac\u00e9e par des #00 et l&#8217;offset de la prochaine entr\u00e9e libre est r\u00e9ajust\u00e9. Les 2 secteurs de bitmap sont actualis\u00e9s (plusieurs secteurs sont lib\u00e9r\u00e9s, le nombre de fichiers pr\u00e9sents sur la disquette est r\u00e9duit, le nombre de secteurs libres est augment\u00e9). <em>MAIS ni le secteur de descripteur, ni le ou les secteurs du fichier proprement dit ne sont modifi\u00e9s<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ils restent intacts et sont seulement marqu\u00e9s &#8220;libres&#8221; dans la bitmap. Il n&#8217;y a donc aucun probl\u00e8me tant qu&#8217;un nouveau fichier n&#8217;est pas \u00e9crit dans ces secteurs lib\u00e9r\u00e9s (et ce sera malheureusement en priorit\u00e9 sur ceux-l\u00e0). Comme vous pouvez l&#8217;imaginer, il est techniquement possible de r\u00e9cup\u00e9rer le fichier supprim\u00e9 en restaurant l&#8217;entr\u00e9e de directory, les secteurs de bitmap, quelques liens, etc.<\/p>\n\n\n\n<h5 class=\"has-text-align-center wp-block-heading\">Et lorsque plusieurs fichiers ont \u00e9t\u00e9 supprim\u00e9s\u00a0?\u00a0:<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Pas de probl\u00e8me tant qu&#8217;aucune \u00e9criture n&#8217;est op\u00e9r\u00e9e sur la disquette. Il faut relancer UNDEL plusieurs fois, jusqu&#8217;\u00e0 ce qu&#8217;il ne trouve plus rien. Pour mes tests, j&#8217;ai effac\u00e9 une disquette 80 pistes de 17 secteurs, double face qui \u00e9tait bourr\u00e9e de fichiers de toutes sortes avec un DEL&#8221;*.*&#8221; et j&#8217;ai pu tout r\u00e9cup\u00e9rer avec UNDEL\u00a0!<\/p>\n\n\n\n<h5 class=\"has-text-align-center wp-block-heading\">Et si malheureusement une \u00e9criture a \u00e9t\u00e9 faite ?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">L\u00e0, il est plus hasardeux de restaurer sp\u00e9cifiquement le fichier qui vous int\u00e9resse. Mais ce n&#8217;est pas forc\u00e9ment perdu si celui-ci est mapp\u00e9 assez loin dans la bitmap. La localisation des fichiers dans la bitmap n&#8217;a rien \u00e0 voir avec l&#8217;ordre des suppressions. En outre, apr\u00e8s plusieurs \u00e9critures\u00a0\/\u00a0suppressions, les fichiers sont fragment\u00e9s et la disquette est truff\u00e9e de r\u00e9sidus. Ceci implique un algorithme de restauration assez complexe. Mais le miracle est possible\u00a0!<\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\"><strong>Le programme UNDEL pour Sedoric<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Sedoric a subi quelques modifications au fil du temps (par exemple ajout d&#8217;un 2e secteur de bitmap pour passer aux disquettes 3.5&#8243;, ajout d&#8217;un syst\u00e8me de sous-directory, etc.). Dans un premier temps, je me suis concentr\u00e9 sur la version 3.0 de Sedoric, parce que c&#8217;est celle que je connais le mieux pour l&#8217;avoir d\u00e9piaut\u00e9e en d\u00e9tail. Mais quelques v\u00e9rifications \u00e0 post\u00e9riori montrent que UNDEL marche avec les disquettes de toutes les versions de Sedoric. Il est m\u00eame possible de r\u00e9cup\u00e9rer des fichiers (simples ou merg\u00e9s) de disquettes Stratsed car la structure de celles-ci est tr\u00e8s proche de celle des disquettes Sedoric.<\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\"><strong>Structure d&#8217;un fichier Sedoric<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Du plus simple, qui est un fichier &#8220;ordinaire&#8221; occupant moins de 123 secteurs, au plus compliqu\u00e9, form\u00e9s de plusieurs fichiers merg\u00e9s, il est possible de dresser le sch\u00e9ma g\u00e9n\u00e9ral suivant\u00a0:<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Un fichier &#8220;ordinaire&#8221;\u00a0est compos\u00e9 comme suit\u00a0:<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">-Le descripteur principal (obligatoire) du fichier, qui liste le ou les secteurs qu&#8217;il faut charger pour mettre le fichier en place dans la Ram. Si n\u00e9cessaire, un lien vers un \u00e9ventuel descripteur secondaire est renseign\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Le ou les secteurs du fichier proprement dit, list\u00e9s dans ce descripteur principal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Un descripteur secondaire, s&#8217;il reste des secteurs \u00e0 lister dont les coordonn\u00e9es n&#8217;ont pas pu \u00eatre ins\u00e9r\u00e9es dans le ou les descripteurs pr\u00e9c\u00e9dents, faute de place.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Apr\u00e8s ce descripteur secondaire, se trouvent les secteurs list\u00e9s dans ce descripteur.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Si cela ne suffit pas, un autre descripteur secondaire est ajout\u00e9, etc.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Chaque descripteur est reli\u00e9 au suivant par un lien. Le lien du dernier descripteur du fichier est mis \u00e0 z\u00e9ro pour indiquer qu&#8217;il n&#8217;y a plus rien apr\u00e8s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Chacun de tous ces \u00e9l\u00e9ments (descripteurs et secteurs du fichier proprement dit) est \u00e9crit sur le prochain secteur libre. Apr\u00e8s plusieurs \u00e9critures \/ suppressions, la disquette est parsem\u00e9e de &#8220;trous&#8221; (secteurs libres isol\u00e9s). Mais les divers morceaux d&#8217;un fichier sont toujours \u00e9crits dans le bon ordre, m\u00eame s&#8217;ils ne sont pas forc\u00e9ment contigus. -Les informations propres \u00e0 un fichier sont donn\u00e9es dans l&#8217;ent\u00eate de son descripteur principal. Ce sont\u00a0: Le type de fichier, les adresses de d\u00e9but, de fin et d&#8217;ex\u00e9cution, le nombre total de secteurs \u00e0 charger pour mettre l&#8217;ensemble de ce fichier en place. Cet ent\u00eate est suivi par la liste (ou le d\u00e9but de la liste) des secteurs \u00e0 charger. Les descripteurs secondaires ne comportent que le lien vers le descripteur suivant et la suite de la liste des secteurs \u00e0 charger.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Les fichiers &#8220;merg\u00e9s&#8221; sont form\u00e9s comme suit\u00a0:<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Plusieurs fichiers &#8220;ordinaires&#8221; peuvent \u00eatre rassembl\u00e9s sous un m\u00eame nom, on dit alors qu&#8217;ils sont &#8220;merg\u00e9s&#8221;, ce qui est impropre car &#8220;merged&#8221; signifie &#8220;fusionn\u00e9s&#8221;. Or les fichiers restent intacts et sont seulement juxtapos\u00e9s. Ils sont mis \u00e0 la queue-leu-leu, sans \u00eatre modifi\u00e9s, sauf les liens entre les diff\u00e9rents descripteurs qui sont cha\u00een\u00e9s\u00a0: Le dernier lien de chaque fichier &#8220;ordinaire&#8221; (normalement mis \u00e0 z\u00e9ro) est remplac\u00e9 par l&#8217;adresse du descripteur principal du fichier merg\u00e9 suivant. Et ainsi de suite, jusqu&#8217;au dernier descripteur dont le lien est bien s\u00fbr maintenu \u00e0 z\u00e9ro. Aucune autre modification n&#8217;est effectu\u00e9e. La taille globale de l&#8217;ensemble ne figure qu&#8217;au niveau de l&#8217;entr\u00e9e de directory correspondant \u00e0 cet ensemble de fichiers merg\u00e9s. Seul le nom du premier fichier est retenu et figure dans cette entr\u00e9e. Les secteurs de ces diff\u00e9rents fichiers, sont \u00e9crits \u00e0 la queue-le-leu et dans le bon ordre, mais ne sont pas forc\u00e9ment contigus.<\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\"><strong>Et un peu plus de d\u00e9tails sur ce qui se passe lors d&#8217;un DEL<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">L&#8217;information cruciale est qu&#8217;apr\u00e8s un DEL, le ou les &#8220;blocs&#8221; (descripteur + secteurs \u00e0 charger) restent en place sans la moindre modification. Seuls la bitmap et le directory sont affect\u00e9s&nbsp;: Toute trace de l&#8217;existence du ou des fichiers est compl\u00e9tement effac\u00e9e. De plus, l&#8217;ordre des entr\u00e9es est remani\u00e9 pour r\u00e9cup\u00e9rer de la place, mais pas toujours compl\u00e8tement remani\u00e9, car il reste des trous. Je n&#8217;entre pas dans l&#8217;explication de ce ph\u00e9nom\u00e8ne, sans int\u00e9r\u00eat pour le propos d&#8217;aujourd&#8217;hui.<\/p>\n\n\n\n<p class=\"has-vivid-cyan-blue-color has-text-color wp-block-paragraph\"><em>Alors quel est le bilan de la situation&nbsp;?<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">1) Dans la bitmap, tous les secteurs correspondant au fichier supprim\u00e9 (descripteurs et secteurs) ont \u00e9t\u00e9 marqu\u00e9s libres (r\u00e9utilisables), bien que les secteurs en question soient toujours en place. <em>Il faut noter que les fichiers effac\u00e9s ne sont pas r\u00e9cup\u00e9rables dans l&#8217;ordre de leur effacement, mais dans l&#8217;ordre de leur repr\u00e9sentation dans la bitmap.<\/em> La prochaine \u00e9criture sur la disquette va \u00e9craser en priorit\u00e9 les secteurs lib\u00e9r\u00e9s qui figurent \u00e0 partir du d\u00e9but de la bitmap et ce ne sont pas forc\u00e9ment ceux lib\u00e9r\u00e9s par le dernier DEL. Donc, avec un peu de chance, il est PEUT-ETRE encore possible de r\u00e9cup\u00e9rer le fichier qui vous int\u00e9resse, m\u00eame si une \u00e9criture a eu lieu apr\u00e8s le DEL. Dans la bitmap encore, le nombre de secteurs libres est bien s\u00fbr augment\u00e9 du nombre de secteurs lib\u00e9r\u00e9s, tandis que le nombre de fichiers est d\u00e9cr\u00e9ment\u00e9. Le nombre de secteurs de directory peut \u00e9ventuellement avoir \u00e9t\u00e9 r\u00e9duit. Heureusement, toutes ces informations sont r\u00e9cup\u00e9rables.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">2) Dans le directory, l&#8217;entr\u00e9e correspondant au fichier supprim\u00e9 a tout simplement \u00e9t\u00e9 effac\u00e9e, cr\u00e9ant ainsi une entr\u00e9e libre. Comme d\u00e9j\u00e0 indiqu\u00e9, les entr\u00e9es restantes ont \u00e9ventuellement et partiellement \u00e9t\u00e9 r\u00e9organis\u00e9es pour gagner de la place. Une entr\u00e9e supprim\u00e9e, cela veut dire que les informations&nbsp; suivantes ont disparu&nbsp;:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Le nom et l&#8217;extension du fichier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Les coordonn\u00e9es piste et secteur du descripteur principal du fichier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Le nombre total de secteurs occup\u00e9s par le fichier (ou les fichiers s&#8217;il s&#8217;agit de fichiers merg\u00e9s). -L&#8217;attribut de protection du fichier.<\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\"><strong>Strat\u00e9gie utilis\u00e9e par UNDEL<\/strong><\/h4>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Phase\u00a01\u00a0: Retrouver le premier descripteur du fichier<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Coup de chance, le premier secteur libre de la disquette est forc\u00e9ment un descripteur principal. Si ce n&#8217;est pas le cas, soit aucun DEL n&#8217;a \u00e9t\u00e9 effectu\u00e9, soit une \u00e9criture est intervenue apr\u00e8s le dernier DEL. On a \u00e7a par exemple lorsqu&#8217;un fichier est \u00e9crit et ne surcharge que partiellement un fichier pr\u00e9c\u00e9demment d\u00e9truit et si celui-ci \u00e9tait plus gros. Il reste des secteurs &#8220;libres&#8221; qui ont toutes les chances de ne pas \u00eatre un descripteur. UNDEL sait g\u00e9rer cette situation de mani\u00e8re appropri\u00e9e. A l&#8217;issue de cette phase, ce premier descripteur est restaur\u00e9, ainsi que les secteurs qui y sont list\u00e9s. Mais le descripteur principal trouv\u00e9 est-il bien celui du fichier que nous voudrions r\u00e9cup\u00e9rer\u00a0? Si plusieurs DEL ont \u00e9t\u00e9 effectu\u00e9s et que le descripteur qui nous importe ne correspond pas au premier secteur libre, il faudra recommencer l&#8217;op\u00e9ration de sauvetage plusieurs fois, jusqu&#8217;\u00e0 ce que le bon soit trouv\u00e9 et restaur\u00e9.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Phase\u00a02\u00a0: Examiner le lien vers le descripteur suivant<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Si ce lien est nul, il n&#8217;y a aucun descripteur suivant, notamment pas de descripteur de fichier merg\u00e9. Il ne reste plus qu&#8217;\u00e0 finaliser l&#8217;entr\u00e9e de directory et la bitmap (voir plus bas &#8220;Phase 4&#8221;). Au contraire, si ce lien n&#8217;est pas nul, il indique la localisation piste\/secteur du descripteur suivant, qui peut \u00eatre soit un descripteur secondaire du m\u00eame fichier, soit le descripteur principal d&#8217;un fichier merg\u00e9. Comment d\u00e9partager ces 2 hypoth\u00e8ses\u00a0?<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Phase\u00a03\u00a0: Examiner s&#8217;il reste des secteurs \u00e0 charger pour le fichier en cours<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Le descripteur principal nous a indiqu\u00e9 le nombre total de secteur \u00e0 charger pour mettre en place le fichier en cours. Sachant qu&#8217;un descripteur principal peut lister les coordonn\u00e9es de 122 secteurs et un descripteur secondaire celle de 127 secteurs, il est facile de calculer s&#8217;il reste des secteurs qui ne sont pas encore list\u00e9s. Si c&#8217;est le cas, le descripteur trouv\u00e9 est un descripteur secondaire. Sinon le descripteur trouv\u00e9 est le descripteur principal d&#8217;un fichier merg\u00e9. En r\u00e9sum\u00e9, il n&#8217;y a que 3 possibilit\u00e9s\u00a0: Soit c&#8217;est fini, soit il y a encore un descripteur secondaire, soit il y encore un descripteur principal de fichier merg\u00e9. Le programme rebouclera au niveau voulu selon le cas. Le descripteur trouv\u00e9 est restaur\u00e9, ainsi que les secteurs qui y sont list\u00e9s. Apr\u00e8s plusieurs \u00e9ventuelles r\u00e9it\u00e9rations et quelle que soit sa complexit\u00e9, le fichier proprement dit est enti\u00e8rement restaur\u00e9. Il ne reste plus qu&#8217;\u00e0 finaliser l&#8217;entr\u00e9e de directory et la bitmap.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Phase\u00a04\u00a0: Cr\u00e9er une entr\u00e9e de directory pour ce fichier<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsque le dernier descripteur du fichier ainsi que les secteurs correspondants ont \u00e9t\u00e9 restaur\u00e9s, il faut cr\u00e9er une entr\u00e9e dans le directory. Partant du 1er secteur de directory (le secteur 4 de la piste 20) on recherche la premi\u00e8re entr\u00e9e libre. S&#8217;il n&#8217;y en a pas, on passe au secteur de directory suivant, etc. Si on atteint le dernier secteur de directory sans avoir trouv\u00e9 d&#8217;entr\u00e9e libre, il faudra cr\u00e9er un nouveau secteur de Directory dont la premi\u00e8re entr\u00e9e sera l&#8217;entr\u00e9e libre voulue. On \u00e9crit alors dans l&#8217;entr\u00e9e libre les informations suivantes&nbsp;:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Le nom et l&#8217;extension du fichier. Par d\u00e9faut ce sera SANSNOM.COM, ce qui impliquera de renommer le fichier avant de relancer UNDEL pour en restaurer un autre.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Les coordonn\u00e9es piste et secteur du descripteur principal du fichier. Ces donn\u00e9es ont \u00e9t\u00e9 trouv\u00e9es lors de la phase 1.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Le nombre total de secteurs occup\u00e9s par le fichier. C&#8217;est la somme du nombre de secteurs \u00e0 charger pour mettre en place le fichier (simple ou merg\u00e9) et du nombre total de descripteurs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-L&#8217;attribut de protection du fichier. Par d\u00e9faut, il sera positionn\u00e9 sur PROT (qui ne g\u00eane pas si on veut renommer le fichier\u00a0!). Finalement l&#8217;adresse de la prochaine entr\u00e9e libre est mise \u00e0 jour (ou \u00e0 z\u00e9ro si on vient d&#8217;\u00e9crire sur la derni\u00e8re entr\u00e9e libre du secteur de directory).<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Phase 5\u00a0: Finaliser la bitmap<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">La bitmap proprement dite (repr\u00e9sentation des secteurs en fonction de leur occupation \/ disponibilit\u00e9) a \u00e9t\u00e9 mise \u00e0 jour au fur et \u00e0 mesure de l&#8217;avanc\u00e9e des phases pr\u00e9c\u00e9dentes. Reste \u00e0 finaliser l&#8217;ent\u00eate ou plut\u00f4t les deux ent\u00eates, car la bitmap occupe deux secteurs. Les donn\u00e9es \u00e0 mettre \u00e0 jour se r\u00e9duisent \u00e0&nbsp;:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Le nombre de fichiers (ancienne valeur plus un)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">-Le nombre de secteurs de directory (peut \u00e9ventuellement avoir \u00e9t\u00e9 augment\u00e9). Le nombre de secteurs libres a \u00e9t\u00e9 mis \u00e0 jour au fur et \u00e0 mesure des phases pr\u00e9c\u00e9dentes et il n&#8217;y a pas \u00e0 s&#8217;en occuper.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><strong>Phase 6\u00a0: Renommer le fichier restaur\u00e9<\/strong><\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">La r\u00e9cup\u00e9ration du fichier est termin\u00e9e. L&#8217;affichage des caract\u00e9ristiques de ce fichier (type de fichier, adresses de d\u00e9but, de fin, d&#8217;ex\u00e9cution et nombre de secteurs occup\u00e9s) vous permettra de comprendre de quel fichier il s&#8217;agit et de le renommer correctement. S&#8217;il ne s&#8217;agit pas du fichier que vous vouliez ou si vous en avez plusieurs \u00e0 r\u00e9cup\u00e9rer, il suffit de relancer UNDEL (apr\u00e8s avoir renomm\u00e9 SANSNOM.COM).<\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\"><strong>Et si une \u00e9criture a eu lieu apr\u00e8s le ou les DEL\u00a0?<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Je pensais au d\u00e9part que l&#8217;absence d&#8217;\u00e9criture apr\u00e8s la suppression \u00e9tait un imp\u00e9ratif absolu. Mais comme je l&#8217;ai d\u00e9j\u00e0 indiqu\u00e9, les fichiers effac\u00e9s ne sont pas r\u00e9cup\u00e9rable dans l&#8217;ordre de leur effacement, mais dans l&#8217;ordre de leur repr\u00e9sentation dans la bitmap. D&#8217;autre part, les \u00e9critures se font \u00e0 partir du d\u00e9but de la bitmap. Il est donc possible de r\u00e9cup\u00e9rer un fichier effac\u00e9, s&#8217;il n&#8217;est pas en t\u00eate de bitmap. Apr\u00e8s la suppression de plusieurs fichiers, il est possible qu&#8217;il existe encore plusieurs fichiers r\u00e9cup\u00e9rables, m\u00eame s&#8217;il y a eu \u00e9crasement de l&#8217;un d&#8217;entre eux apr\u00e8s une \u00e9criture malheureuse\u00a0! Apr\u00e8s avoir re\u00e7u un avertissement d&#8217;\u00e9chec, vous avez la possibilit\u00e9 de demander \u00e0 UNDEL de rechercher s&#8217;il n&#8217;existe pas encore quelque chose \u00e0 restaurer sur la disquette. Les nombreux essais, que j&#8217;ai effectu\u00e9s, montrent que \u00e7a marche assez bien.<\/p>\n\n\n\n<h4 class=\"has-text-align-center wp-block-heading\"><strong>Conclusion<\/strong><\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Que ce soit avec un Atmos r\u00e9el ou avec un \u00e9mulateur (Euphoric et Oricutron ont \u00e9t\u00e9 test\u00e9s), vous pouvez sans crainte r\u00e9cup\u00e9rer tous les fichiers effac\u00e9s par erreur. Et m\u00eame apr\u00e8s une \u00e9criture, il reste une chance que tout ne soit pas perdu. Le programme UNDEL est solide et je suis s\u00fbr qu&#8217;il vous donnera enti\u00e8re satisfaction. Bien que je n&#8217;aie jamais rencontr\u00e9 de probl\u00e8me au cours de mes tr\u00e8s nombreux essais avec Sedoric 3.0, je vous conseille quand m\u00eame de prot\u00e9ger votre disquette originale et de travailler sur une copie, on ne sait jamais\u00a0! Le zip qui accompagne cet article contient non seulement les fichiers Undel.dsk et Undel.tap, mais aussi des fichiers .txt tr\u00e8s comment\u00e9s, \u00a0au cas o\u00f9 vous voudriez retoucher le programme\u2026<\/p>\n\n\n\n<div class=\"wp-block-file\"><a href=\"https:\/\/oric.bqtt.net\/wp-content\/uploads\/2020\/09\/Undel.zip\">Undel.zip<\/a><a href=\"https:\/\/oric.bqtt.net\/wp-content\/uploads\/2020\/09\/Undel.zip\" class=\"wp-block-file__button\" download>T\u00e9l\u00e9charger<\/a><\/div>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Que ce soit avec un Atmos r\u00e9el ou avec un \u00e9mulateur (Euphoric et Oricutron ont \u00e9t\u00e9 test\u00e9s), vous pouvez sans crainte r\u00e9cup\u00e9rer tous les fichiers effac\u00e9s par erreur. Et m\u00eame apr\u00e8s une \u00e9criture, il reste une chance que tout ne soit pas perdu.<\/p>\n","protected":false},"author":1,"featured_media":3738,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[338,344,347,22,314,369],"tags":[671],"class_list":["post-3737","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-338","category-applications","category-atmos","category-ceomag","category-non-classe","category-sedoric","tag-ceomag361"],"_links":{"self":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/posts\/3737","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/comments?post=3737"}],"version-history":[{"count":0,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/posts\/3737\/revisions"}],"wp:attachment":[{"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/media?parent=3737"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/categories?post=3737"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oric.bqtt.net\/index.php\/wp-json\/wp\/v2\/tags?post=3737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}