tl;dr
- La copie des disquettes, c’est délicat. Si vous tenez à ce qui se trouve sur une disquette, confiez-la à quelqu’un qui sait faire.
- Si vous vous lancez dans la récupération de données sur disquettes, tentez plusieurs approches, plusieurs outils logiciels et matériels, et combinez les résultats.
- Vous avez réussi à lire presque tous les secteurs d’une disquette ? Ça ne vous garantit pas de retrouver tout ce qui s’y trouvait, surtout si des erreurs de lecture affectent les premières pistes de la disquette : des fichiers peuvent rester invisibles, et les utilitaires de récupération ne vous aideront peut-être pas.
- La première lecture d’une disquette après une très longue période est sans doute votre meilleure chance de récupération, les lectures successives pouvant la dégrader. Donc soignez la première lecture et réalisez-la dans les meilleures conditions possibles.
Nostalgie du jeu, jeu de la nostalgie
Je me méfie de la nostalgie. Dans le pire des cas, elle est réactionnaire, et dans tous, elle repose sur un mécanisme d’idéalisation du passé. Si je m’intéresse à la rétro-informatique, ce n’est ni par regret du temps d’avant, ni par passion des vieilles machines. C’est plutôt parce que ça me permet d’accéder à des objets historiques et culturels à étudier et conserver, avec l’espoir que ça éclairera le présent (le fantasme du détective qui plonge dans le passé pour dénouer les fils d’une intrigue contemporaine, cher à Pérez-Reverte, je n’arrive pas à m’en débarrasser totalement). Mais il faut bien avouer qu’un jeu vidéo comme premier exemple de traitement d’une disquette, c’est parfait, et vous allez comprendre pourquoi bientôt.
Récemment, j’ai remis le nez dans les casiers à disquettes de mon père. Le tri, c’est pas le fort de mes parents. Le résultat, c’est que les bons souvenirs sont enfouis sous des quantités d’objets sans valeur. Ne pas trier, c’est ne pas hiérarchiser, c’est risquer de laisser se dégrader une masse indifférenciée de matériau qu’on ne traitera pas parce que cela dépasse nos capacités. Ne pas trier, c’est niveler par le bas et tout condamner à un sort équivalent. C’est déprécier. Néanmoins, si mon père avait trié, sans doute aurait-il jeté toutes ces disquettes, y compris celle dont l’étiquette portait « Jeu des saumons » et qui représentait le seul jeu vidéo auquel j’ai eu accès entre mes dix et mes douze ans. Dans la maison de mon enfance, la télé était abandonnée dans la pièce la plus inconfortable et ne diffusait que les trois premières chaînes. Les consoles de jeu étaient elles aussi frappées de suspicion. Seul ce jeu éducatif, où dans mes souvenirs il fallait aider un saumon à sauter des barrages, était admis. Mais il fallait demander à mon père de le lancer sur le 486 dont il se servait pour son travail1.
La disquette ressemble à ça – « RPS » correspond à « Rhône Poulenc Systèmes », un des seuls fabricants de disquettes en France.

