pc-floppy-switch: ein Twist zum umschalten

UK flag Looking for a shorter, English version of this? Try tldr.zotteljedi.de/pc-floppy-switch/.

Am Anfang war ein Ärgernis

Wer kennt es nicht: man hat einen hübschen Retro-PC mit zwei unterschiedlichen Laufwerktypen, sagen wir 5,25"/360K als Laufwerk A und 3,5"/720K als Laufwerk B. Dann möchte man MS-DOS 5.0 installieren, das auf 3 Disketten des Typs 3,5"/720K daher kommt. Blöderweise kann ein PC aber nur von Laufwerk A booten, und da passt die Setup-Diskette beim besten Willen nicht rein... Also auf die Büchse, Floppy-Kabel umstöpseln, MS-DOS installieren. So weit, so gut; aber danach fällt einem im täglichen Gebrauch auf, dass der Rechner vom historischen Charakter her eigentlich eher ein 5,25"-Laufwerk als A haben sollte, oder ertappt sich ständig dabei das falsche Laufwerk auszuwählen, oder will doch noch mal eben von der MS-DOS 3.3 Diskette booten...

Bei neueren PCs ermöglicht das BIOS häufig die Laufwerke zu tauschen, aber bisher habe ich diese Option erst ab 386er aufwärts gesehen. Bei der XT-Klasse oder den vielen AT-Clones ist man in der Regel darauf angewiesen, die Laufwerke physisch zu tauschen. Verbunden mit klemmenden Gehäusedeckeln oder zu kurzen Floppy-Kabeln... ich denke das Bild ist ausreichend deutlich gemalt. Aber bevor wir zu meiner Lösung kommen wollen wir erst einmal verstehen, was da passiert.

Wie funktioniert das eigentlich?

Die meisten Leser werden vermutlich schon mal ein PC-Floppy-Kabel in der Hand gehabt haben. Sehr auffällig ist der Twist: im hinteren Bereich, zwischen den Anschlüssen für Laufwerk A und denen für Laufwerk B, sind 7 Leitungen aus dem Flachkabel herausgetrennt, um 180° gedreht, und dann wieder normal in die Stecker eingefügt.

Dieses Manöver hat offensichtlich etwas damit zu tun, ob ein Laufwerk als A oder B angesprochen wird. Schauen wir uns die Pin-Belegung mal etwas genauer an:

Pin Signal Signal Pin
1 GND /REDWC 2
3 GND n/c 4
5 GND n/c 6
7 GND /INDEX 8
9 GND /MOTEA 10
11 GND /DRVSB 12
13 GND /DRVSA 14
15 GND /MOTEB 16
17 GND /DIR 18
19 GND /STEP 20
21 GND /WDATA 22
23 GND /WGATE 24
25 GND /TRK00 26
27 GND /WPT 28
29 GND /RDATA 30
31 GND /SIDE1 32
33 GND /DSKCHG 34

Die Leitungen 10 bis 16 sind von der Drehung betroffen, d.h. es ergibt sich folgendes Bild:

Pin Signal vor Drehung Signal nach Drehung
10 /MOTEA /MOTEB
11 GND GND
12 /DRVSB /DRVSA
13 GND GND
14 /DRVSA /DRVSB
15 GND GND
16 /MOTEB /MOTEA

Die betroffenen Signale sind MOTEx (Motor Enable) und DRVSx (Drive Select), und durch die Drehung wird A jeweils zu B und umgekehrt. Das heißt bei gleicher Pin-Belegung im Floppy-Laufwerk ergibt sich eine unterschiedliche Identität, abhängig davon, ob das Laufwerk vor oder nach dem Twist angeschlossen wird.

Die Lösung: ein Twist zum umschalten

Meine Idee zur Lösung des Problems ist einen weiteren Twist in das Kabel einzufügen, den man allerdings mit einem Kippschalter aktiv oder neutral schalten kann.

Bei neutralem Twist funktioniert das Kabel wie gewohnt: das Laufwerk am äußersten Ende ist A, das Laufwerk am mittleren Anschluss ist B. Wenn der zweite Twist jedoch aktiv ist, dann sieht das Laufwerk am mittleren Anschluss bereits eine Drehung in Richtung Controller, wohingegen der Anschluss am äußersten Ende durch die "normale" im Kabel vorhandene Drehung wieder die ursprüngliche Pin-Belegung sieht, also die für Laufwerk B.

Zur Umsetzung kamen als erstes Relais in den Sinn, aber das wären vier Stück gewesen, die noch dazu im angezogenen Zustand ca. 250 mW an Verlustleistung produzieren. Das wirkte irgendwie recht unelegant. Bei genauerem Hinsehen hat sich gezeigt, dass die umzuschaltenden Signale unidirektional sind, nämlich nur vom Floppy-Controller ausgehend an die Laufwerke. Somit ergibt sich auch die Möglichkeit einen Buffer bzw. Line Driver wie den 74LS244 zu verwenden. Gerade der 74LS244 hat sogar die praktische Eigenschaft, 2 x 4 Leitungen schalten zu können, mit separaten Output-Enable-Leitungen. Die resultierende Schaltung sieht logisch betrachtet ungefähr so aus:

