Jump Into Retro & Indie! | Dein Retrospiele & Indiegaming Portal

Wie funktioniert die Floppy-Emulation mit den GOTEK Laufwerken?

Einblick in die Speicherung von virtuellen Floppys auf USB Sticks.
SHARE
Home » Retro Technik » Wie funktioniert die Floppy-Emulation mit den GOTEK Laufwerken?

Um zu verstehen, was bei der Floppy-Emulation unter der USB-Stick-Haube genau geschieht, müssen wir ein Stück weit Einblick in die technische Funktionsweise der Emulations-Laufwerke aber auch in Richtung der dazugehörigen Software nehmen. Dann lässt sich z. B. die Frage zur genauen Größe der benötigten USB-Sticks beantworten oder wie mehrere Master Boot Records auf einem USB Stick abgelegt werden. Und keine Sorge: Aufgesägt wie im Titelbild wurde nichts ;-) stattdessen nehmen wir die USB Sticks mit einem Hex Editor auseinander!

Wie groß muss ein USB-Stick zur Disketten-Emulation mindestens sein?

Die Kurzform für Schnellleser: Bei 100 virtuellen Disketten benötigt ihr mindestens einen 256 MB Stick, bei 1000 Floppys sollte er mindesten 2 GB an Daten fassen können. Um zu erklären wie diese Werte zustande kommen, muss ich etwas weiter ausholen, denn mit der Milchmädchenrechnung 100 Disketten x 1.440 KB ist es nicht ganz getan. Vor allem nicht, wenn man verstehen möchte, wie die Floppy-Emulation genau funktioniert.

Alles Hexenwerk? Sicher nicht, aber auch ganz sicher nicht standardkonform!

Wie ich bereits im ersten Artikel zum GOTEK SFR1M44-U100(K) beschrieben habe, könnt ihr eure Floppy-Sticks entweder direkt mit dem GOTEK-Laufwerk auf 1000 emulierte Disketten autoformatieren und -partitionieren lassen – 1000 Disketten, die allerdings nur unkomfortabel verwaltet werden können – oder mit dem ebenfalls bereits beschriebenen ipcas-Tool auf 100 Floppys partitionieren und formatieren.

Zuerst müssen wir feststellen, dass die Partitionierung dieser Emulations-USB-Sticks keiner standardisierten Form entsprechen können. Denn, technisch gesehen, müssten alle 100 bzw. 1000 Partitionen, sofern sie denn standardkonform angelegt würden, als logische Partitionen in einer erweiterten Partition des USB-Sticks liegen. Diese vielen logischen Partitionen hätten dann jedoch alle keinen eigenen Master Boot Record (MBR), der nämlich nur einmal je echtem (physischen) Datenträger vorliegt. Und zwar im ersten Sektor (Sektor 0).  Für unseren Zweck der Diskettenemulation ist jedoch in jeder emulierten Disk ein solcher MBR erforderlich. Nur so kann dem System eine echte Floppy vorgegaukelt werden. Die Entwickler der GOTEK-Laufwerke müssen also eine proprietäre Lösung nutzen, die keinen bisherigen Standards entspricht.

Wie werden die Nutzerdaten auf einem Floppy-Stick abgelegt? Und wie wird das Problem multipler MBRs gelöst?

Um das herauszufinden hilft uns die Verwendung eines Hex-Editors, z. B. der kostenlose HxD. Damit können wir unsere Floppy-Sticks öffnen und auf Byte-Ebene betrachten. Die von mir genutzten Sticks wurden für die vorliegende Analyse:

  • als erstes komplett mit Nullen überschrieben,
  • ein USB-Stick wurde dann mit der ipcas PC-Software auf 100 Disketten partitioniert und formatiert,
  • ein anderer USB-Stick mit dem GOTEK-Laufwerk auf 1000 Disketten partitioniert und formatiert.