Premières lectures
La disquette est marquée « HD », elle était lue dans un PC IBM, donc pas de doute, la commande
gw read –format=ibm image.img
$ gw read --format=ibm image.img
devrait marcher. Et en effet, la première lecture avec un lecteur Samsung identifie 2875 secteurs sur 2880. Pas trop mal. Mais comme je veux avoir l’image la plus fidèle possible, je retente en copiant le flux brut :
$ gw read --format=ibm --raw flux00.0.raw
Malheureusement, j’ai beau augmenter le nombre de révolutions et de tentatives (options --revs et --retries, rappelez-vous), rien n’y fait. Finalement, j’obtiens un meilleur résultat avec un autre lecteur, qui est capable de lire quatre secteurs supplémentaires. Envers et contre tout, le troisième secteur de la piste 0, face 1, résiste à la lecture.
Reading c=0-79:h=0-1 revs=2
Format ibm.1440
T0.0: IBM MFM (18/18 sectors) from Raw Flux (175710 flux in 400.81ms)
T0.1: IBM MFM (17/18 sectors) from Raw Flux (180355 flux in 400.75ms)
T0.1: IBM MFM (17/18 sectors) from Raw Flux (450795 flux in 1001.59ms) (Retry #1.1)
T0.1: IBM MFM (17/18 sectors) from Raw Flux (721234 flux in 1602.45ms) (Retry #1.2)
T0.1: IBM MFM (17/18 sectors) from Raw Flux (991669 flux in 2203.32ms) (Retry #1.3)
T0.1: Giving up: 1 sectors missing
T1.0: IBM MFM (18/18 sectors) from Raw Flux (154485 flux in 400.74ms)
T1.1: IBM MFM (18/18 sectors) from Raw Flux (157254 flux in 400.73ms)
T2.0: IBM MFM (18/18 sectors) from Raw Flux (156060 flux in 400.72ms)
T2.1: IBM MFM (18/18 sectors) from Raw Flux (155939 flux in 400.70ms)
T3.0: IBM MFM (18/18 sectors) from Raw Flux (158285 flux in 400.71ms)
T3.1: IBM MFM (18/18 sectors) from Raw Flux (155851 flux in 400.68ms)
T4.0: IBM MFM (18/18 sectors) from Raw Flux (155794 flux in 400.72ms)
T4.1: IBM MFM (18/18 sectors) from Raw Flux (156719 flux in 400.73ms)
T5.0: IBM MFM (18/18 sectors) from Raw Flux (156845 flux in 400.69ms)
T5.1: IBM MFM (18/18 sectors) from Raw Flux (156055 flux in 400.71ms)
T6.0: IBM MFM (18/18 sectors) from Raw Flux (153964 flux in 400.71ms)
T6.1: IBM MFM (18/18 sectors) from Raw Flux (154730 flux in 400.70ms)
T7.0: IBM MFM (18/18 sectors) from Raw Flux (157815 flux in 400.70ms)
T7.1: IBM MFM (18/18 sectors) from Raw Flux (156302 flux in 400.70ms)
T8.0: IBM MFM (18/18 sectors) from Raw Flux (158115 flux in 400.67ms)
T8.1: IBM MFM (18/18 sectors) from Raw Flux (165544 flux in 400.69ms)
T9.0: IBM MFM (18/18 sectors) from Raw Flux (162426 flux in 400.70ms)
T9.1: IBM MFM (18/18 sectors) from Raw Flux (158360 flux in 400.71ms)
T10.0: IBM MFM (18/18 sectors) from Raw Flux (151801 flux in 400.70ms)
T10.1: IBM MFM (18/18 sectors) from Raw Flux (155721 flux in 400.72ms)
T11.0: IBM MFM (18/18 sectors) from Raw Flux (155535 flux in 400.67ms)
T11.1: IBM MFM (17/18 sectors) from Raw Flux (156853 flux in 400.66ms)
T11.1: IBM MFM (18/18 sectors) from Raw Flux (392040 flux in 1001.46ms) (Retry #1.1)
T12.0: IBM MFM (18/18 sectors) from Raw Flux (151808 flux in 400.71ms)
T12.1: IBM MFM (18/18 sectors) from Raw Flux (155459 flux in 400.70ms)
T13.0: IBM MFM (18/18 sectors) from Raw Flux (159122 flux in 400.71ms)
Unknown mark f9
T13.1: IBM MFM (18/18 sectors) from Raw Flux (160120 flux in 400.76ms)
T14.0: IBM MFM (18/18 sectors) from Raw Flux (151221 flux in 400.74ms)
Unknown mark f9
Unknown mark f9
T14.1: IBM MFM (18/18 sectors) from Raw Flux (154058 flux in 400.72ms)
T15.0: IBM MFM (18/18 sectors) from Raw Flux (155985 flux in 400.70ms)
T15.1: IBM MFM (18/18 sectors) from Raw Flux (157602 flux in 400.69ms)
T16.0: IBM MFM (18/18 sectors) from Raw Flux (162454 flux in 400.72ms)
T16.1: IBM MFM (18/18 sectors) from Raw Flux (157896 flux in 400.72ms)
T17.0: IBM MFM (18/18 sectors) from Raw Flux (157627 flux in 400.70ms)
T17.1: IBM MFM (18/18 sectors) from Raw Flux (148924 flux in 400.67ms)
T18.0: IBM MFM (18/18 sectors) from Raw Flux (149553 flux in 400.80ms)
T18.1: IBM MFM (18/18 sectors) from Raw Flux (154239 flux in 400.69ms)
T19.0: IBM MFM (18/18 sectors) from Raw Flux (158068 flux in 400.71ms)
T19.1: IBM MFM (18/18 sectors) from Raw Flux (160621 flux in 400.70ms)
T20.0: IBM MFM (18/18 sectors) from Raw Flux (157313 flux in 400.71ms)
T20.1: IBM MFM (18/18 sectors) from Raw Flux (158005 flux in 400.72ms)
T21.0: IBM MFM (18/18 sectors) from Raw Flux (155220 flux in 400.76ms)
T21.1: IBM MFM (18/18 sectors) from Raw Flux (154798 flux in 400.76ms)
T22.0: IBM MFM (18/18 sectors) from Raw Flux (152187 flux in 400.73ms)
T22.1: IBM MFM (18/18 sectors) from Raw Flux (151531 flux in 400.72ms)
T23.0: IBM MFM (18/18 sectors) from Raw Flux (158074 flux in 400.60ms)
T23.1: IBM MFM (18/18 sectors) from Raw Flux (153697 flux in 400.66ms)
T24.0: IBM MFM (18/18 sectors) from Raw Flux (154427 flux in 400.70ms)
T24.1: IBM MFM (18/18 sectors) from Raw Flux (159073 flux in 400.69ms)
T25.0: IBM MFM (18/18 sectors) from Raw Flux (157378 flux in 400.71ms)
T25.1: IBM MFM (18/18 sectors) from Raw Flux (156843 flux in 400.68ms)
T26.0: IBM MFM (18/18 sectors) from Raw Flux (155989 flux in 400.68ms)
T26.1: IBM MFM (18/18 sectors) from Raw Flux (155281 flux in 400.69ms)
T27.0: IBM MFM (18/18 sectors) from Raw Flux (155243 flux in 400.73ms)
T27.1: IBM MFM (18/18 sectors) from Raw Flux (151176 flux in 400.67ms)
T28.0: IBM MFM (18/18 sectors) from Raw Flux (157788 flux in 400.77ms)
T28.1: IBM MFM (18/18 sectors) from Raw Flux (154552 flux in 400.68ms)
T29.0: IBM MFM (18/18 sectors) from Raw Flux (158375 flux in 400.71ms)
T29.1: IBM MFM (18/18 sectors) from Raw Flux (154303 flux in 400.71ms)
T30.0: IBM MFM (18/18 sectors) from Raw Flux (159428 flux in 400.66ms)
T30.1: IBM MFM (18/18 sectors) from Raw Flux (157957 flux in 400.67ms)
T31.0: IBM MFM (18/18 sectors) from Raw Flux (151289 flux in 400.69ms)
T31.1: IBM MFM (18/18 sectors) from Raw Flux (153134 flux in 400.71ms)
T32.0: IBM MFM (18/18 sectors) from Raw Flux (152819 flux in 400.70ms)
T32.1: IBM MFM (18/18 sectors) from Raw Flux (152173 flux in 400.70ms)
T33.0: IBM MFM (18/18 sectors) from Raw Flux (152175 flux in 400.75ms)
T33.1: IBM MFM (18/18 sectors) from Raw Flux (152143 flux in 400.70ms)
T34.0: IBM MFM (18/18 sectors) from Raw Flux (152182 flux in 400.75ms)
T34.1: IBM MFM (18/18 sectors) from Raw Flux (152134 flux in 400.68ms)
T35.0: IBM MFM (18/18 sectors) from Raw Flux (152182 flux in 400.73ms)
T35.1: IBM MFM (18/18 sectors) from Raw Flux (152141 flux in 400.67ms)
T36.0: IBM MFM (18/18 sectors) from Raw Flux (152180 flux in 400.68ms)
T36.1: IBM MFM (18/18 sectors) from Raw Flux (152140 flux in 400.70ms)
T37.0: IBM MFM (18/18 sectors) from Raw Flux (152145 flux in 400.74ms)
T37.1: IBM MFM (18/18 sectors) from Raw Flux (152107 flux in 400.72ms)
T38.0: IBM MFM (18/18 sectors) from Raw Flux (152176 flux in 400.73ms)
T38.1: IBM MFM (18/18 sectors) from Raw Flux (152137 flux in 400.71ms)
T39.0: IBM MFM (18/18 sectors) from Raw Flux (152178 flux in 400.70ms)
T39.1: IBM MFM (18/18 sectors) from Raw Flux (152139 flux in 400.68ms)
T40.0: IBM MFM (18/18 sectors) from Raw Flux (152172 flux in 400.68ms)
T40.1: IBM MFM (18/18 sectors) from Raw Flux (152143 flux in 400.67ms)
T41.0: IBM MFM (18/18 sectors) from Raw Flux (152135 flux in 400.70ms)
T41.1: IBM MFM (18/18 sectors) from Raw Flux (152105 flux in 400.72ms)
T42.0: IBM MFM (18/18 sectors) from Raw Flux (152125 flux in 400.71ms)
T42.1: IBM MFM (18/18 sectors) from Raw Flux (152097 flux in 400.68ms)
T43.0: IBM MFM (18/18 sectors) from Raw Flux (152136 flux in 400.70ms)
T43.1: IBM MFM (18/18 sectors) from Raw Flux (152096 flux in 400.71ms)
T44.0: IBM MFM (18/18 sectors) from Raw Flux (152186 flux in 400.73ms)
T44.1: IBM MFM (18/18 sectors) from Raw Flux (152128 flux in 400.71ms)
T45.0: IBM MFM (18/18 sectors) from Raw Flux (152134 flux in 400.73ms)
T45.1: IBM MFM (18/18 sectors) from Raw Flux (152101 flux in 400.69ms)
T46.0: IBM MFM (18/18 sectors) from Raw Flux (152185 flux in 400.75ms)
T46.1: IBM MFM (18/18 sectors) from Raw Flux (152139 flux in 400.68ms)
T47.0: IBM MFM (18/18 sectors) from Raw Flux (152180 flux in 400.73ms)
T47.1: IBM MFM (18/18 sectors) from Raw Flux (152141 flux in 400.72ms)
T48.0: IBM MFM (18/18 sectors) from Raw Flux (152222 flux in 400.75ms)
T48.1: IBM MFM (18/18 sectors) from Raw Flux (152175 flux in 400.74ms)
T49.0: IBM MFM (18/18 sectors) from Raw Flux (152177 flux in 400.76ms)
T49.1: IBM MFM (18/18 sectors) from Raw Flux (152144 flux in 400.71ms)
T50.0: IBM MFM (18/18 sectors) from Raw Flux (152178 flux in 400.67ms)
T50.1: IBM MFM (18/18 sectors) from Raw Flux (152133 flux in 400.69ms)
T51.0: IBM MFM (18/18 sectors) from Raw Flux (152175 flux in 400.70ms)
T51.1: IBM MFM (18/18 sectors) from Raw Flux (152139 flux in 400.72ms)
T52.0: IBM MFM (18/18 sectors) from Raw Flux (152178 flux in 400.67ms)
T52.1: IBM MFM (18/18 sectors) from Raw Flux (152139 flux in 400.71ms)
T53.0: IBM MFM (18/18 sectors) from Raw Flux (152139 flux in 400.71ms)
T53.1: IBM MFM (18/18 sectors) from Raw Flux (152105 flux in 400.70ms)
T54.0: IBM MFM (18/18 sectors) from Raw Flux (152177 flux in 400.73ms)
T54.1: IBM MFM (18/18 sectors) from Raw Flux (152141 flux in 400.73ms)
T55.0: IBM MFM (18/18 sectors) from Raw Flux (152172 flux in 400.69ms)
T55.1: IBM MFM (18/18 sectors) from Raw Flux (152145 flux in 400.70ms)
T56.0: IBM MFM (18/18 sectors) from Raw Flux (152209 flux in 400.74ms)
T56.1: IBM MFM (18/18 sectors) from Raw Flux (152174 flux in 400.72ms)
T57.0: IBM MFM (18/18 sectors) from Raw Flux (152170 flux in 400.72ms)
T57.1: IBM MFM (18/18 sectors) from Raw Flux (152135 flux in 400.67ms)
T58.0: IBM MFM (18/18 sectors) from Raw Flux (152175 flux in 400.73ms)
T58.1: IBM MFM (18/18 sectors) from Raw Flux (152135 flux in 400.70ms)
T59.0: IBM MFM (18/18 sectors) from Raw Flux (152174 flux in 400.74ms)
T59.1: IBM MFM (18/18 sectors) from Raw Flux (152135 flux in 400.68ms)
T60.0: IBM MFM (18/18 sectors) from Raw Flux (152215 flux in 400.69ms)
T60.1: IBM MFM (18/18 sectors) from Raw Flux (152185 flux in 400.70ms)
T61.0: IBM MFM (18/18 sectors) from Raw Flux (152177 flux in 400.69ms)
T61.1: IBM MFM (18/18 sectors) from Raw Flux (152149 flux in 400.69ms)
T62.0: IBM MFM (18/18 sectors) from Raw Flux (152227 flux in 400.74ms)
T62.1: IBM MFM (18/18 sectors) from Raw Flux (152188 flux in 400.73ms)
T63.0: IBM MFM (18/18 sectors) from Raw Flux (152210 flux in 400.76ms)
T63.1: IBM MFM (18/18 sectors) from Raw Flux (152173 flux in 400.69ms)
T64.0: IBM MFM (18/18 sectors) from Raw Flux (152206 flux in 400.72ms)
T64.1: IBM MFM (18/18 sectors) from Raw Flux (152174 flux in 400.71ms)
T65.0: IBM MFM (18/18 sectors) from Raw Flux (152173 flux in 400.74ms)
T65.1: IBM MFM (18/18 sectors) from Raw Flux (152131 flux in 400.73ms)
T66.0: IBM MFM (18/18 sectors) from Raw Flux (152177 flux in 400.74ms)
T66.1: IBM MFM (18/18 sectors) from Raw Flux (152138 flux in 400.73ms)
T67.0: IBM MFM (18/18 sectors) from Raw Flux (152172 flux in 400.72ms)
T67.1: IBM MFM (18/18 sectors) from Raw Flux (152139 flux in 400.67ms)
T68.0: IBM MFM (18/18 sectors) from Raw Flux (152176 flux in 400.75ms)
T68.1: IBM MFM (18/18 sectors) from Raw Flux (152143 flux in 400.72ms)
T69.0: IBM MFM (18/18 sectors) from Raw Flux (152143 flux in 400.73ms)
T69.1: IBM MFM (18/18 sectors) from Raw Flux (152102 flux in 400.70ms)
T70.0: IBM MFM (18/18 sectors) from Raw Flux (152170 flux in 400.80ms)
T70.1: IBM MFM (18/18 sectors) from Raw Flux (152141 flux in 400.70ms)
T71.0: IBM MFM (18/18 sectors) from Raw Flux (152171 flux in 400.71ms)
T71.1: IBM MFM (18/18 sectors) from Raw Flux (152136 flux in 400.73ms)
T72.0: IBM MFM (18/18 sectors) from Raw Flux (152177 flux in 400.75ms)
T72.1: IBM MFM (18/18 sectors) from Raw Flux (152144 flux in 400.73ms)
T73.0: IBM MFM (18/18 sectors) from Raw Flux (152144 flux in 400.73ms)
T73.1: IBM MFM (18/18 sectors) from Raw Flux (152103 flux in 400.72ms)
T74.0: IBM MFM (18/18 sectors) from Raw Flux (152140 flux in 400.78ms)
T74.1: IBM MFM (18/18 sectors) from Raw Flux (152100 flux in 400.72ms)
T75.0: IBM MFM (18/18 sectors) from Raw Flux (152135 flux in 400.76ms)
T75.1: IBM MFM (18/18 sectors) from Raw Flux (152110 flux in 400.66ms)
T76.0: IBM MFM (18/18 sectors) from Raw Flux (152180 flux in 400.76ms)
T76.1: IBM MFM (18/18 sectors) from Raw Flux (152137 flux in 400.71ms)
T77.0: IBM MFM (18/18 sectors) from Raw Flux (152137 flux in 400.80ms)
T77.1: IBM MFM (18/18 sectors) from Raw Flux (152106 flux in 400.74ms)
T78.0: IBM MFM (18/18 sectors) from Raw Flux (152177 flux in 400.76ms)
T78.1: IBM MFM (18/18 sectors) from Raw Flux (152144 flux in 400.71ms)
T79.0: IBM MFM (18/18 sectors) from Raw Flux (152195 flux in 400.82ms)
T79.1: IBM MFM (18/18 sectors) from Raw Flux (152140 flux in 400.70ms)
Cyl-> 0 1 2 3 4 5 6 7
H. S: 01234567890123456789012345678901234567890123456789012345678901234567890123456789
0. 0: ................................................................................
0. 1: ................................................................................
0. 2: ................................................................................
0. 3: ................................................................................
0. 4: ................................................................................
0. 5: ................................................................................
0. 6: ................................................................................
0. 7: ................................................................................
0. 8: ................................................................................
0. 9: ................................................................................
0.10: ................................................................................
0.11: ................................................................................
0.12: ................................................................................
0.13: ................................................................................
0.14: ................................................................................
0.15: ................................................................................
0.16: ................................................................................
0.17: ................................................................................
1. 0: ................................................................................
1. 1: ................................................................................
1. 2: X...............................................................................
1. 3: ................................................................................
1. 4: ................................................................................
1. 5: ................................................................................
1. 6: ................................................................................
1. 7: ................................................................................
1. 8: ................................................................................
1. 9: ................................................................................
1.10: ................................................................................
1.11: ................................................................................
1.12: ................................................................................
1.13: ................................................................................
1.14: ................................................................................
1.15: ................................................................................
1.16: ................................................................................
1.17: ................................................................................
Found 2879 sectors of 2880 (99%)
Je charge ce flux dans HxC et obtiens la visualisation suivante (« Track Analyzer », comme décrit dans le billet précédent) :

Et voici la question pour les personnes très calées dans ce domaine : si le seul secteur mal lu est le troisième secteur de la piste 0, face 1 (on le voit sur la piste la plus distante du centre), pourquoi est-ce que plusieurs secteurs semblent problématiques aussi, sur d’autres pistes ?
Je monte quand même cette image, on va voir ce que ça donne :

Trente-deux fichiers lisibles !
Le fichier lisez-moi
Parmi ces fichiers, il y a un LISEZ.MOI que Linux identifie comme un fichier textuel. Si on l’ouvre tel quel :

Outre que l’ASCII art du titre est décalé, il y a quelques problèmes d’encodage de caractères. C’est assez facile de convertir le texte en UTF-8 avec l’utilitaire iconv – encore faut-il savoir dans quel encodage il a été créé. Une petite recherche dans un moteur de recherche nous indique que c’est probablement la page de code 863 (aka « cp863 »). Voici donc la ligne de commande :
$ iconv LISEZ.MOI -f cp863 -t UTF8 > LISEZ.MOI-utf8
Et voici le résultat :
---------------------------------------------------------------------
I I
I ******* ***** ** ** ** ***** I
I **** * * ** *** *** ** ** I
I *** * * ** ******** ** ** I
I **** ******* ** ** ** ** ** ** I
I *** ******* ** ** ** ** ** I
I *** ** ** ** ** ** I
I *** ** ** ** ** ** ** ** I
I **** ** ** ** ** ** ** ** I
I ******* ** ** ******* ** ** ***** I
I I
---------------------------------------------------------------------
'L'aventure du saumon'
pour IBM PC et compatibles
V 1.0
(c) Myriad+EDF+CSP Juillet 1990
--------------------------
"...Au XVIIIème siècle, les Gens de Maison refusaient qu'on leur serve
du saumon plus de trois fois par semaine.
Le moulin du Bazacle à Toulouse subit une grève au XVIème car les
ouvriers en avaient assez de manger du saumon...'
De nos jours .... où sont passés les saumons ?
- Mais vous voulez peut-être jouer tout de suite :
-------------------------------------------------
Aucun problème, sous MSDOS, tapez SALMO suivi de 'Entrée'. Mais nous
vous conseillons tout de même de revenir tout à l'heure,lire ce qui
suit.
- Introduction
--------------
'SALMO' a été développé par la société MYRIAD, sur une demande
d'Electricité de France et du Conseil Supérieur de la Pêche. Ce
logiciel va vous présenter par l'intermédiaire de jeux, des données
scientifiques très sérieuses, rassemblées par les spécialistes des
poissons Migrateur d'EDF, du Conseil Supérieur de la Pêche et du
CEMAGREF.
En effet depuis plusieurs années, le problème de l'eau devient de plus
en plus crucial. Des études ont été faites sur les poissons
migrateurs, et plus particulièrement les Salmonidés qui sont l'indice
de bonne santé d'une rivière. Les spécialistes se sont rendu compte
que beaucoup de rivières, autrefois riches en saumon, ont perdu la
totalité de leur population à cause d'obstacles artificiels peu ou mal
aménagés, de pollutions et autres causes qui seront développées dans
le logiciel.
Pour réintroduire et préserver le saumon, il a été nécessaire
d'approfondir nos connaissances sur cette espèce. L'étude de sa
biologie a permis de préciser les exigences du saumon en matière de
qualité d'habitat et de définir ses capacités de déplacement en
fonction de la température et de la vitesse du courant.
On a ainsi put construire des passes à poisson efficaces et fixer des
quotas de capture destinés à préserver les populations.
Ce logiciel va vous initier à la biologie des poissons migrateurs, que
ce soit des salmonidés comme la truite ou le saumon, ou d'autres tels
l'esturgeon, l'alose, la lamproie ou l'anguille. Puis pour que vous
compreniez bien les problèmes qui se posent à notre ami le saumon,
pendant quelques temps, la fée informatique vous transformera en
saumon et VOUS devrez lutter pour remonter jusqu'aux frayères au
mépris des obstacles et des dangers, des crues de Printemps qui vous
repousseront sans pitié, des sècheresse d'Août qui vous asphyxieront,
des obstacles qui vous bloqueront la voie.
Dans une deuxième étape, vous prendrez la place d'un gestionnaire
et devrez aménager une rivière, obstacle par obstacle, à l'aide
des (maigres) crédits qui vous seront alloués.
Attention, à aucun moment l'information ne vous sera assénée! Ce n'est
pas la T.V. ici ! Apprenez à aller pêcher (!!!) l'information.
- J'ai envie de copier le logiciel pour le donner à un ami
----------------------------------------------------------
Ce logiciel repond au principe impératif :
COPIE LIBRE, VENTE INTERDITE.
Ce logiciel est en libre copie. Ceci veut dire que vous avez le droit
de le copier et de le donner autour de vous. Mais attention :
IL EST STRICTEMENT INTERDIT DE MODIFIER OU
DE REVENDRE CE LOGICIEL !!!.
Que ce soit sous forme de compil' de "freeware", de téléchargement, et
autres procédés assimilés.
Si vous disposez de ce logiciel par une copie libre et que vous
désirez en avoir un exemplaire complet, vous pouvez vous le procurer
en envoyant un chèque de 95 F à MYRIAD, 4 rue de Bordeaux 31200
Toulouse. Vous recevrez alors le logiciel avec son emballage complet
et surtout sa notice, très complète, bourrée de renseignements sur les
astuces de jeu et la biologie des poissons migrateurs.
N'oubliez pas de recopier la totalité des fichiers pour que le
logiciel fonctionne correctement.
Pour être sûr de ne pas faire d'erreur, introduisez la disquette
originale dans le lecteur A:, une disquette formatée (commande FORMAT
du MS-DOS) dans le lecteur B: et tapez
COPY A:*.* B:
De la même manière vous pouvez recopier le logiciel sur votre disque
dur.
Les fichiers que vous devez avoir sur votre disque sont :
salmo.exe |> L'exécutable.The master. Indispensable.
showpage.exe |> Affiche la page graphique de présentation
salmo.vga |> Les données de la page graphique
myriad.cfg |> Fichier de configuration
icones.mok |> Graphismes systèmes (souris, boutons...)
helvet10.FNK |
helvet18.FNK |> Fontes de caractères utilisées
salgen.mok |> Graphisme du générique
salgen.dec |> Pages du générique
salmo.txt |> Textes (ne surtout pas modifier).
saudid.dec |> Pages didactiques créées par MYDAC
sauergo.dec |> Pages expliquant l'ergonomie
passes.dec |> Pages montrant les passes à poissons
bief.dat |> Semences des biefs
saudid1.mvo \
saudid2.mvo |
sauwin.mvo |> Langage objet de description des animations
cascade.mvo | utilisé dans les pages didactiques.
/
saudid1.mok \
saudid2.mok |
saudid3.mok |
saumax.mok |
saugros.mok |
salgag.mok |
salgest.mok |
babas.mok |
sauwin.mok |
saumon.mok |
decrem.mok |> Graphismes compressés.
mouche.mok |
fondrem.mok |
rdpoubel.mok |
rdpoteau.mok |
rdpierre.mok |
rdblocks.mok |
sautmon.mok |
cascdec1.mok |
cascdec2.mok |
cascade.mok |
passes.mok |
ouvrage.mok /
salbong.smp \
salaqua.smp |
salplouf.smp |> Bruitages digitalisés
salvan.smp |
/
salmo.hit |> The Hall of Fame
- Quelles sont les options de configuration
-------------------------------------------
Lorsque vous lancez le programme salmo, vous pouvez taper derrière le
nom une ou plusieurs options d'appel. Une option commence toujours par
un '-'. Les différentes options sont :
-AIDE |
-HELP |> Affiche la liste des options disponibles.
-H |
Pour fixer la carte graphique
-CGA force le graphisme en CGA, très utile si vous avez un AT
lent avec carte EGA et que vous désiriez jouer en CGA pour
aller plus vite. De même si vous êtes sur d'avoir une carte
CGA et que SALMO ne la reconnaisse pas.
-EGA pour forcer le graphisme en EGA.
-VGA pour forcer le graphisme en mode VGA 256 couleurs.
-HER pour forcer le graphisme en Hercules. De nombreuses
cartes multifonctions, une fois en Hercules, sont
indiscernables d'une carte EGA (RAM en A000, ports EGA
toujours valides)
Pour fixer le périphérique de commande
-PDS pour ignorer la souris et jouer au clavier ou au joystick.
Le joystick reconnu est le joystick standard. La fonction
utilisée est la fonction 84h de l'int 15h
=> AH = 084h
DX = 1
<= Carry = 1 pas de joystick
Carry = 0
AX Pos X Joy 1
BX Pos Y Joy 1
Si le joystick ne fonctionne pas, vérifier sa connection. Si
les symptômes persistent consultez votre SAV.
-JOY pour ignorer la souris et jouer au joystick.
-SENSIB nnn règle la sensibilité souris/joystick n de 1 à 100
en standard la valeur est 68.
-NONSTD Pour pouvoir tester deux touches en même temps, le
vecteur clavier 16h est détourné et géré comme un clavier
standard, en cas de problème (clavier non standard) utilisez
cette option pour empécher le détournement.
-NO18 Pour synchroniser les évènements, on utilise la case
40h:6ch qui contient sur un PC la valeur de l'horloge.
Si votre 'PC' ne respecte pas ceci, utilisez cette
option.
-NOTE Cette option fait un petit check de votre PC et donne une
note. Cette note sera légèrement différente de celle optenue
par PC-TOOLS car nous tenons compte de la vitesse de la RAM
vidéo. Par exemple : aque sur ma bécane à moi, qu'es pas une
Harley mais une Hachepé aque j'ai :
Note du compatible par rapport à un Pc 4 MHz 1094
Processeur : 80286-80386
Mémoire Ram disponible :386674 octets.
Mémoire étendue 1024 Ko
La note est un pourcentage. En fonction de ce chiffre magique, voici
les prédictions de Madame Galaxie:
Si vous êtes >= 640% Ok c'est bon si c'est un AT;par contre
bofbofbof si c'est un 386 ....
Si vous êtes < 300% pas la peine d'essayer le mode EGA.
Si vous êtes < 200%, Dur dur pour salmo. Par contre, le
clavier fait un excellent paillasson quand on rentre du
jardin...
-FNOTE nnnn Etant donné que certaines générations de décor se font
en fonction de la vitesse processeur, (si vous voulez avoir plus
de pierres dans le bief par exemple) vous pouvez forcer la note de
votre compatible. Mais c'est un peu comme si vous rajoutiez un zéro
au feutre à chacun des chiffres du tachymètre de votre deudeuche.
-MEM nnn supprime nnn Ko de la mémoire libre. A réserver aux masos.
-TOTAL Charge le maximum de fichiers en mémoire dès le départ. Ceci
réduit les accès disques durant le déroulement du jeu et les regroupe
au début.
-VOLUME xxx Fixe le volume sonore. 0 = Silence !
A notre connaissance, c'est la première fois que l'on dispose
d'un volume SOFT sur PC. Merci qui ? Merci MYRIAD.
-MACRO xxx Initialisation du tampon clavier avec xxx. Exemple:
salmo -macro eeee va lancer salmo et tout de suite
passer aux pages didactiques.
-NOXTMEM Empêche le test et l'utilisation de la mémoire étendue si
celle-ci est réservée à un autre usage.
-NOPAGE Supprime le chargement de la page graphique de présentation.
-Oui mais moi,
j'ai un SXPC Taïwan 512 Ko avec souris parallèle et carte Hercules
--------------------------------------------------------------------------
Pas de problème, la plupart des cartes sont reconnues par le logiciel:
Carte Hercules,
Carte CGA,
Carte EGA,
Carte VGA.
Les modes Hercules et CGA nécessitent au moins 512 Ko de mémoire
centrale, les cartes EGA et VGA au moins 640 Ko. En mode VGA on utilise
le mode compatible EGA, donc tout ce passe comme si l'on avait une
carte EGA. Pour jouer en CGA bien que l'on dispose d'une carte EGA
taper
SALMO -CGA
Pour les souris, il est nécessaire de les installer auparavant. En
général, est livré avec la souris un petit programme appelé MOUSE.COM
qu'il suffit d'exécuter une fois pour pouvoir user du redoutable petit
animal.
Si vous voulez jouer au clavier alors qu'une souris est installée, tapez
SALMO -PDS
où PDS indique Pas De Souris. Ceci peut être également utile si votre
ordinateur est peu compatible au niveau de l'interruption 33H de la
souris, en particulier les Olivetti, Logabax et autres Hermès qui
'plantent' si une souris n'est pas installée et qu'on la teste ...
Si un problème de place mémoire est rencontré en mode EGA ( en
particulier sur PS ) il est nécessaire de démarrer le système à partir
d'une disquette MS-DOS d'origine pour qu'aucun logiciel ne soit
présent en mémoire. Puis taper
SALMO -EGA.
Le logiciel reconnait et gère la mémoire étendue VRAIE (non paginé,
adresse >100000H).
- Oui mais j'ai encore un problème sur mon XYM PC, pourtant
réputé compatible 120 % par Monsieur le Marchand d'Ordinateur
-------------------------------------------------------------
Ecrivez-nous en décrivant: La marque et le modèle de votre ordinateur,
le type de carte graphique, le type de souris, la version de MS-DOS
utilisée, la version du driver souris utilisé, le contenu de votre
AUTOEXEC.BAT et CONFIG.SYS.
MYRIAD
Service des Coeurs Brisés
4, rue de Bordeaux
31200 TOULOUSE
Des conseils adaptés ou une version spéciale vous seront adressés au
plus vite.
- Oui mais, moi j'ai un Amiga...
------------------------------
SALMO fonctionne sur PC, Atari ST et Macintosh. Pour l'instant
l'adaptation sur des machines telles que l'Amiga n'est
pas envisagée, vu la pauvreté des demandes. Mais écrivez-nous pour
prouver que vous êtes motivés et on se décidera peut-être...
- Comment est-ce fait ?
-----------------------
A 90 % en langage C. Le reste en assembleur. Les objets graphiques
sont dessinés sous EDIMOB sur ATARI ST. Les pages didactiques
sont créées à l'aide d'un éditeur de pages: MYDAC sur PC en utilisant
les objets. Les animations sont décrites dans un langage objet : KP.
- Et la page de présentation ?
------------------------------
Elle a été calculée sur IBM PC, grâce au programme TRACE, réalisé par
MYRIAD. La technique employée est le RAY-TRACING (lancer de rayon).
L'univers à représenter est défini en trois dimensions sous forme
mathématique : le corps du saumon, par exemple, est constitué d'une
cinquantaine de sphères semi-réfléchissantes. Une fois l'univers
entièrement décrit (position des sources de lumière et des divers
autres objets), le programme trace point par point l'image telle
qu'elle serait vue d'un endroit de l'espace donné.
La page de présentation a été calculée en 1280 x 800 points, chaque
point prenant une couleur choisie dans une palette de 16 millions de
teintes.
Le calcul a duré 9 heures. La page a ensuite été traitée afin d'être
affichée au mieux sur l'adaptateur graphique utilisé.
- Y a-t'il d'autres softs signés MYRIAD ?
-----------------------------------------
La société MYRIAD regroupe dans ses rangs des auteurs de jeux vidéo
qui appliquent aux logiciels didactiques les mêmes principes qu'à
leurs autres créations : originalité des concepts, rapidité du code.
MYRIAD développe des applications dans tous les domaines graphiques et
sonores que ce soit les jeux vidéo, les logiciels didactiques, les
panneaux publicitaires géants animés ou l'imagerie médicale.
Quelques créations MYRIAD :
'La vie du lac' traite des problèmes de pollution des lacs. Comme
salmo il se divise en deux parties: une partie didactique décrivant le
plancton, les problèmes d'eutrophisation ... puis une partie
manipulation où l'on suit l'évolution écologique du lac au cours du
temps et en fonction des degrés de pollution.
Ce logiciel réalisé et édité par MYRIAD est distribué par :
EDF, Mission Environnement,26 rue de la Baume 75008 Paris.
'Scithy' : Logiciel de saisie, de stockage et de traitement d'images
obtenues à partir d'un scintigraphe (appareil mesurant de façon très
fine (précision 1mm²) la quantité de radio-activité fixée par une glande
(par ex thyroïde) après injection d'iode radioactif). L'appareil balaye
la zone, ce qui permet de constituer une image.
'Fario' traite de la vie des truites de rivière et des problèmes des
débits réservés.
A bientôt.
MYRIAD
4,rue de Bordeaux
31200 Toulouse
(16) 61-47-23-40
Les auteurs
-----------
Didier Guillion : graphismes, programmation en C.
Olivier Guillion et Jean-Michel Georges :
programmation en assembleur
Partie Scientifique
-------------------
François TRAVADE
d'Electricité de France
Jean-Pierre PORCHER
du Conseil Supérieur de la Pêche
Michel LARINIER
du CEMAGREF
---------------------- Fin du lisez.moi --------------------------
On apprend pas mal de choses dans ce fichier :
- Le nom officiel du jeu (« L’aventure du saumon »),
- Les créateurs (Didier et Olivier Guillion et Jean-Michel Georges, sur le conseil scientifique de François Travade, Jean-Pierre Porcher et Michel Larinier),
- La société (Myriad, toujours active en 2026 d’ailleurs),
- Les commanditaires (EDF et le Conseil Supérieur de la Pêche),
- La date (juillet 1990) et la version (1.0),
- L’environnement (« IBM PC et compatibles »),
- Les conditions d’utilisations (l’équivalent d’une licence CC-BY-NC-ND aujourd’hui).
On appréciera (ou pas, les goûts et les couleurs) le ton un peu potache et la référence à Johnny, mais surtout, on notera une sorte de « manifeste » qui liste les fichiers nécessaires au jeu. Et là, patatras : il y en a quarante-six. Bien plus que les trente-deux obtenus quand j’ai monté l’image…
Lancer l’émulateur DOS
J’essaie quand même de voir ce que ça donne en lançant un émulateur DOS. Ça, c’est très facile : il suffit d’installer DOSBox ou son extension, DOSBox-X (c’est ce dernier que j’utilise). Ensuite, il faut “monter” le dossier où se trouvent les fichiers du jeu (l’aide affichée au lancement explique ça) et enfin lancer l’exécutable (SALMO.EXE) en tapant simplement son nom (comme le fichier LISEZ.MOI l’indiquait):

Un avertissement assez précis s’affiche donc, puis le jeu se lance. Malheureusement, peu après le lancement, nouveau message d’erreur :

Note : ce cas – celui d’un jeu vidéo, qui comporte donc plusieurs fichiers interdépendants, et présente l’immense qualité d’être très explicite dans ses messages d’erreur – est vraiment parfait pour illustrer les risque d’une copie mal faite !
A la pêche aux fichiers perdus
Il me manque donc (au moins) quatorze fichiers. Que faire ? Tout ça est quand même étrange : quatorze fichiers, sur un seul secteur de 512 octets ? Pas possible. La disquette ne semble pas si abîmée que ça, puisque le lecteur a pu lire presque tous les secteurs. Ou alors ma disquette serait une copie incomplète ? C’est possible, mais je me souvenais avoir joué avec, donc elle devait être complète à l’époque. Non, l’explication la plus probable, c’est que, comme la table d’allocation des fichiers se trouve sur les premières pistes, c’est précisément le secteur où se trouve l’adresse de ces fichiers qui est manquant. Les fichiers sont là, mais leur adresse n’y est plus et donc le système ne les trouve pas.
En théorie, j’imagine que des utilitaires comme testdisk et photorec (déjà mentionnés dans ces billets) pourraient retrouver ces fichiers. C’est pourtant un échec, et c’est sans doute dû au fait que photorec s’appuie sur un registre de signatures de format (ou magic numbers) limité, qui ne comprend pas le format des fichiers du jeu2.
Je me suis alors souvenu que j’avais tenté une première lecture avec mon lecteur USB externe, lorsque j’étais chez mes parents, sans mon équipement complet. A vrai dire, je ne sais plus si j’avais fait une copie logique ou une image disque avec l’utilitaire dc3dd (voir ce billet pour la ligne de commande exacte). Je remets le nez dans cette copie, et j’y trouve seize fichiers supplémentaires, que je peux ajouter aux trente-deux lus précédemment3 !
Le phénomène que je ne m’explique pas, c’est qu’en faisant la même opération avec le même lecteur et la même commande, mais après quelques semaines et quelques lectures avec la greaseweazle, j’obtiens les mêmes trente-deux fichiers qu’avec la greaseweazle. Est-il possible que les lectures successives aient altéré la disquette ? C’est mon hypothèse principale actuellement, donc comme je l’ai dit en tête du billet : la première lecture est peut-être la dernière, ne la bâclez pas.
Et enfin : trente ans après, jouer au jeu !
Avec les quarante-huit fichiers, ça marche beaucoup mieux ! Bon, il reste apparemment quelques messages d’erreur, et le joli écran de lancement est complètement barré de noir, mais ça reste jouable. Je vous mets une petite vidéo ?
Le truc étrange, c’est que le jeu est connu, en ligne, pour être un jeu Atari (il est mentionné dans la liste de jeux Atari ST publiée sur Wikipedia). Pourtant, le fichier LISEZ.MOI précise clairement qu’il s’agit d’un jeu « pour IBM PC et compatibles ». Quelqu’un de plus compétent que moi sur ce sujet pour m’éclairer là-dessus ?
Si vous avez envie, le site Planet Emulation propose ici une ROM de la disquette Atari. Je l’ai testé, et il fonctionne très bien avec l’émulateur Hatari – bon, les contrôles sont à se tirer une balle, mais à part ce détail… Même les temps de chargement sont respectés, ce qui est aussi chiant que la réalité d’origine.
Conclusion
Les leçons de cette expérience, je les ai mises en tête de cet article, je n’ai donc pas besoin d’y revenir. De mon côté, j’ai pris beaucoup de plaisir à farfouiller dans les entrailles de ce jeu. Bien sûr, avec des compétences complémentaires (en C, le langage de programmation du jeu, ou sur le système de fichiers de la disquette, FAT12), j’aurais sans doute pu aller plus loin. Si vous savez comment faire mieux, surtout n’hésitez pas à me suggérer des approches alternatives en commentaire !
Si, quand même, un dernier point : pour progresser dans ce domaine, la curiosité est nécessaire. Pour être un·e bon·ne archiviste numérique, je pense qu’il faut appliquer ses méthodes à sa propre production, et apprendre de son expérience d’archivage personnel !
- En réalité, je n’ai pas dû jouer beaucoup à ce jeu, parce que je n’arrivais pas à comprendre comment manœuvrer le saumon. Mais c’était mon premier jeu vidéo, et ça a suffi à me marquer durablement. ↩︎
- Je ne sais pas à quoi correspond l’extension « .mok », par exemple – elle n’a d’ailleurs qu’une entrée dans le méta-registre d’extensions publié par Andy Jackson, qui ne correspond pas au format des fichiers qu’on a ici. ↩︎
- Si vous vous demandez pourquoi j’avais délaissé cette copie, c’est parce qu’elle ne se lançait pas du tout avec DOSBox-X. ↩︎
Laisser un commentaire