1541 :: Lese Elektronik von VIA 6522 bis zum Schreib- Lesekopf

Es gibt 19 Antworten in diesem Thema, welches 4.566 mal aufgerufen wurde. Der letzte Beitrag (26. April 2018 um 07:42) ist von Diddl.

  • Dieser Teil der Elektronik in der 1541 Floppy beschäftigt mich gerade sehr.

    Für mich als Hobby Elektroniker ist es teilweise nur schwer zu verstehen, was da ganz exakt im detail abgeht.
    Das verstehe ich nur rudimentär, speziell der analog Teil ist mir ziemlich rätselhaft ...

    Besonders interessant finde ich das Schaltbild der Ur 1541, denn da sieht man die Funktionsweise noch ganz gut.
    In jeder neuen Version der 1541 wurde höher intergriert, neue Bausteine eingeführt die Hardwaregruppen zusammen fassen.


    Ich würde gerne das Thema diskutieren.
    Und dazu einfach mal ein paar Punkte in den Raum werden.
    Meine aktuelle Sichtweise darstellen, um Fehlerhaftes zu korrigieren und Vermutungen zu zementieren ...

    Also bitte korrigiert mich, ergänzt es oder dementiert es ... ^^

    ============

    (1) Daten Block lesen

    Das DOS wartet auf das SYNC Signal.
    Das SYNC Signal wird per Hardware erzeugt wenn mehr als 10 Einser kommen.

    Nun pollt das DOS das ByteReady Signal.
    Das ByteReady Signal wird direkt am Prozessor Status Register abgebildet (V Flag)
    Dann holt sie das Datenbyte aus dem Schieberegister.

    CLV
    BVC *
    LDA $1C01


    ============
    (2) Das ByteReady Signal

    Lesen:

    Die bits von der Leseelektronik werden in ein Schieberegister geschoben.
    Ein Zähler zählt bis 8, und bei 8 wird ein "ByteReady" ausgelöst.


    Schreiben:

    Das Datenbyte wird in das Schieberegister geschrieben.
    Das Schieberegister schiebt Bit für Bit raus in die Schreibelektronik.
    Ein Zähler zählt bis 8, und bei 8 wird ein "ByteReady" ausgelöst.


    ============
    (3) Taktung der Bitrate

    Schreiben:

    Der 16MHz Takt wird geteilt, je nach Spurbereich ergeben sich 4 fixe Frequenzen.


    Lesen:

    Der Takt ist nur rudimentär vorgegeben.
    Die bits von der Leseelektronik synchronisieren irgendwie den Takt, sodass quasi der Bitstrom die Frequenz bestimmt.


    ============
    (4) Byte Ready Timing

    Ganz grob, natürlich abhängig von der Bitrate, kommt ca. alle 24µs ein Byte an.

    Das ByteReady Signal liegt dabei an, wenn der Zähler auf 7 (achter Schrit) steht, also für ca. 3µs.

    Deswegen auch die Lösung über das V Flag, denn der 6502 mit 1MHz könnte sonst nicht schnell genug reagieren.


    ============
    (5) Unterschied 1541 und 1541-II --- Datenbyte Latch

    Aufgrund meiner Versuche vermute ich, dass Commodore bei der 1541-II das Timing entschärft hat über ein Datenbyte Latch.

    Eine Ur-1541 sieht am VIA Port direkt das Schieberegister.
    Alle 3µs ändert sich das Bitmuster.
    Das Datenbyte steht nur für die Dauer des ByteReady (ca. 3µs) an.

    Eine 1541-II scheint das Datenbyte zwischen zu speichern.
    Nach der ByteReady Flanke hat man fast 24µs Zeit das Datenbyte zu holen.


    Das wäre potentiell eine Möglichkeit, per Software zu ermitteln welche Schreiblektronik verwendet wird.

    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • ============
    (6) Das ByteReady Signal kommt auch wenn der Laufwerk Motor aus ist ...

    Das ist auch gut so, sonst könnte es passieren, dass der 6502 in einer endlos Loop hängt und auf Bytes wartet.

    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.


  • Ich habe mich auch gerade mit den Taktraten ein wenig beschäftigt, da ich mir die Frage beantworten wollte, ob man mit einer 1541 auch andere Schreib- bzw. Lesegeschwindigkeiten als die 4 bekannten (307692, 285714, 266667, 250000 Bits/sec) verarbeiten kann.
    Bei der 1541 steuert wohl der VIA2 über einen Teiler (programmierbarer Zähler) den Takt des Gate Arrays (325572-01). Das Gate Array (325572-01) arbeitet dann mit verschiedenen Taktraten 1.2307 MHz (16/13), 1.1428 MHz (16/14), 1.0666 MHz (16/15), 1 MHz (16/16).

    Das des Gate Array (325572-01) steuert dann wohl selber die Schreib- /Lesekopf Leitungen des Laufwerks an. Somit haben die Taktraten wohl einen direkten Einfluss auf die Schreib-/ Lesegeschwindigkeit.

    Dies ist sehr gut in dem Bitte melde dich an, um diesen Link zu sehen. auf Seite 10 „The Clock Circuits“ beschrieben.


    Bei der 1541-II arbeitet das Gate Array wohl immer mit einer festen Taktrate. Die Steuerleitungen (DS0 und DS1) des VIA2 sind direkt mit dem Gate Array (251828) verbunden. Die Steuerung der Schreib- /Lesekopf Leitungen des Laufwerks werden nicht direkt vom Gate Array übernommen. Dazu kommt der SONY CX20185 (oder kompatible) Chip zum Einsatz.
    Leider habe ich keine Beschreibung gefunden, wie das Gate Array (251828) bzw. der SONY CX20185 dabei hinsichtlich der Schreib- bzw. Lesegeschwindigkeiten arbeitet.


    Also, so hundertprozentig konnte ich mir meine Frage nicht beantworten. Kann man mit einer 1541 bzw. 1541-II wirklich nur mit den 4 bekannten Schreib- bzw. Lesegeschwindigkeiten (307692, 285714, 266667, 250000 Bits/sec) arbeiten. Oder kann man mit Tricks auch in anderen Geschwindigkeiten lesen bzw. schreiben?

    >>> Bitte melde dich an, um diesen Link zu sehen. <<<
    >>> Bitte melde dich an, um diesen Link zu sehen. <<<

    >>> Bitte melde dich an, um diesen Link zu sehen. <<<

  • Also, so hundertprozentig konnte ich mir meine Frage nicht beantworten. Kann man mit einer 1541 bzw. 1541-II wirklich nur mit den 4 bekannten Schreib- bzw. Lesegeschwindigkeiten (307692, 285714, 266667, 250000 Bits/sec) arbeiten. Oder kann man mit Tricks auch in anderen Geschwindigkeiten lesen bzw. schreiben?

    Auch die 1541-II kann nur mit genau diesen 4 Geschwindigkeiten arbeiten.


    Fixe Frequenzen, das gilt aber nur beim schreiben.

    Beim lesen kann die Frequenz ein Stück weit abweichen.
    Es synchronisiert sich irgendwie automatisch an den Flanken des Bit Stream vom Kopf.
    Dadurch gleicht die Floppy die abweichende Motordrehzahl aus bei Fremd Disketten.

    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Origanisier dir hierfür lieber den Schaltplan des Longboards der 1541. Dort ist das, was später im Gate-Array verschwunden ist, diskret in TTLs aufgebaut.

    Damit kann man viel besser verstehen wie die Sache arbeitet.

  • Für mich als Hobby Elektroniker ist es teilweise nur schwer zu verstehen, was da ganz exakt im detail abgeht.
    Das verstehe ich nur rudimentär, speziell der analog Teil ist mir ziemlich rätselhaft ...

    Lies dir am Besten dazu folgenden Bitte melde dich an, um diesen Link zu sehen. an, speziell auch den Bitte melde dich an, um diesen Link zu sehen.. Im Schaltplan
    sind ein paar Fehler, z.B. heisst der 2. UC3 (LS191) UE3. Die Anordnung der Bauteile
    orientiert sich hier sehr an der Funktionalität, die Logik kann viel einfacher nachvollzogen
    werden. Der RW-Teil kann in einen analogen und in einen digitalen aufgeteilt werden
    (im Schaltplan nur der digitale). Eigentlich gehöhrt der 9502 als Lesebit-Generator auch
    noch zum digitalen, aber für eine Simulation (FPGA oder uC) ist das Weglassen besser.

    Im Blog sind auch Fehler, mMn z.B. der drittletzte Abschnitt ("The data is clocked into..").
    Ich habe eine Simulation in VHDL geschrieben und kann die grossen Abweichungen nicht
    nachvollziehen.

    (2) Das ByteReady Signal

    Lesen und Schreiben kannst du aus obigen Schaltplan ableiten.

    Wichtig für ByteReady sind neben dem "abgelaufene" Zähler auch das
    SOE-Flag und aus dem Timer (UF4,rechts/unten) das 2. Bit.

    Beim Lesen musst du dir die Funktion des 9602 klarmachen. Der
    liefert Impulse und steuert so die beiden Timer/Zähler UE7 und UF4.
    Die wiederum steuern (Takt+Datenbit) dann die Eingabeshiftregister.

    Der Takt ist nur rudimentär vorgegeben.

    Im Prinzip stimmt das auch. Wenn du ein "nacktes" Laufwerk
    (nur analoge Stufe und Mechanik) per uC ansteuerst, dann kann
    jeder "Scheiss" in Bitform auf Floppy gebannt werden. Und vieles
    davon lässt sich sicherlich auch lesen (hängt natürlich von der
    Geschwindigkeit ab), aber schreiben lässt es sich sicherlich nicht.
    Hier aber alle Möglichkeiten auszuloten würde mehr als ein Thema
    füllen. Beschränk dich also auf die Schreibmöglichkeiten und
    die dadurch bedingte Reduzierung auf 4 Geschwindigkeitsstufen,
    andere sind mWn nicht einstellbar.

    Ganz grob, natürlich abhängig von der Bitrate, kommt ca. alle 24µs ein Byte an.

    Das ByteReady Signal liegt dabei an, wenn der Zähler auf 7 (achter Schrit) steht, also für ca. 3µs.

    Da ich meinen C64/1541 schon seit Urzeiten verkauft habe, kann ich die
    Timings nur per Simulation nachvollziehen. (ich habe hier in einem Forum
    aber auch schon Oszi-Messungen von vlt. neueren 1541ern gesehen,
    wo die 3us leicht abweichen???)
    Es wäre daher sehr nett, wenn hier jemand aus einer Longboard-1541-Elektronik
    per Oszi die Timings nachmessen würde. Und apropo Nachmessen, wie
    schauen die Signale am UF4 aus, speziell Pin 1,9,10,15??

    (6) Das ByteReady Signal kommt auch wenn der Laufwerk Motor aus ist ...

    Das geht aus dem Schaltplan hervor.

  • Bitte melde dich an, um diesen Link zu sehen.

    Hier hatten wir schon mal über das latchen des bytes in der VIA diskutert. Ich glaube Du hast immer 8 Bit Zeit das aktuell gespeicherte Byte aus der VIA auszulesen.

  • Ich glaube ich habe Dich falsch verstanden. Das Byte das gelatcht wird ist in der original Elektronik wirklich sofort wieder weg. Du kannst es also nur für die Dauer eines Bits dort abgreifen. Wenn es in der 1541II länger als 1 Bit anliegt müssen sie dort was am 74LS245 geändert haben (was Du ja schon vermutet hast)

  • Ich glaube ich habe Dich falsch verstanden. Das Byte das gelatcht wird ist in der original Elektronik wirklich sofort wieder weg. Du kannst es also nur für die Dauer eines Bits dort abgreifen. Wenn es in der 1541II länger als 1 Bit anliegt müssen sie dort was am 74LS245 geändert haben (was Du ja schon vermutet hast)

    Genau, die müssen was geändert haben.
    Weil in dem GAL sowieso genug Platz war, haben sie dem Schieberegister ein Latch nachgeschaltet. :)


    Ich frag mich bloss wozu.
    Der 6502 hat es ja auch in der Dauer eines Bit geschafft.

    Vielleicht haben sie dran gedacht die Dichte weiter zu erhöhen indem sie die Frequenz des Clock anheben (weitere 4 Frequenzen).
    Schliesslich gab es ja da schon quad density und die ersten HD Disketten.

    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Ich frag mich bloss wozu.
    Der 6502 hat es ja auch in der Dauer eines Bit geschafft.

    Das Gate-Array in der 1541-II ist dasselbe wie in der 1541C und der 1570/1. Wahrscheinlich auch wie in der 1551 auch wenn dort was anderes auf dem Gatearray draufsteht

    Vielleicht brauchte man das Latch in einer der anderen Floppies? Speziell die 1551 hat kein SO-Signal an der CPU, muss also das Byte anders gemeldet bekommen was 2 MHz nötig macht und das Timing mglw. etwas unschärfer macht.

  • Also sollte man wohl selber auch noch eine 8 Bit Latch auf einem Lese-Board haben, wenn man die Daten in jedem Fall gemütlich mit einem µC lesen will ...

  • Denk dran das ein GCR Byte, 10 Bit lang ist wenn du auf der GCR Seite was lesen willst

    Schon, aber aus der Schaltung/Gatearray kommen immer 8 Bit am Stück raus da der Port im VIA 8 Bit breit ist.

    Ob GCR oder nicht ist an dieser Stelle egal.

  • Also wird das GCR in Hardware decodiert, in der UR 1541 dürfte man noch an die GCR Daten rankommen da hab’s ja noch kein Gatearray

  • Also wird das GCR in Hardware decodiert, in der UR 1541 dürfte man noch an die GCR Daten rankommen da hab’s ja noch kein Gatearray

    Nee.
    GCR wird nicht in Hardware dekodiert!

    Sowas hat niemand gesagt.


    Nur die Floppys der professional Serie hatten HW GCR Dekoder: die 4040, 8050, 8250 und SFD-1001


    Auf der 1541 gab es Ansätze von sowas wie HW unterstützte Dekodierung im Professional DOS

    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Naja wenn aus dem Gatearray schon normale 8Bit Daten kommen muss doch im Array das GCR Decodiert werden. Den ein GCR-Byte sind wie gesagt 10Bit und nicht 8

  • Naja wenn aus dem Gatearray schon normale 8Bit Daten kommen muss doch im Array das GCR Decodiert werden. Den ein GCR-Byte sind wie gesagt 10Bit und nicht 8

    Das ist bei jeder 1541 so.


    Es kommt ein Bit Strom vom Lesekopf.
    Und weil der 6502 ein 8 Bit Prozessor ist, liest er eben immer dann, wenn gerade 8 Bit herein gekommen sind.

    Ein GCR Byte hat 10 Bit.
    Vier GCR Bytes haben 40 Bit.

    Der 6502 liest 5 mal 8 Bit, also 5 bytes.
    Und dann macht er aus den 5 bytes letzlich 4 bytes (die eigentlichen Daten).

    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.

  • Ok, ist nur etwas aufwendig, weil Hardwaredecoding ja garnicht so aufwendig ist, gerade wenn man schon ein Gatearray hat, hätte man das ja auch mit einbauen können. Ok hätte eine andere Firmware gebraucht

  • Aus heutiger Sicht hast du recht.
    Aber damals war die Welt noch anders...


    Wenn man die Schaltbilder der 8050 Floppy anguckt, - es war schon aufwendig.
    Ein TTL Grab.
    Und zu der Zeit war es noch nicht so weit mit Gate-Array ...

    Man wollte Kosten sparen, und Platz.


    Später dann war der Zug abgefahren.
    Man hätte die Hardware gehabt, aber die Software musste ja kompatibel bleiben.

    Der Fluch der Kompatibilität ...


    Mal davon abgesehen, GCR Dekodierung war nur EINE Baustelle, eines von drei Nadelöhr. :)

    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.