Re: DS-DD-Floppy im modernen USB-LW lesen

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Wed, 11 Dec 2013 19:40:27 +0100 (CET)

Marc Santhoff wrote:
> On Di, 2013-12-10 at 13:20 +0100, Oliver Fromme wrote:
> > Vorausgesetzt natürlich, dass Dein Mainboard noch den passenden
> > Anschluss für sowas hat. Ist heutzutage nicht mehr so verbreitet.
>
> Das ist der springende Punkt. Ich besitzer schon ein Laufwerk mit Kabel.
> Nur einen Rechner mit dem passenden Anschluß will erstmal aktiviert
> werden.

Es gibt durchaus noch Mainboards mit Floppycontroller. Aber
heutzutage achtet man beim Kauf meistens nicht mehr auf sowas.

Leider gibt es auch keine Floppycontroller in Form von PCI-
Karten (geschweige denn PCIe), höchstens noch gebraucht auf
ISA-Karten, und ISA-Slots wird Dein Board sicherlich auch
nicht haben.

Wird also nichts weiter übrigbleiben, als einen älteren PC
zu reaktivieren.

> > > 1,44 MB-Laufwerk
> > > 640kB netto-Floppy DS/DD
> >
> > DS-DD wäre eigentlich 720 kB (2 Seiten * 80 Spuren * 9 Sektoren
> > * 512 Bytes). Wie sind die denn formatiert? Wenn's wirklich
> > 640 kB sind, tippe ich auf 8 Sektoren pro Spur, aber theoretisch
> > sind auch exotischere Formate wie z.B. 16 Sektoren mit je nur
> > 256 Bytes denkbar; sowas habe ich mal bei einem MIDI-Keyboard
> > mit eingebautem Diskettenlaufwerk gesehen.
>
> Das ist ein sehr exotisches CP/M-Format. Für die Liebhaber: ein Memotech
> hat die mal geschrieben.

Nochmal: Wie sind die denn formatiert?

Und: Bist Du sicher, dass ein PC-Floppycontroller die lesen
kann? C64-Disketten zum Beispiel kann der nicht lesen, weil
die auf Bitebene eine GCR-Kodierung verwenden. Ein PC-Floppy-
controller unterstützt nur MFM-Kodierung. Auch Amiga-Disketten
kann ein PC nicht lesen -- ist zwar auch MFM, aber das Sektor-
Header-Format ist ein anderes.

> Seltsam ist der USB-Treiber schon. Auch wenn keine Diskette drin steckt,
> prüft der ständig oder so, es kommen dauernd Geräusche aus dem Laufwerk
> und die LED leuchtet. Oder das Laufwerk ist seltsam.

Das macht der USB-Host-Controller.

Ich muss da etwas weiter ausholen. So ein USB-Floppylaufwerk
ist ja nichts weiter als ein externes Gehäuse, in dem sich drei
Komponenten befinde: Ein ganz normales PC-Floppylaufwerk, ein
Floppycontroller (der früher halt auf dem Mainboard saß), und
ein USB-Device-Controller, der nach außen das USB-UFI-Protokoll
spricht und nach innen den Floppycontroller ansteuert.

PC-Floppylaufwerke haben die Eigenheit, dass der Sensorwert
für das Einlegen/Wechseln einer Diskette nur dann aktualisiert
wird, wenn der Steppermotor bewegt wird. Frag mich nicht,
wieso, aber das war schon immer so.

Wenn also der USB-Device-Controller wissen möchte, ob eine
Diskette eingelegt wurde (um dies via USB zu signalisieren),
muss er in regelmäßigen Abständen den Stepper-Motor um eine
Spur bewegen. Dies macht sich als leises "Ticken" bemerkbar.

> > USB-Diskettenlaufwerke verwenden das UFI-Protokoll (was bei
> > Dir auch korrekt im dmesg erscheint). Hierbei kann man den
> > Medientyp (DD, HD) und die genauen Parameter (Transferrate,
> > Sektoren pro Spur usw., wird im UFI-Standard "flexible disk
> > page" genannt) mit einem "MODE SELECT" auswählen. Das Problem
> > ist, dass FreeBSD diese Möglichkeit nicht bietet, soviel ich
> > weiß.
>
> Schade, wäre auch zu einfach gewesen. Aber verständlich, als es
> USB-Floppies gab, waren die DD-Disketten schon lange Geschichte. Klar
> das niemand sowas implmentieren und pflegen möchte.

Ja, FreeBSD hat eigentlich gar keinen richtigen USB-UFI-Treiber.
Das macht der umass(4)-Treiber so "nebenbei" als Abfallprodukt,
aber der tut nichts weiter, als die CAM-Kommandos (read/write)
von SCSI nach UFI zu konvertieren, wenn er merkt, dass da ein
USB-Floppylaufwerk angeschlossen ist. Irgendwelche speziellen
Floppy-Funktionen gibt es nicht, man kann nicht einmal eine
Diskette formatieren. Ich wüsste zumindest nicht, wie.

Im Grunde genommen müsste man einen UFI-Treiber schreiben (der
auch durchaus Teil von umass(4) sein kann), der das nachbildet,
was ein PC-BIOS schon vor 30 Jahren gemacht hat: Verschiedene
Bitraten setzen (500 kbps, 250 kbps, 300 kbps), dann jeweils
versuchen, den ersten Sektor zu lesen. Sobald das klappt, weiß
man, welche Bitrate verwendet werden muss, und aus den Daten in
Sektor Null ist ersichtlich, welches Format die Diskette hat
(Anzahl Seiten und Spuren, Sektoren pro Spur). Und für nicht-
standard-Formate bräuchte man ein Kommandozeilen-Tool, z.B.
wenn die Sektorgröße nicht 512 Bytes ist.

Ist alles nicht schwierig, aber halt Aufwand. Wie Du schon
schriebst, möchte sich das heutzutage kaum jemand an die Backe
binden, denn Disketten werden kaum noch verwendet.

> Wenn das klappt kann ich mich auch gleich mit den 5,25"-Scheiben
> befassen ...

Oha ... Naja, wenn die noch lesbar sind ... Es heißt, bei
Disketten setzt der Verfall mit etwa zehn Jahren ein. Wobei
SD/DD vermutlich noch etwas länger hält als HD.

Wenn ich in alten Kartons noch Disketten finde, kippe ich die
unbesehen in den Restmüll.

Nur ein paar alte 14-Zoll-Disketten habe ich aus Nostalgie
aufgehoben. Die stammen von einem NCR-Mainframe-Ungetüm
aus den 60er/70er Jahren. Aber lesen kann ich die natürlich
nicht. Und daran ist nicht FreeBSD schuld. ;-)

Gruß
   Olli

-- 
Oliver Fromme,  secnetix GmbH & Co. KG,  Marktplatz 29, 85567 Grafing
Handelsregister:  Amtsgericht Muenchen, HRA 74606, Geschäftsfuehrung:
secnetix Verwaltungsgesellsch. mbH, Handelsreg.: Amtsgericht München,
HRB 125758, Geschäftsführer:  Maik Bachmann,  Olaf Erb,  Ralf Gebhart
FreeBSD-Dienstleistungen/-Produkte + mehr: http://www.secnetix.de/bsd
"Share your knowledge.  It is a way to achieve immortality." -- The Dalai Lama
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 11 Dec 2013 - 19:40:39 CET

search this site