Lesegerät für Amiga Floppies

Da ich letztens mal wieder meinen Amiga aktiviert habe kam mir die Idee mal ein paar Daten vom meine Amiga Disketten zu retten. Ich hatte damals ein paar Sachen programmiert, Unterlagen aus meiner Studienzeit und so weiter. Prinzipiell gibts da ja verschiedene Möglichkeiten, aber ich fand es interessant mit einem Handelsüblichen PC Laufwerk und einem Mikrocontroller Amiga Disketten zu lesen, und später vielleicht auch zu schreiben.

Es gibt halb kommerzielle Produkte dafür zu kaufen, z.B. das KryoFlux, das kost so um die 100€, aber irgendwie macht das selber bauen mehr Spass. Und wenn ich sehe wie voll die Platine des KryoFlux ist, denke ich mir das geht einfacher mit modernen Microcontrollern, man muss nur den richtigen finden.

Im Netz findet man einige Informationen zum Interface von Floppy Laufwerken, dem Shugart Bus, der Bus arbeitet mit TTL Pegeln, also 0-5V. Da ich aber Sachen besser begreife wenn ich sie „sehe“ hab ich mal meinen Logikanalysator an den Floppy Port des Amiga gehangen und eine Diskette formatiert:

logik01

In der Grafik hab ich leider die Signale WD (Write Data) und WE (Write Enable) verkehrt bezeichnet. Hier sieht man schön wie die Signale zusammenspielen. Mit einem kurzen Impuls auf /STEP wird zur nächsten Spur gesprungen. Quasi gleichzeitig wird die Seite der Floppy eingestellt auf der gearbeitet werden soll, das wird vom Ready Signal jeweils kurz quittiert. Nach einer gewissen Zeit wird dann wd (WE) auf low gezogen um einen schreibzugriff einzuleiten. Daraufhin wird eine Seite geschrieben we (WD), dann die Seite (SIDE) gewechselt und diese dann geschrieben. Später werden dann beide Seiten eingelesen und verglichen ob der Schreibzugriff fehlerfrei war.

Gut, das Schreiben ist mir erstmal egal, wichtig ist die Grundlagen wie MFM codierung und die Ansteuerung des Laufwerks zu programmieren.

 

Da die Informationen auf einer Floppy und anderen Magnetischen Medien durch eine änderung der Magnetisierungsrichtung gespeichert werden kann man da nicht einfach Nullen und Einsen raufschreiben. Der Floppy Controller würde irgendwann den Takt verlieren wenn zuviele Nullen oder Einsen hintereinander kommen. Deshalb wird die Information durch unterschiedliche Abstände zwischen der änderung der Magnetisierung gespeichert.logik02 Hier sieht man drei Unterschiedliche lange Abstände: 8 µs, 6 µs und 4 µs. Bei einer HD Floppy mit 1,440MB wären das 2,3,4 µs Abstände. Da der Amiga aber in der Regel nur DD Floppylaufwerke verbaut hatte interessiert mich nur DD Disketten zu lesen.