Nehmen wir zunächst den auf 100 Disks formatierten Floppy-Stick und suchen nach der typischen MBR-Signatur 0x55AA welche in den letzten 2 Bytes des ersten Sektors jeder physischen Disk liegen sollte. Und tatsächlich taucht diese Zeichenfolge erwartungsgemäß an der richtigen Stelle auf:

Bootsektor MBR 0x55AA hex alle 180000h Bytes auf USB Floppy-Emulator Stick zu finden ipcas Stick Sektor 0

Ganz unten: Master Boot Record mit 0x55AA hex im Sektor 0 (ipcas Stick)

Wenn wir im obigen Bild genau hinschauen, dann taucht auch die Datenträgerbezeichnung FLPPY0 in den Daten auf (3. Zeile), die Bezeichnung der ersten Floppy auf dem Stick.

Insgesamt sollten wir jedoch die MBR-Signatur und grundlegend ähnliche aufgebaute Sektoren 100 Mal finden. Suchen wir also weiter. Es findet sich der nächste MBR-Eintrag im Sektor 3072, der ab Offset 180000h startet. Wieder als die letzten zwei Bytes, d. h. hier muss eine neue Floppy mit eigenem Master Boot Record starten, denn ein zweiter MBR auf der ersten Floppy (bzw. Floppy 0) würde keinen Sinn ergeben. Und tatsächlich lässt sich im selben Sektor die Bezeichnung FLPPY1 finden, die von der ipcas-Software festgelegte Datenträgerbezeichnung, unter der sich die jeweilige Diskette auch einem Betriebssystem zu erkennen geben würde:

Bootsektor MBR 0x55AA hex alle 180000h Bytes auf USB Floppy-Emulator Stick zu finden ipcas Stick Sektor 3072

Wieder ganz unten: MBR mit Signatur 0x55AA hex im Sektor 3072 und Bezeichnung FLPPY1 (ipcas Stick)

So sieht ein GOTEK-Floppy-Stick unter der Haube aus

Nachdem wir einen mit der ipcas Software erstellten Stick analysiert haben, schauen wir uns im nächsten Schritt einen mit dem GOTEK-Laufwerk formatierten Floppy-Stick an. Ebenfalls zuvor mit Nullen beschrieben. Es ergibt sich ein sehr ähnliches Bild: Der Bootcode ist zwar etwas anders (wir können in der ersten Zeile z. B. IBM 6.0 lesen statt MSDOS 5.0), aber die 0x55AA MBR-Signatur ist wieder am Ende des 1. Sektors und ebenso erneut alle 180000h Bytes bzw. alle 3072 Sektoren. Also ziemlich genau so, wie es die ipcas Software managt:

Bootsektor MBR 0x55AA hex alle 180000h Bytes auf USB Floppy-Emulator Stick zu finden GOTEK Stick Sektor 0

Aufbau ist identisch: Bootsektor mit MBR-Signatur 0x55AA hex in den letzten beiden Bytes und dann alle 180000h Bytes (GOTEK Stick)

Aufgrund der eben ermittelten Werte lässt sich sagen, dass eine Diskette sowohl auf dem ipcas-Stick als auch auf dem GOTEK-USB-Stick minimal mehr Speicher als die benötigten 1440 KB reserviert. Denn wie wir mit dem Hex-Editor erkennen können, belegt eine Diskette auf dem Stick genau 180000h Byte = 1572864 Byte = 1536 KB = 1,5 MB. Multipliziert mit der Anzahl der gewünschten Floppys entsprechen 1000 x 1,5MB = 1,47 GB, weshalb ein handelsüblicher 2 GB USB-Stick zur Floppy Emulation genommen werden sollte. Bei 100 Floppys benötigt ihr demnach nur 150 MB respektive einen üblicherweise 256 MB großen USB-Stick.