Anstelle des 74LS244 kann man zum deutlich besser verfügbaren 74HCT244 greifen (was ich auch getan habe). Ich habe in diesem Diagramm absichtlich auch die inaktiven Wege farblich gekennzeichnet, um auf ein wichtiges Thema aufmerksam zu machen: hier werden Logik-Ausgänge miteinander verbunden. Das ist normalerweise ein elektrotechnisches Pfui-pfui, weil gegeneinander treibende Ausgänge (also einer sagt HIGH, einer sagt LOW) zur Zerstörung der Bauteile führen können. In diesem Szenario ist das aber okay, wenn konstruktiv ausgeschlossen wird, dass beide Ausgänge gleichzeitig treiben.

Wie erwähnt verfügen beide Treiber-Gruppen über eigene Output-Enable-Leitungen. Sind diese LOW schalten die Treiber das Eingangssignal auf die Ausgänge durch. Liegt HIGH an Output Enable an, schalten die Treiber ihre Ausgangsstufen ab, d.h. sie "lassen los" und die Leitung kann von einem anderen Teilnehmer angesteuert werden. Man muss also nur sicherstellen, dass zu keiner Zeit mehr als ein Teilnehmer ein Output-Enable-Signal erhält. Bei Verwendung eines Ein-Ein-Schalters ist dies sichergestellt, weil zuerst der alte Kontakt geöffnet wird, bevor der neue Kontakt geschlossen wird (break before make).

Die vollständige Schaltung sieht so aus:

Die Pullup-Widerstände an den Eingängen sind notwendig, weil diese bei 74HCT-Bausteinen nicht automatisch HIGH sind, wie es bei 74LS-Bausteinen der Fall ist; das war die wesentliche Änderung von Revision 1.0 zu Revision 1.1. ;-)

Mein erster Entwurf war eine einseitige Leiterplatte mit ein paar Drahtbrücken auf der Oberseite. Das hat an sich auch gut funktioniert, aber etwas später bin ich auf die Firma AISLER aufmerksam geworden und war total begeistert: zweiseitige Leiterplatten, mit Lötstopplack und Bestückungsdruck, Fertigung in Deutschland, und das ganze für weniger als 3,50 EUR pro Leiterplatte (bei diesem konkreten Projekt und 8 Arbeitstagen Fertigungszeit). Dementsprechend ist Revision 1.2 auch als zweiseitige Leiterplatte entstanden und damit noch ein bisschen kompakter ausgefallen.

Die Anschlüsse für das Flachbandkabel waren ursprünglich als 8-polige Wannenstecker vorgesehen, also verpolungssicher dank der Aussparung für die entsprechende Nase an der Pfostenbuchse. Da ich aber im Schaltplan zum Pin-Header gegriffen hatte, wurden im Layout auch dessen Umrisse gezeigt... langer Rede kurzer Sinn: in Revision 1.2 der Leiterplatte habe ich die Widerstände so dicht an den Anschlüssen platziert, dass die Wannenstecker nicht mehr gepasst haben. Nach der Bestückung mit Pin-Headern hat mir das aber im Vergleich zur früheren Version mit Wannensteckern so viel besser gefallen, dass ich dabei geblieben bin. Jetzt muss man zwar beim Aufsetzen der Pfostenbuchse aufpassen, aber wenn man das Kabel richtig gebaut hat, dann kann das Anschließen gar nicht mehr schief gehen.

Womit wir bei der Hauptschwierigkeit angelangt wären: es wird ein spezielles Kabel benötigt, das es so nirgends fertig gibt. Zur Herstellung wird ein normales Floppy-Kabel benötigt, sowie zwei 8-polige Pfostenbuchsen (Reichelt-Artikelnummer "PFL 8"). Mit einem Messer trennt man nun die Leitungen 10 bis 17 aus dem Verbund der 34 Leitungen heraus. Achtung: das ist eine mehr als bei dem normalen Twist, der die Leitungen 10 bis 16 umfasst. Der Grund ist einfach: 7 Leitungen in eine 8-polige Pfostenbuchse einpassen ist fummelig und fehleranfällig; 8 Leitungen einpassen ist beinahe narrensicher. Da Leitung Nummer 17 sowieso nur GND trägt, fehlt sie auf der anderen Seite auch nicht.

Das fertige Kabel sieht dann in etwa so aus:

Ansonsten wird noch ein Anschluss für die Spannungsversorgung (+5 Volt) benötigt, sowie natürlich der Schalter, mit dem die Laufwerkreihenfolge umgeschaltet werden soll. Zur Spannungsversorgung bietet es sich an, ein Floppy-Stromkabel mit Molex-Stecker zu zerlegen. In meinem Fall habe ich ein Y-Kabel verwendet, d.h. die Schaltung hängt sich wie ein Parasit dazwischen und verbraucht selbst keinen Anschluss -- was gerade in alten PCs sehr nützlich ist, weil hier die Zahl der Stecker meist knapp bemessen ist (= immer einer weniger als man braucht).

Das fertig montierte Kabel mit Leiterplatte:

Den Schalter kann man z.B. wie hier auf dem Bild in eine Slotblende einbauen und somit von der Außenseite zugängig machen. Alternativ kann auch ein ungenutzter Durchbruch für einen D-Sub-Stecker (COM, LPT) verwendet werden, indem man ein kleines Plättchen aus Sperrholz zurecht sägt und den Schalter damit befestigt.
Bei der Montage des Kabels im Rechner muss darauf geachtet werden, dass die Leiterplatte keinen Kontakt zum Gehäuse oder anderen Steckkarten bekommt. Eine einfache Lösung besteht darin, die problematische Stelle in einer Plastiktüte zu versenken oder mit Papier zu umwickeln.

Update: inzwischen nenne ich einen 3D-Drucker mein Eigen und würde das heute mit einem kleinen Gehäuse erschlagen. Wenn da Interesse besteht, einfach melden; ansonsten landet das auf der "könnte man mal"-Liste für den Fall, dass ich künftig einen weiteren Switch baue...

Zusammenbau und Inbetriebnahmetest

Beim Zusammenbau der Leiterplatte folgt man am besten der allgemeinen Regel "von niedrig zu hoch", d.h. zunächst werden die niedrigen (flachen) Bauteile eingelötet. Der Grund hierfür ist einfach: wenn man die Leiterplatte zum Löten wendet, dann haben die Bauteile Kontakt zur Unterlage und verrutschen nicht bzw. fallen nicht heraus. Sind bereits höhere Bauteile eingesetzt, dann wird es fummelig flache Bauteile wie beispielsweise Widerstände oder Dioden einzusetzen.

Diesem Gedanken folgend setzt man als nächstes den IC-Sockel ein. Wer möchte, kann auch den IC direkt einlöten. Ich hatte den Sockel während der Prototypen-Phase genutzt, um die Bauteile leichter recyclen zu können. Unerfahreren Bastlern kommt die Unempfindlichkeit gegenüber der Hitze beim Löten zu Gute: den Sockel kann man auch "braten", der IC mag das nicht so sehr. Sowohl bei ICs bzw. Sockeln als auch bei den Pin-Headern hat es sich bewährt, zunächst zwei diagonal gegenüberliegende Pins einzulöten, danach den korrekten Sitz des Bauteils zu überprüfen und durch vorsichtiges Erhitzen und Zurechtruckeln bei Bedarf nachzubessern. Nicht zu stark drücken, bevor das Lötzinn richtig aufgeschmolzen ist, sonst reißt man leicht die Leiterbahnen vom Trägermaterial und die Platine ist hin!

Als Anschlusskabel für den Kippschalter hatte ich zu einem fertig konfektionierten Kabel mit Stecker gegriffen ("Buchsenleiste", z.B. Bestell-Nr. 451472 bei Pollin). Für die Spannungsversorgung hatte ich bei dem oben gezeigten Exemplar ein Kabel benutzt, das für den Anschluss eines Lüfters gedacht war und zwei entsprechende Kabel aufwies. Beim Zusammenbau eines späteren Exemplars habe ich dann gelernt, dass es auch Y-Kabel mit dickeren Leitungen gibt, die nicht in die Bohrungen meiner Leiterplatte passen. In dem Fall hatte ich mir mit eigenen Stücken Litze beholfen, die ich mit den dickeren Kabeln verspleißt habe. Also am besten vorher ausprobieren, ob das Kabel passt.

Als Inbetriebnahmetest habe ich den Adapter über eine Hand voll Steckverbinder mit einem Steckbrett (Breadboard) verbunden und jeden Ausgang (über Vorwiderstand) mit einer LED versehen. So lässt sich leicht sicherstellen, dass die richtigen Eingänge auf die Ausgänge abgebildet werden. Aber dank der Verwendung einer erprobten Leiterplatte kann (von unbeabsichtigten Lötbrücken abgesehen) beim Zusammenbau eigentlich nicht mehr viel schief gehen.

Downloads

Version Datum Datei Beschreibung
1.0 2022-05-01 pc-floppy-switch-1.0.zip Erster Prototyp
1.1 2022-07-05 pc-floppy-switch-1.1.zip Pullup-Widerstände eingefügt
1.2 2022-07-24 pc-floppy-switch-1.2.zip Neues Layout (zweiseitig mit Bestückungsdruck)

Zurück zur Hauptseite