Beaglefloppy

De Kernel Fablab Lannion
Montage beaglefloppy.jpg

Gamin, j'étais l'heureux propriétaire d'un Amiga sur lequel je passais beaucoup de temps à dessiner et développer des bricoles en GFA Basic (et, soyons honnêtes, à jouer...).

J'ai remis la main sur celui-ci mais, à ma grande tristesse, il ne fonctionne plus : la pile qui permettait de maintenir l'horloge à l'heure s'est répandue sur la carte mère et a rongé les circuits au-delà de mes compétences en réparation (ou de ma patience). Restait un carton rempli de disquettes dont je souhaitais bien récupérer le contenu.

Inspiré par une idée de Christian Zietz, j'ai entrepris de réaliser un petit montage électronique autour d'une BeagleBone Black accompagné d'un logiciel dédié pour extraire le contenu de mes disquettes. À la différence du projet dont je me suis inspiré, je n'ai pas eu recours à un analyseur logique pour l'acquisition du flux brut provenant du lecteur de disquettes mais j'ai exploité à cette fin les co-processeurs PRU de la BeagleBone, grâce à l'excellent package logiciel beaglelogic. Les GPIO de la BeagleBone ont également été mis à profit pour contrôler le lecteur de disquette (déplacement de la tête, sélection de la face à lire).

Ce projet doit permettre, moyennant peut-être quelques petits changements, la préservation du contenu de disquettes d'à-peu-près n'importe quel format.

Il faut savoir que les disquettes Amiga utilisaient un format de modulation dérivé de MFM que les contrôleurs de lecteur de disquette de PC sont incapables de décoder (indépendamment du système de fichiers AFS ou FFS, que Linux par exemple sait très bien lire), d'où la nécessité d'un montage électronique ad-hoc.

Pour autant, un lecteur de disquette 3.5" de PC convient pour le montage (c'est le contrôleur côté carte mère de PC qui ne convient pas). Si on emploie un lecteur haute densité comme ce que l'on trouve la plupart du temps, il faudra veiller à ce que les disquettes à préserver ne soient pas des disquettes HD formatées en DD (double densité). Cela était monnaie courante sur Amiga à une époque où les disquettes DD avaient disparu du marché, les lecteurs DD acceptant volontiers d'utiliser des disquettes HD (mais avec les niveaux électriques adaptés à une disquette DD). Il sera nécessaire de boucher le trou des disquettes HD formatées en DD avec un morceau de scotch pour forcer un lecteur HD à utiliser les niveaux électriques adaptés à un format DD.

Câblage

Un lecteur de disquette s'attend à ce que ses entrées soient reliées sur des sorties collecteur-ouvert du circuit qui le contrôle. Pour cette raison, il est nécessaire de passer par un buffer open-collector entre les sorties de la BeagleBone et les entrées du lecteur de disquette à câbler. Une référence classique pour adapter les sorties de la BeagleBone est un circuit intégré 7407.

Les sorties du lecteur de disquette sont des sorties collecteur-ouvert. Elle peuvent être reliées aux entrées de la BeagleBone en direct, chacune accompagnée d'une résistance de pull-up de 1K Ohms environ vers l'alim 3.3V de la BeagleBone (P9_3).

Il sera nécessaire d'alimenter le lecteur de disquette avec une alimentation 5V suffisante. NB : le 12V n'est typiquement pas requis.

Une alimentation 5V capable de fournir 2 ou 3A devrait suffire à alimenter le lecteur de disquette et la BeagleBone.

Le câblage est le suivant :

  • P9_11 (GPIO_30) ---[buffer]---> floppy pin 32 (SIDE1)
  • P9_13 (GPIO_31) ---[buffer]---> floppy pin 18 (DIR)
  • P9_15 (GPIO_48) ---[buffer]---> floppy pin 20 (STEP)
  • P9_12 (GPIO_60) <---[1K pullup to P9_3]--- floppy pin 26 (TRK00)
  • GND ------> floppy pin 10 (MOTEA)
  • GND ------> floppy pin 14 (DRVSA)

Le câblage suivant doit être amovible et sera a effectuer après boot de la BeagleBone :

  • P8_39 (GPIO_76) <------ DGND
  • P8_40 (GPIO_77) <------ DGND
  • P8_41 (GPIO_74) <------ DGND
  • P8_42 (GPIO_75) <------ DGND
  • P8_43 (GPIO_72) <------ DGND
  • P8_44 (GPIO_73) <------ DGND
  • P8_45 (GPIO_70) <---[1K pullup vers P9_3]--- floppy pin 30 (RDATA)
  • P8_46 (GPIO_71) <---[1K pullup vers P9_3]--- floppy pin 8 (INDEX)

Extraction d'une image de flux brut au format SuperCard Pro

Récupération des fichiers ou d'une image ADF