Die Funktionsweise der GOTEK-Laufwerke ist dann wie folgt: Je nach eingestellter Floppy Disk Nummer, spricht das GOTEK-Laufwerk genau die Sektoren an, die das entsprechend Vielfache von den 3072 Sektoren sind, die eine jede Floppy einnimmt (0 x 3072 = Sektor 0 = die erste Floppy; 1 x 3072 = Start der zweiten Floppy, usw.). Die Daten werden dann bei der Abfrage des Floppy Controllers in die erwarteten Signale auf dem Floppy Bus ausgegeben und so an das Host-System übertragen. Im jeweils verwendeten Speicherbereich des Sticks, also den 3072 Sektoren je Floppy, befindet sich dann genau ein MBR, den das System erkennt und ausliest. Die Emulation wird deshalb für das System transparent. Aber auch aufgrund dessen, dass die Daten über die alte 34Pin Shugart-Schnittstelle ohne Treiber übertragen werden, funktioniert die Emulation so reibungslos.

Reibungslos? Warum wird nur das erste Laufwerk unter Windows angezeigt?

Wenn wir unsere Sticks direkt an einen USB-Port des PCs anstecken, dann drängt sich diese Frage gleich als nächstes auf. Denn wie im nachfolgenden Screenshot zu sehen ist, erkennt Windows zwar den Stick in voller Größe, aber davon nur die erste Partition. Die Erklärung: Da mehrere MBRs auf einem Laufwerk keinem Standard entsprechen, werden die Floppy Sticks, wenn man sie direkt am normalen USB des PCs ansteckt, auch nur als ein Laufwerk angezeigt. Nämlich genau die erste Diskette, die auf dem Stick abgelegt ist.

Windows und Co. erkennen und lesen den ersten Sektor (Sektor 0) und damit den ersten MBR. Weitere MBRs werden auf dem Stick überhaupt nicht gefunden, da Betriebssysteme in der Regel einfach keine weiteren Master Boot Records erwarten, sodass eben nur ein Laufwerk zu sehen ist. In unserem Fall der Größe unserer Floppy entsprechend, gerundete Kapazität 1 MB:

GOTEK und ipcas Floppy Stick nur erster MBR Windows Datenträgerverwaltung 1MB

Die Windows Datenträgerverwaltung erkennt die USB-Sticks in voller Größe, zeigt aber nur die 1. Floppy mit ~1 MB Kapazität an (ipcas & GOTEK Stick)

Fazit, interessante Nebenergebnisse & Ausblick

Klar spielt heute die Speicherkapazität von USB-Sticks kaum noch eine Rolle, dennoch ist es interessant zu verstehen, wie die Daten einer virtuellen Floppy vom Emulator auf dem Stick abgelegt werden. Durch unsere gewonnenen Erkenntnisse können wir (1.) Rückschlüsse auf eine sinnvolle Größe des benötigten USB-Sticks ziehen und (2.) wir haben herausgefunden, dass das GOTEK Laufwerk SFR1M44-U100-K seine Daten auf die gleiche Weise auf dem USB-Stick strukturiert, wie auch die ipcas Software, wodurch die Kompatibilität entsteht.

Interessant ist, dass die ipcas Software im vorletzten Sektor einer jeden emulierten Disk einen Zeitstempel zur letzten Änderung der Floppy erzeugt (siehe Bild unten). Meine verwendeten GOTEK-Laufwerke zeigen dieses Verhalten nicht. Weiterhin befindet sich im Sektor 3071, Offset 17FE50h, der Eintrag „MAX BLOCK:100“. Daran erkennt das ipcas Tool, wie viele Floppys auf dem Stick angelegt wurden. Fügt man diesen Eintrag an gleicher Stelle auf einem GOTEK-formatierten Stick hinzu – dort fehlt dieser Eintrag nämlich – so können danach die darauf vorhandenen Floppys in der ipcas Software gemanagt und editiert werden. Wer nun hofft, dass damit die 100 Disketten Limitierung umgangen werden kann, der irrt. Die ipcas Software kann oder will nur starr mit bis zu 100 Floppys umgehen – sehr schade.

