Hallo Besucher, der Thread wurde 3,3k mal aufgerufen und enthält 15 Antworten

letzter Beitrag von Stephan am

Ratter-Fix für Floppy 1541

  • Ich hoffe, das passt hier rein, wenn nicht bitte verschieben.
    Bumps - woher weiß die 1541 eigentlich, wo die Spuren sind? Lichtschrankentechnik soll einfach "im Hintergrund einfach nur weiteres nach hinten Fahren unterbinde(n), wenn man schon »am Anschlag« ist."


    Hier möchte ich mein Schaltungs-Design dazu vorstellen.


    Ausgangspunkt ist, dass die Floppy 1541 die unteren beiden Bits PB1 und PB0 des Registers $1c00 nach dem Einschalten zunächst auf Input gestellt hat (= beide high , %11) und danach auf Output programmiert und %00 ausgibt. Diese beiden Bits werden wie ein Modulo-4-Zähler der physikalischen Kopfposition behandelt. Man kann davon ausgehen, dass in diesem Zeitpunkt die mechanische Position des Kopfes identisch mit der elektromagnetischen Ansteuerung "00" ist.


    Wird nun ein Formatierbefehl gegeben, setzt das DOS-ROM einen Auftragszähler auf den Wert $A4, das ist im Zweierkomplement der Wert "minus 92", d.h. die Floppymechanik soll 46 * 2 = 92 physische Halbschritte = 46 ganze logische Spuren nach aussen fahren. Der aus PB1 und PB0 bestehende Zähler wird nun (im Interrupt) heruntergezählt und der Auftragszähler in der Zeropage inkrementiert (heraufgezählt) bis auf Null.
    Die Bit-Sequenz am Port:
    .... 11 - 10 - 01 - 00 ..
    und wieder von vorn. Dies wird zyklisch 23 mal wiederholt, da 92 ohne Rest durch 23 teilbar ist. Stößt der Kopf dabei auf den Anschlag, tritt Schlupf ein und der Kopf wird bei einem der nächsten Schritte wieder "eingefangen". Nach 23maligen Durchlaufen obiger Sequenz steht die elektrische Ansteuerung wieder auf "00" und der Kopf sollte das auch tun.


    Hier setzt mein Schaltungsvorschlag an. "Normalerweise" d.h. ausserhalb von Spur Null, sollen alle Signale die an PB1 und PB0 ausgegeben werden, unbeeinflusst an die Motortreiber weitergereicht werden.


    Falls aber die Lichtschranke bemerkt hat, dass der Kopf bereits auf Spur Null steht, sollen alle weiteren Signale so beeinflusst werden, dass weiterhin nur noch Spur Null angesteuert wird, der Kopf also stehenbleibt - mit Ausnahme jener Bitkombination, die statt nach aussen (Richtung Anschlag) nach innen zu höheren Spuren hin führt. Denn der Kopf soll ja aus der Parkposition jemals wieder herausfinden!


    Der Multiplexer, der das Herzstück meiner Schaltung darstellt, wird nun so umgeschaltet, dass die künftige veränderten Schaltsequenz so lautet:


    00 - 00 - 01 - 00
    ... und das permanent, solange weiter nach aussen gesteppt wird.


    Sobald die Lichtschranke aufmacht, kommt die 01 wieder von der ursprünglichen Schaltsequenz und es kann ganz normal weitergesteppt werden:
    ... 01 - 10 - 11 ...
    Der Multiplexer ist eine Art ROM oder Lookup-Tabelle, wobei S1,S2 als Adresse fungieren und die Eingänge die 2-bit-Datenworte programmieren.


    Um einem Laufwerk eine Lichtschranke für Spur Null einzubauen wenn noch keine drin war, hat Björn (JMP FEC2) schon eine ausgereifte Anleitung geschrieben. Mein Vorschlag baut darauf auf, versucht aber ohne Software-Änderung auszukommen.


    Spur-0 Lichtschranke jetzt auch für ALPS Drive


    Ich hoffe ich konnte es einigermaßen verständlich beschreiben und hoffe auf eine rege Diskussion.

  • Erstmal vorweg: den Ansatz finde ich schon ganz gut.


    Die spannende Frage wird sein: bewegt sich der Kopf bei 01 weit genug nach innen um die Lichtschranke freizugeben? Hier muss dann evtl. sehr genau justiert werden. Ich muss mal sehen, ob ich nen 153'er da hab (der Rest incl. Halter für das Alps-LW ist da).


    Gruß, Gerd

  • Die Lichtschranken die unter dem Namen CNY-36 verkauft werden, haben Unterschiede. Es gibt welche mit schmaler und mit breiterer Öffnung (Apertur), die schmaleren dürften deutlich einfacher zu justieren sein.


    Als Faustregel würde ich sagen, 0,6 mm sind fast zu reichlich, 0,4 mm sollte bei 48tpi besser sein.


    Als Multiplexer eignet sich wohl auch der 74HC4052.


    Wenn man den Jumper 1a in der o.g. Schaltung löst und stattdessen JP 1b schließt, erzeugt der Multiplexer an seinem Ausgang genau dieselben Signale wie hineingehen.


    So lässt sich am einfachsten prüfen, dass die Signale korrekt durchgeschleift werden und kein Verdrahtungsfehler vorliegt.

  • Ich hoffe ich konnte es einigermaßen verständlich beschreiben und hoffe auf eine rege Diskussion.

    Sehr gute Idee, aber meiner Meinung nach gewagt, da speziell die Alps-drives auch so justiert sein können, dass man die Spur 0 nicht mit Bitkombination 00, sondern 10 bekommt. Die Floppy fährt zwar beim Lesen mal "hin und her" bis sie die Spur gefunden hat, aber es funktioniert.


    Insofern fehlt mir bei Deiner Lösung der Nachweis, dass die Bitkombination 00 wirklich "immer" für gerade Spuren anliegt. Kann das jemand bestätigen?


    Andernfalls wäre mein Ansatz, auch auf die Lichtschranke zu verzichten und die Stromaufnahme des Steppers zu messen. Mit einem Messwiderstand von 0,1Ohm in der 12V-Zuleitung des Steppers und einem Op-Verstärker als Komparator müsste es möglich sein, das Anschlagen ohne Lichtschranke zu detektieren. Aus reiner Faulheit würde ich dann einen Microcontroller mit der Aufgabe betrauen, die in Deiner Schaltung vom Multiplexer erledigt wird - allein schon, weil mir der Nachweis der Zuordnung von Bitkombination zu Spuren zu mühsam wäre :-)


    Jens

  • da speziell die Alps-drives auch so justiert sein können, dass man die Spur 0 nicht mit Bitkombination 00, sondern 10 bekommt.

    Natürlich sollte das Formatieren von Disketten mit einem solcherart dejustierten Laufwerk Spezial-Anwendungen vorbehalten bleiben, egal ob mit oder ohne Ratter-Fix ^^


    Insofern fehlt mir bei Deiner Lösung der Nachweis, dass die Bitkombination 00 wirklich "immer" für gerade Spuren anliegt.

    Geht natürlich nicht um gerade und um "immer". Aus reiner Schreibökonomie (bzw. Bastel-Unvermögen) schaue ich ins ROM:


    FAD7 A9 A4 LDA #$A4 164
    FAD9 85 4A STA $4A step counter for head transport
    FADB AD 00 1C LDA $1C00
    FADE 29 FC AND #$FC stepper motor on
    FAE0 8D 00 1C STA $1C00



    Bevor tatsächlich losgelegt und gesteppt wird, werden die beiden lowest bits mit 00 initialisiert. Genauso in $F380. Nach 92 Steps ist man wieder bei 00, zumal ein Abbruch der Sequenz nicht vorgesehen ist.

  • Geht natürlich nicht um gerade und um "immer". Aus reiner Schreibökonomie (bzw. Bastel-Unvermögen) schaue ich ins ROM:

    Das hattest Du ja im Eingangspost schon geschrieben - aber das mit dem "harten Setzen" auf 00 zum Beginn des Formatierens war mir nicht bewusst. Somit ist tatsächlich ein Laufwerk, bei dem Track 0 mit Bitkombi 10 zu lesen ist als "massiv dejustiert" einzustufen, und Deine Schaltung funktioniert wirklich immer.


    Und "gerade Tracknummern" folgt daraus ganz automatisch. Das untere Bit steuert Halftracks an, das obere Bit demnach ganze Tracks. Jetzt ist es natürlich mathematisch nicht ganz korrekt, 0 als "gerade" einzustufen, aber aus Binärsicht, wo man für even/odd nur das LSB anschaut, reicht's :-)


    Jens

  • Die ganze Sache ist noch etwas komplizierter: Die zweite Version des 1541c-DOS erlaubt es bei Lesefehlern noch eine Halftrack weiter nach außen zu fahren als Track 0. Dies ist nötig, damit sie Disks von einer anderen dejustierten 1541 lesen kann. Man müsste beim Formatieren bei Track 0 aufhören und bei Lesefehlern noch einen Halftrack weiter nach außen gehen.
    Weiterhin blöd ist, dass die äußerste Spur einer Disk bei MFM die Tracknummer 0 hat, während sie bei CBM-GCR-Disk die Tracknummer 1 hat.

  • Weiterhin blöd ist, dass die äußerste Spur einer Disk bei MFM die Tracknummer 0 hat, während sie bei CBM-GCR-

    Die 1541 hat kein MFM Format, das haben nur die Laufwerke 1570, 1571 und 1581.


    Die 1541 auf MFM Nachzurüsten wäre sehr aufwendig, man müßte nicht nur eine Indexlichtschranke Einbauen, sondern auch noch die nötigen Controller. Am Ende hätte man fast eine 1570.

  • Ja mit Zwichensockel. Die VIAs sind ja oft gesockelt, teilweile auch das GateArray.


    Gruß, Gerd

    Eine sehr gute Idee, danke! - ich habe mich bisher nicht getraut meine VC 1551 zu modifizieren, weil ich mich fürchte den 6525-Baustein versehentlich zu beschädigen.

    Die zweite Version des 1541c-DOS erlaubt es bei Lesefehlern noch eine Halftrack weiter nach außen zu fahren als Track 0

    Das wäre dann sozusagen die "Spur minus einhalb", analog zu Bahnsteig 9 ³/4 bei Harry Potter ;)


    Die Frage ist, ermöglicht auch der mechanische Anschlag, was das DOS versucht?


    1.) wenn der mech. Anschlag es nicht ermöglicht was das DOS beim Lesefehler vorhat:
    Dann liegt der Nocken der Welle entweder satt am Chassis-Blech an (d.h. erreicht die Endlage nicht ganz) oder rumpelt geräuschvoll dagegen, prallt zurück und nimmt irgendeine ungeplante Position ein. Es gibt in beiden Fällen "impact" mit Vibration und Spur-Fehlposition und das wollen die meisten Muggel ihrer Laufwerksmechanik ersparen.. Jedenfalls erreicht das DOS sein Ziel, eventuell unlesbare Sektoren zu retten, so wahrscheinlich nicht.


    Man könnte meine oben gepostete Schaltung dennoch auch in dieser von dir erwähnten 1541C verwenden, wenn man bei einer Problem-Diskette vor dem Lesen den Jumper JP 1a öffnet und stattdessen JP 1b schließt. Dadurch könnte zumindest im Fall dass die Welle "knapp am Blech anliegt" die Floppy den Kopf in diesen Grenzfall hineinsteuern, also dahingelangen wo sonst nur Zauberer und Fabelwesen hinkommen :D
    Ich glaube freilich, dass Lesefehler die so ein Zur-Seite-Steppen erfordern, eher auf schief eingespannte Disketten zurückzuführen sind (kein Zentrier-Anlauf im DOS nach Write-Protect-Signal?) bei denen evtl. der Verstärkungsring fehlt ....


    Man könnte auch das schöne arme Gehäuse durchbohren, und einen (Um-)Schalter an der Front anbringen. Aber das ist vielleicht gar nicht nötig, denn:


    2.) wenn der mech. Anschlag es ermöglicht, nach Bahnsteig 9 ³/4 zu gelangen:


    Dann ist die Bitkombination "11" generell "erlaubt", weil sie ja noch keinen Impact herbeiführt, kein Rattern.


    Dann wäre meine o.g. Schaltung zu modifizieren: indem die Leitungen 2I3 und 1I3 von ihrer bisherigen Verbindung zur Lichtschranke zu lösen und direkt mit + 5 Volt zu verbinden. Nur noch 2I2 wäre über den Jumper mit der Lichtschranke verbunden.


    Die Bitsequenz vorm Formatieren (ehemals "Bump" genannt) lautet dann neu:
    (EDIT: es ist der relevante Ausschnitt gezeigt kurz bevor der Kopf die Lichtschranke unterbricht)


    ......... - 11 - 10 - 01 - 00 - 11 - 00 - 01 - 00 - 11 - 00 - 01 - 00 ... usw. ..
    Ab der Unterstreichung würde die Lichtschranke eingreifen und die Sequenz beeinflussen.
    Der Kopf würde nur noch zwischen Spur minus einhalb, Null und plus einhalb hin- und herpendeln.


    (Hab ich was vergessen?)


    Weiterhin blöd ist, dass die äußerste Spur einer Disk bei MFM die Tracknummer 0 hat, während sie bei CBM-GCR-Disk die Tracknummer 1 hat.

    Ich hoffe, dass ich bei den Spurnummern berücksichtigt habe dass es "Physikalische Spurnummern" sind, auch wenn das DOS Spur Null als "Track 01" deklarieren sollte.
    Damals (TM) als ich ein zweiseitiges TEAC FV-55 Laufwerk an die 1570 adaptiert hab, kam ich mit diesem potentiellen Stolperstein zurecht.

  • Die 1541 auf MFM Nachzurüsten wäre sehr aufwendig, man müßte nicht nur eine Indexlichtschranke Einbauen, sondern auch noch die nötigen Controller. Am Ende hätte man fast eine 1570.

    MFM zu lesen sollte schon möglich sein, wenn man ausreichend Speicher für einen Track hat. Schreiben ist ebenfalls nicht notwendigerweise an das Indexloch gebunden - es steht zwar in der DIN, aber in der Praxis kommt jeder PC-Controller damit klar, wenn der erste Sektor eben nicht am Index ausgerichtet ist. Grund dafür ist, dass die NEC765-Implementierungen nach dem Header suchen, nicht nach dem Index.


    Da jedoch die Mehrheit der DD-DIsketten doppelseitig formatiert ist, ist die 1541-Mechanik nicht geeignet, bzw. nur für die extrem seltenen 180k-Disketten. Außerdem stelle ich es mir hinreichend schmerzhaft vor, MFM komplett in Software zu dekodieren - noch dazu auf einem 8-Bitter, wo schon die Sync-Markierung 16 Bit breit ist. Den Aufwand will man nicht für obskure 180k-Disks treiben.


    Aber zurück zum Thema "nachbauen" und "komfortabel nutzen": Der Stepper ist an die Platine *angesteckt*. An diesem Stecker gibt es eigentlich alles was man braucht, um das Anschlagen zu detektieren und es zu unterbinden. Es findet halt nicht in der 5V-Domäne statt ;-)


    Jens

  • Warum macht Ihr nicht beide was. Dem einen ist es lieber einen IC Huckepack zu Löten und der andere kann das nicht und braucht etwas zum anzustöpseln. Damit wäre Jedem gediehn.

    Ganz korrekt.
    Ich bin eher in der Mikroampere-Liga unterwegs.


    Mit Zwischensockel muss ich keine Leiterbahnen auf dem Mainboard zerkratzen.
    Den einen Huckepack - Chip kann man rückstandsfrei wieder entfernen.
    ich habe mal ein Verdrahtungsschema gezeichnet.


    Was jetzt noch fehlt:
    als Lichtschranke hätte ich gern die TCST1300 von Vishay. Aber meine örtliche blaue Apotheke hat die nicht vorrätig.
    Die Dimensionierung von R1 und R2 hängt (etwas) davon ab.