Zudem haben wir oben herausgefunden, dass der reservierte Speicherbereich je Floppy etwas größer dimensioniert ist, als eigentlich benötigt. Genauer gesagt 96 KB größer, wobei dadurch das Potential einer Überformatierung entsteht. Dies war seinerzeit natürlich eine praktische Möglichkeit etwas mehr Speicherplatz auf den Disks zu erhalten, wurde aber auch als einfacher Kopierschutz verwendet. Damit eröffnen sich neue Perspektiven für weitere Tests, um z. B. herauszufinden, wie flexibel die GOTEKs mit kopiergeschützten Disketten oder generell mit überformatierten Disks umgehen können.

Wer hierzu bereits Erfahrungen hat, oder aber Fragen und Wünsche, die Kommentarspalte wartet unten auf euch!

Informationssektor ipcas USB Floppy-Emulator Stick Sektor 3071

Informationssektor 3071 bei den ipcas Floppy-Sticks mit Zeitstempel und Anzahl der Disks (Max Block:100)

Weiterführende Links und Tutorials

 

4 Kommentare

  • […] Analyse der Floppy Sticks: Wie funktioniert die Speicherung der Daten und der multiplen MBRs? […]

  • […] Analyse der Floppy Sticks: Wie funktioniert die Speicherung der Daten und der multiplen MBRs? […]

  • Michael sagt:

    Hallo,
    in dem anderen (Haupt)Artikel schreiben Sie, daß nach dem einfachen Kopieren auf eine bootfähige USB-Floppys diese ihre Bootfähigkeit verliert, weil das bootflag gelöscht werde.

    Da stellt sich mir die Frage: Welchen Sinn hat es dann, daß die USB-Floppy als bootfähig angelegt werden können, wenn sie nicht dementsprechend (also mit Ergänzung durch die entsprechenden Dateien) genutzt werden kann?

    Der Weg über Winimage, also im Ergebnis bei jeder Änderung des Floppyinhalts eine neue bootfähige Disk und deren Image zu erstellen, ist ziemlich umständlich. Sollte es nicht möglich sein, das bootflag mit einem Diskeditor erneut richtig zu setzen? Sie beschreiben ja oben den Aufbau der USB-Floppys auf dem USB-Stick und erwähnen ja auch das bootflag. Dann müßte doch dessen nachträgliches Ändern möglich sein. Oder sehe ich das zu simpel?

    • Hallo Michael,

      Danke für Deinen Kommentar. Ich kann Dir nur zustimmen: Dass die ipcas Software beim Hinzufügen von neuen Dateien zu einer zuvor bootfähigen Diskette das bootflag entfernt, ist ein großer Mangel. Diesen Programmfehler könnten nur die ipcas Entwickler beheben, jedoch wird die Software nicht weiter entwickelt.

      Ihre Idee, die Bootfähigkeit mithilfe des Hexeditors nachträglich wieder herzustellen könnte tatsächlich funktionieren. Hierzu müsste man genau anschauen, welche Daten sich im ersten Sektor der Diskette ändern, um diese nach dem Kopieren neuer Daten wieder zu korrigieren. Ein interessanter Ansatz, aber ob dies so einfach funktioniert kann ich ohne Tests nicht sagen. Und ob es weniger umständlich ist als die von mir skizzierte WimImage Methode ist, wage ich zu bezweifeln.

      Einen guten Ausgangspunkt für Tests in diese Richtung liefern der englische und deutsche Wikipedia Eintrag zum Thema MBR und dessen Aufbau: https://en.wikipedia.org/wiki/Master_boot_record#Disk_partitioning

      Viele Grüße
      Axel Teichmann

Hinterlasse einen Kommentar

Deine Email Adresse wird nicht veröffentlicht.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.