Diskettenlaufwerk ansteuern

Gast #7144364
Lesenswert?

MaWin schrieb:

> Siehe: https://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.7.6

Ist bei genauerer Betrachtung doch ein wenig veraltet. Mit neueren AVR8 
rückt ein Floppycontroller selbst für HD und schreibend in den Bereich 
des Möglichen (vor allem dank CCL). Für DD und rein lesend war es schon 
vor 20 Jahren möglich.

Aber OK: wer sich für das Ansprechen von Floppylaufwerken tatsächlich 
interessiert, muss wohl allein herausbekommen, wie's geht. Schlicht 
deshalb, weil sich außer ihm aus guten Gründen praktisch kein Schwein 
mehr dafür interessiert.
#7144378
Lesenswert?

Josef P. schrieb:
> Hallo. Ich möchte gerne ein Diskettenlaufwerk mit einen avr Controller
> ansteuern.
Bei einer Standardfloppy eigentlich ganz einfach:

8" Scheibendurchmesser mit 77 Spuren und ein- oder zwei Seiten. Achtung 
der Antriebsmotor braucht normalerweise AC, also 230 V oder 110 V. Die 
Elektronik +/-5 V und 24V für den Schrittmotor.

Softsektoriert oder hardsektoriert?

Signale zum / vom Laufwerk:
Step, Direction, TG43, Read, Write, Side, Track 0, Write Gate,
Drive select, ggf.Index.
Alles überschaubar und bis auf Read / Write zeitunkritisch.

Welches Datenformat soll's denn werden, single density FM oder MFM, M²M, 
GCR? https://www.retrotechnology.com/herbs_stuff/m2fm.html
https://en.wikipedia.org/wiki/List_of_floppy_disk_formats

Nur Sektoren lesen/schreiben oder wird ein Filesystem benötigt?
z.B. https://stardot.org.uk/forums/viewtopic.php?t=9114


Butzo*aussen
Gast #7144388
Lesenswert?

Klaus B. schrieb:
> Bei einer Standardfloppy eigentlich ganz einfach:
>
> 8" Scheibendurchmesser mit 77 Spuren und ein- oder zwei Seiten. Achtung
> der Antriebsmotor braucht normalerweise AC, also 230 V oder 110 V. Die
> Elektronik +/-5 V und 24V für den Schrittmotor.
>
...
>
> Butzo*aussen

Dazu noch einen Intel 8272 und fertig ist die Laube.
Pech, wenn man keinen hat.
Gast #7144398
Lesenswert?

c-hater schrieb:
> PittyJ schrieb:
>> Es gibt auch Diskettenlaufwerke mit USB-Anschluss.
>> Ist vielleicht einfacher, als diese 34 polige Buchse zu bedienen.
>
> Nein, nicht für einen AVR8. USB-Host mit Fullspeed liegt jenseits seiner
> Möglichkeiten.

Es war nicht die Rede von einem AVR8. Es ging allgemein um einen nicht 
näher spezifizierten "avr Controller".

Und bei avr findet man dann das:
https://ww1.microchip.com/downloads/en/DeviceDoc/doc8486.pdf
Gast #7144423
Lesenswert?

(prx) A. K. schrieb:
> PICklig schrieb:
>> Dazu noch einen Intel 8272 und fertig ist die Laube.
>> Pech, wenn man keinen hat.
>
> Digikey ersäuft dermassen in verschiedenen Floppy-Disk Controllern und
> den teils erforderlichen Datenseparatoren, dass sie welche verkaufen
> müssen.

Nur über Marketplace, und keine einzelnen. :-(
Gast #7144429
Lesenswert?

Klaus B. schrieb:
> Pah!
> Ein Steve Wozniak hat nur ein PROM und einen Zähler gebraucht :-)
> https://de.wikipedia.org/wiki/Integrated_Woz_Machine

2 PROMs.

c-hater schrieb:
> Ist bei genauerer Betrachtung doch ein wenig veraltet. Mit neueren AVR8

Welchen, den 100 MHz Typen ? Muss man wohl noch ewig drauf warten. 
16msps schafft kein 20 MHz Controller. Selbst wenn man per 10 MHz SPI 
einliest und die Bytes durch tabellengesteuerte state machines jagt, 
reicht es nicht. Sicher, man kann es auch schlechter machen und mit 
Glück immer noch manchmal Daten lesen.

PICklig schrieb:
> Dazu noch einen Intel 8272

und C-hater redete von veraltet, was ist das denn dann erst, Archäologie 
?
Angehängte Dateien:
Gast #7144471
Lesenswert?

> und C-hater redete von veraltet, was ist das denn dann erst, Archäologie
?

Wenn du persönliche Probleme mit dem 8272 hast, kannst du die für dich 
behalten.
Entscheidend ist doch immer, dass es funktioniert.

Dazu vielleicht noch einen 16C50 von GI.
Gast #7144504
Lesenswert?

PICklig schrieb:
> Wenn du persönliche Probleme mit dem 8272 hast, kannst du die für dich
> behalten.
> Entscheidend ist doch immer, dass es funktioniert.

Der i8272 braucht Treiber und Datenseparatoren, das ist schon seit 1995 
überflüssig mit NS SuperFDC  PC8477B.

Da ein AVR auch Treiber und Datenseparator bräuchte, sind es mit einem 
PC8477B sogar weniger Chips.
Gast #7144639
Lesenswert?

MaWin schrieb:
> Der i8272 braucht Treiber und Datenseparatoren, das ist schon seit 1995
> überflüssig mit NS SuperFDC  PC8477B.

Das war schon viel früher überflüssig; schon der WD1772 brauchte den 
Kram nicht. Den fand man beispielsweise im Atari ST.

Wenn man das HD-Format braucht, ist ein WD3765 zu empfehlen, den gab es 
auch schon gegen Ende der 80er Jahre. Zu finden war der auf unzähligen 
MFM- und RLL-Festplattencontroller für ATs, so z.B. auf dem WD100.

Solange man aber nicht weiß, was der Threadersteller wirklich anfangen 
will, brauchen wir uns eigentlich auch keinen Kopf zu zerbrechen.
#7144667
Lesenswert?

8"-Laufwerke brauchen immer einen direkten Netzanschluss. Erst 
5.25"-Laufwerke konnten die Drehzahl mit Gleichstromtechnik genau genug 
regeln.

Selbst aktuelle Retrotechnik benutzt immer einen FDC, der den ganzen 
schnellen Kram erledigt. Alte Technik ebenfalls. Es gab zwar vollständig 
diskret aufgebaute Floppy-Controller, aber die arbeiten durchgängig mit 
hardsektorisierten Disketten (NorthStar und so).

Ein klassischer AVR8 ist für die Decodierung von HD (also 500 Kbps) 
eigentlich zu langsam, aber ich erinnere mich dunkel an ein Projekt, was 
die 250 Kbps einer DD-Diskette geschafft hat.

Man kann zusätzliche Hardware mit Software kombinieren, wie Apple oder 
Commodore das getan haben, aber den Aufwand empfehle ich nicht.
#7144676
Lesenswert?

Helmut P. schrieb:
>> 8"-Laufwerke brauchen immer einen direkten Netzanschluss. Erst
>> 5.25"-Laufwerke konnten die Drehzahl mit Gleichstromtechnik genau
>> genug regeln.
>
> Davon weiß das 8"-Laufwerk in meinem Schrank offenbar nichts;
> das braucht nur 24V.

Beeindruckend. Muss eins der letzten Generation sein.

Ist aber auch egal, der TO hat in seinem Leben nur einen Beitrag 
verfasst und ist inzwischen über alle Berge.
Gast #7144745
Lesenswert?

Ich lasse mir hier den i8272 nicht madig machen.

Sein formschoenes 40 pinniges DIP-Gehaeuse passt immerhin
in jeden mindestens 40 poligen zoelligen DIL-Sockel.
Das kannst du ja mit deinem Super-IO-Kaefer auch mal versuchen.

Und schon alleine wenn Mann mal GCR formatierte Disketten lesen will.
Der i8272 legt einem da keine Steine in den Weg.

Einen MFM-Dekoder kann man ja aehnlich einem Dekoder fuer
"Conditioned Di-Phase" noch mit allereinfachsten Standardbauelementen
zusammenbauen.
Bei GCR muesst ich nochmal nachsehen.
#7144769
Lesenswert?

Gast #7144869
Lesenswert?

Klaus B. schrieb:
> Bei einer Standardfloppy eigentlich ganz einfach:
>
> 8" Scheibendurchmesser mit 77 Spuren und ein- oder zwei Seiten. Achtung
> der Antriebsmotor braucht normalerweise AC, also 230 V oder 110 V. Die
> Elektronik +/-5 V und 24V für den Schrittmotor.

Und dann wär da noch das Filesystem ...
Gast #7144904
Lesenswert?

Lotta  . schrieb:
> Alles riesengroß. in Nachttischgröße.
Ich weis ja nicht wie groß bei Dir die Nachttische sind, aber bei mir 
sind diese schon noch größer als so ein altes Floppy. Bei 2 Maßen war 
halt eine Mindestgröße erforderlich - so ne 8" Disk ist nun mal 20x20cm 
groß.
Auch das mit dem Parallel und Serieninterface ist so nicht richtig. Die 
Floppy's Robotron hatten einen Bus der elektrisch mit dem Shugart-Bus 
kompatibel war allerdings hat man keinen international kompatiblen 
Stecker benutzt. In der DDR war das EFS-System üblich.
Eine schöne Übersicht über die in der DDR verwendeten Floppylaufwerke 
gibt es hier 
https://www.robotrontechnik.de/index.htm?/html/komponenten/fs.htm
Persönliche Seite #7144911
Lesenswert?

Zeno schrieb:
> Lotta  . schrieb:
>> Alles riesengroß. in Nachttischgröße.
> Ich weis ja nicht wie groß bei Dir die Nachttische sind, aber bei mir
> sind diese schon noch größer als so ein altes Floppy.

Ich glaube, Lotta meinte hier den Controller. Und das war eine 
K1520-Vollformatplatine, dicht gepackt. Später mit dem U8272 mit 
bisschen Takt/Datenseparator hätte das auf ein Viertel der Fläche 
gepasst...
Gast #7144935
Lesenswert?

BlueDisk ... einige Apple-User werden ihn kennen ...

Vor langer langer Zeit gab es mal einen MFM-Controller für die
AppleII - Serie. Darauf sass der Intel 82077, der einzige Chip
der damals mit einigermassen vertretbaren Aufwand eine
Implementierung zuliess. Diesen 82077 könnte man heutzutage
auch leicht dazu verwenden mit einem Atmel-Controller etwas
Floppy-Controller-mässiges aufzubauen. Der Aufwand wäre im
Vergleich zur AppleII - Implementierung relativ gering.

BlueDisk konnte übrigens nicht nur HD Disketten lesen und
schreiben sondern auch die sehr seltenen 2.8MB Disketten
(EHD? wenn man das entsprechende Laufwerk dazu hatte).
Angehängte Dateien:
Gast #7144937
Lesenswert?

Ingo W. schrieb:
> Ich glaube, Lotta meinte hier den Controller. Und das war eine
> K1520-Vollformatplatine, dicht gepackt. Später mit dem U8272 mit
> bisschen Takt/Datenseparator hätte das auf ein Viertel der Fläche
> gepasst...
Naja, aber aber so grß wie ein Nachttisch war's trotzdem nicht. Hier 
https://www.robotrontechnik.de/index.htm?/html/komponenten/fs.htm mal 
ein paar Bildle vom 5120. Da ist der komplette Rechner vielleicht so 
groß wie ein kleiner Nachttisch.

Richtig groß (und schwer) waren die Dualfloppys vom E60/E100 
(sowjetische PDP11 Clone). Das erste was in unseren Geräten eingesetzt 
wurde war ca. 50cm breit (2x 8" nebeneinander), geschätzt 40cm hoch und 
auch 50cm tief. Das Nachfolgemodell war nicht mehr so hoch, "nur noch" 
ca. 20cm aber dafür fast doppelt so tief, so das der Elektronikschrank 
wo das Ding eingebaut war eine "Rucksackrückwand" bekommen mußte. Das 
ist jetzt aber fast 40 Jahre her - war halt eine andere Zeit.
Gast #7144946
Lesenswert?

Disque Bleu schrieb:
> der einzige Chip
> der damals mit einigermassen vertretbaren Aufwand eine
> Implementierung zuliess. Diesen 82077 könnte man heutzutage
> auch leicht dazu verwenden mit einem Atmel-Controller etwas
> Floppy-Controller-mässiges aufzubauen.

Wozu, wenn es single Chip Lösungen im Computerschrott gibt ?

Hier machen Viele den Eindruck, seit 1989 nichts mehr hinzugelernt zu 
haben.
Angehängte Dateien:
#7144952
Lesenswert?

Ts...
Was Opa und ich da auseinandergenommen hatten war ein
Beistellgerät, ca.. 40 - 50 Cm hoch, oben war die Floppy drinne
darunter war der Rechnereischub mit Rückverdrahtung und darunter ein
mächtig gewaltiger Schaltnetzteileinschub.

Das Laufwerk war nicht mehr vollständig, irgend ein Modellbauer hat die 
Mechanik geerbt, die Steuerung hab ich noch irgendwo, weil mich das 
Einschubsystem gereizt hat.
Das ganze war nen Teil eines Entwicklerrechners oder Steuerrechners
von CEKO, dem Telefonabhörsystem der DDR.
Damit wurden die Leitungen nach dem Westen überwacht und abgehört.
Mit hunderten ferngesteuerter Tonbandgeräte! ;-O
Außerdem haben sich die "Kundschafter" gegenseitig belauert,
über nen "Harmoniumadapter", der im Telefon eingebaut war und
mittels ZF übertragen hat und der  Gegenstelle zur Auswertung.
(zur Loyalitätsüberprüfung der IM)

mfg
(Firma: Golden Delicious Computers) #7144959
Lesenswert?

Ich habe mal einen Floppy-Controller-Adapter für 5"1/4 an einen 
PocketBeagle gebaut. Erwarteter Vorteil von diesem Ansatz: man schreibt 
nur einen Floppy-Low-Level-Treiber (Spur suchen und Sektor(en) 
lesen/schreiben) und um den Rest (Dateisystem) kümmert sich das Linux. 
Wenn man will kann die Floppy dann als USB-Memory präsentiert werden.
Ich hatte dann nur das Problem dass mein letztes noch vorhandenes 
5"1/4-Laufwerk nicht mehr funktioniert hat. Ich konnte zwar die Spuren 
auswählen, aber keine Daten sehen. Und so blieb das Projekt (wollte kein 
"neues altes" Laufwerk kaufen und auch mangels Priorität) bisher 
unvollendet.
Warum nicht ein externe 3,5-Zoll-Laufwerk mit USB-Anschluss zerlegen und 
dort das 5"1/4-Laufwerk anflanschen? Nach meinen Erkenntnisse sind weder 
Stecker noch Signale noch Software kompatibel.
Gast #7144980
Lesenswert?

Nikolaus S. schrieb:
> Warum nicht ein externe 3,5-Zoll-Laufwerk mit USB-Anschluss zerlegen und
> dort das 5"1/4-Laufwerk anflanschen?

Geht nicht. 5.25"-Laufwerke mit "HD" nutzen eine andere Drehzahl als 
3.5"-Laufwerke mit HD (und haben deswegen eine geringere Kapazität). 
3.5"-Laufwerke drehen mit 300 min-1, 5.25"-HD-Laufwerke drehen mit 360 
min-1.

Ein "richtiger" FDC wie der WD3765 kann damit umgehen, aber die Dinger 
in den USB-Diskettenlaufwerken können das nicht, die können noch nicht 
mal DD-Disketten ("720k") lesen.

> Nach meinen Erkenntnisse sind weder
> Stecker noch Signale noch Software kompatibel.

Stecker und Signale sind adaptierbar, die Software hingegen --s.o.-- 
nicht, es sei denn, es gelänge, die Firmware des USB-FDC zu verändern.

Henrik Haftmann hat sich mit dem Thema eingehender auseinandergesetzt:
https://www-user.tu-chemnitz.de/~heha/basteln/PC/usbfloppy/ -- aber 
irgendwann zwischendrin aufgehört.
Gast #7145014
Lesenswert?

Ich hatte mal ein Floppy Laufwerk mittels WS37C65 an einen Parallel-Port 
des PC angeschlossen. Der Chip war gut dokumentiert und daher relativ 
einfach zu verwenden. Das geht sicher auch an einem Mikrocontroller.

http://bitsavers.informatik.uni-stuttgart.de/components/westernDigital/_dataBooks/1991_SystemLogic_Imaging_Storage/31_WD37C65C.pdf

Allerdings sind heute eher Mikro-SD Karten angesagt.
Gast #7145028
Lesenswert?

Stefan ⛄ F. schrieb:
> Ich hatte mal ein Floppy Laufwerk mittels WS37C65 an einen Parallel-Port
> des PC angeschlossen. Der Chip war gut dokumentiert und daher relativ
> einfach zu verwenden.

Angeschlossen schon, aber ich wette dass du über den Parallelport
keinen einzigen Sektor erfolgreich gelesen oder geschrieben hast.
Gast #7145058
Lesenswert?

MaWin schrieb:

> Welchen, den 100 MHz Typen ? Muss man wohl noch ewig drauf warten.
> 16msps schafft kein 20 MHz Controller. Selbst wenn man per 10 MHz SPI
> einliest und die Bytes durch tabellengesteuerte state machines jagt,
> reicht es nicht.

Entweder hast du meinen Hinweis auf CCL überlesen oder du weisst nicht 
einmal, was das ist, weil deine AVR8-Kompetenz auf dem Stand von vor 
5..10 Jahren eingefroren ist.

Und was den Takt betrifft: ganz offiziell können die AVR8 heutzutage 
24MHz, inoffiziell sogar 32MHz.

Verstehst du jetzt das mögliche Grundkonzept?

Um das klarzustellen: Ich habe es nicht umgesetzt, weil Disketten für 
mich seit vielen Jahren (eigentlich sogar Jahrzehnten) ziemlich bis 
vollkommen irrelevant sind. Ich besitze inzwischen weder Disketten noch 
Laufwerke dafür mehr.

Ich halte es aber für durchaus möglich, mit den Features der neueren 
AVR8 einen HD-fähigen Floppycontroller umzusetzen. Konkret mit einem 
AVR128D(x)48 oder-64. Ich sehe eben bloß keinen Sinn darin, das tun zu 
wollen.
Gast #7145193
Lesenswert?

MaWin schrieb:
> Hier machen Viele den Eindruck, seit 1989 nichts mehr hinzugelernt zu
> haben.

Was Floppies betrifft gab es ja seitdem auch nichts mehr dazuzulernen. 
Halt wieder das übliche sinnfreie und unqualifizierte MaWin-Geschwafel.

Ich habe eine grössere Stückzahl Messmaschinen auf Z80-Basis mit 
Floppy-Interface mit dem Controller SAB2797 ausgeliefert. Dazugelernt 
habe ich seitdem zu Floppies tatsächlich nichts mehr, die funktionieren 
auch heute noch einwandfrei.

Vorher, in der Steinzeit, habe ich auch noch Floppy-Controller für 8 
Zoll gebaut mit Datenseparator aus Standard-TTL, weil der bei BASF nicht 
im Laufwerk enthalten war. Die Steuerung mit 2 x 8-Zoll-Floppy konnte 
man nicht alleine an der Maschine montieren, die wog wohl mehr als 20 kg 
und war nicht besonders handlich.

Georg
#7145197
Lesenswert?

Georg schrieb:
> mit Datenseparator aus Standard-TTL, weil der bei BASF nicht
> im Laufwerk enthalten war

Der war meines Wissens noch nie im Laufwerk enthalten, so man das 
übliche Interface nutzte. Auch bei den Floppy-Controller ICs wie dem 
erwähnten µPD765 war der nicht drin. Controller mit integriertem 
Datenseparator kamen erst deutlich später.

Für FM reichte ein Monoflop. BTDT, Controller-Karte für 1 MHz 6502 
gebaut, für Laufwerk von BASF. Für MFM war der Prozessor sowieso zu 
langsam. Bei MFM war es komplizierter weshalb die Karte beim 68000 ein 
entsprechendes IC bekam.
Gast #7145212
Lesenswert?

PittyJ schrieb:
> Der TE hat sich nie wieder gemeldet.
> Der verarscht uns doch.
> Einfach ein paar Bröckchen hinwerfen, und hier wird diskutiert für
> nichts und wieder nichts.

Naja, das typische Traffic-Troll-Konzept halt, sehr leicht erkennbar.

Ist aber nicht unbedingt immer vollkommen kontraproduktiv. Manchmal 
tauchen im Verlauf der Threads auch durchaus nützliche Informationen 
auf.

Aber klar: in der weit überwiegenden Mehrzahl sind diese Threads 
vollkommen nutzlose Gülle. Ich habe keine Ahnung, was die Trolle 
antreibt, sowas immer wieder anzukurbeln. Vermutlich einfach nur, weil 
es geht.

Die sollen sich einfach eine Freundin suchen und die "gewogen" halten. 
Dann sind sie sinnvoller beschäftigt. Ooops, ich habe das Risiko 
übersehen, dass sie sich dann vermehren könnten. "Begabung" verrerbt 
sich ja mit einer gewissen statistischen Signifikanz.

Diese Aussicht wäre natürlich auch wieder nicht so schön...
Gast #7145241
Lesenswert?

MaWin schrieb:
> c-hater schrieb:
>> Also ungefähr so, wie du neuere AVR8 und deren neue Fähigkeiten
>> konsequent ignorierst? Auch Lernblockade?
>
> Ich warte auf deinen Diskettenlaufwerksansteuercode, darf auch gern
> Assembler sein und blocking.

Wie ich bereits ausgeführt habe, sehe ich keinerlei Nutzen darin, sowas 
heute noch umzusetzen. Wenn du einen Nutzen darin siehst, bin ich gern 
bereit, diese Entwicklung als Auftragsarbeit zu liefern. Die Frage wäre 
also nur noch: was drückst du dafür ab?

Ach so: für deine Bereitschaft, bei Lieferung öffentlich zu erklären, 
dass es 1. geht und du 2. selber unfähig warst, es umzusetzen, würde ich 
dir 1/3 der Vertragssumme erlassen. Das wäre mir der Spaß wert. Ich bin 
alt genug, die wahren Genüsse des Lebens schätzen zu lernen ;o)
#7145413
Lesenswert?

An sich ist es sowieso egal. Wer heutzutage sowas für Retro entwickeln 
möchte, nimmt einen der üblichen Controllerbausteine. Natürlich keine 
SuperIO-Bausteine, sondern das in DIP und verfügbare Material.

Alle anderen nehmen direkt eine SD-Karte oder - ganz aktuell - einen 
CH375 für USB-Zugriff. Wenn man ein Floppy-Interface hat, dann lautet 
das Zauberwort "Gotek". Da steckt meist ein STM32 (oder Klon) drin und 
das ist auch ungefähr die Leistungsklasse, in der man die gesamte 
Diskettenwelt mit Software und in Echtzeit erschlagen kann.

Mit einem AVR und ohne zusätzliche Hardware macht das keinen Spaß. Ich 
gebe aber unserem Hassprediger recht, dass es vermutlich geht.
Gast #7146361
Lesenswert?

S. R. schrieb:

> Mit einem AVR und ohne zusätzliche Hardware macht das keinen Spaß.

Der Spaß ist doch nicht, EINFACHE Sachen umzusetzen. Das kann doch 
jeder, wo soll da der Spaß herkommen? Ich hab' was geschafft, was jeder 
andere auch schaffen könnte?

Nö, der Spaß ist, Sachen an der Grenze des jeweils Machbaren umzusetzen. 
Was natürlich vor allem damit anfängt, erstmal zu erkennen, was (und wie 
genau es) machbar ist. Das ist eigentlich die Phase, wo es wirklich noch 
reiner Spaß ist.

Die Umsetzung ist dann natürlich auch schon wieder was hart an der 
Grenze zu Arbeit. Man muß wirklich gerne programmieren, um das dann 
durchzuziehen. Oder sich halt dafür bezahlen lassen, wenn irgendwie 
möglich. Daher wohl der Begriff "Schmerzensgeld" ;o
#7147015
Lesenswert?

Floppies, auch 3 1/2 HD, lesen und schreiben geht mit einem AVR 
Prozessor ohne grösseren Handstand. Ich hatte damals einen Atmega1284P 
genommen, weil der hat genug RAM und läuft auch mit 20MHz. Später fand 
ich dann heraus 16MHz reichen völlig und man könnte es sicher auch mit 
weniger RAM machen (habe ich dann nicht mehr ausprobiert). Zuerst mal 
Sektoren lesen

https://www.5volts.ch/posts/mfmreader/

Dann Sektoren schreiben mit abgezählten Zyklen (sehr hässlich)

https://www.5volts.ch/posts/mfmwriter/

Und dann noch Sektoren schreiben mit Hilfe eines Timers (viel 
übersichtlicher)

https://www.5volts.ch/posts/mfmwriter2/

Das einzige Manko, es ist in Assembler.

Eigentlich sollte das die Grundlage für einen Floppy Controller Nachbau 
eines PDP-11 geben aber ich habe leider kein erschwingliches 8" Laufwerk 
mehr gefunden um das Projekt weiter zu führen.
Gast #7147318
Lesenswert?

Peter S. schrieb:

> Das einzige Manko, es ist in Assembler.

Nein, das ist kein Manko.

Ein echtes Manko ist, wenn ein Assemblerprogrammierer nicht die 
tatsächlichen Mankos seiner Lösung zu erkennen vermag...

1. Du brauchst ein zusätzliches CPLD zum Lesen.

2. Das  Schreiben ist nahezu "blocking". Sprich: Solange dein 
Floppy-Code läuft, ist (fast) nix anderes möglich.

Und genau diese beiden Mankos könnte man halt mit den neuen Features 
z.B. eines AVR128DB48 beheben. "CPLD" hat der nämlich in Form der CCL 
bereits eingebaut und außerdem gute (De)Serializer, die sich wiederum 
sehr gut mit dem CCL verheiraten lassen.

Das zusammen führt dazu, dass z.B. eine echte "Fullspeed"-Bridge möglich 
wird, d.h.: bidirektionaler Datentransfer mit der vollen möglichen 
Geschwindigkeit des Laufwerks, z.B. von/zu einem SPI- oder 
UART-Interface.
Beitrag #7147332 wurde von einem Moderator gelöscht.
#7147351
Lesenswert?

c-hater schrieb:
> Peter S. schrieb:
>
>> Das einzige Manko, es ist in Assembler.
>
> Nein, das ist kein Manko.
>
> Ein echtes Manko ist, wenn ein Assemblerprogrammierer nicht die
> tatsächlichen Mankos seiner Lösung zu erkennen vermag...
>
> 1. Du brauchst ein zusätzliches CPLD zum Lesen.
>
> 2. Das  Schreiben ist nahezu "blocking". Sprich: Solange dein
> Floppy-Code läuft, ist (fast) nix anderes möglich.
>
> Und genau diese beiden Mankos könnte man halt mit den neuen Features
> z.B. eines AVR128DB48 beheben. "CPLD" hat der nämlich in Form der CCL
> bereits eingebaut und außerdem gute (De)Serializer, die sich wiederum
> sehr gut mit dem CCL verheiraten lassen.
>
> Das zusammen führt dazu, dass z.B. eine echte "Fullspeed"-Bridge möglich
> wird, d.h.: bidirektionaler Datentransfer mit der vollen möglichen
> Geschwindigkeit des Laufwerks, z.B. von/zu einem SPI- oder
> UART-Interface.

1. Das vorgestellte Projekt ist das erste Projekt ohne CPLD. Das Projekt 
mit CPLD ist (noch) nicht veröffentlicht

2. Das Schreiben ist nicht nur nahezu sondern wirklich blocking, das 
Lesen übrigens auch

3. Du hast dich mit den CCL auseinandergesetzt? Ich glaube kaum, denn 
sonst wüsstest du, dass diese bei einer MFM dekodierung kaum 
gewinnbringend eingesetzt werden können, der Code bleibt blocking, habe 
es selbst ausprobiert

4. Was wirklich nötig wäre um so eine Aufgabe non-blocking zu machen 
wäre DMA, das haben die AVR128Dx leider nicht

Also zuerst lesen und dann meckern. Und zeig doch einfach mal wie du das 
gemacht hast

Peter
#7149582
Lesenswert?

c-hater schrieb:
> Nö, der Spaß ist, Sachen an der Grenze des jeweils Machbaren umzusetzen.
> Was natürlich vor allem damit anfängt, erstmal zu erkennen, was (und wie
> genau es) machbar ist. Das ist eigentlich die Phase, wo es wirklich noch
> reiner Spaß ist.

Ja. Aber man macht so ein Projekt ja nicht, um so ein Projekt zu machen. 
In der Regel will man damit auch etwas bezwecken. Sei es, um seine PDP-8 
(oder deren Emulation) aufzuhübschen, oder die alten Disketten 
auszulesen oder irgendwas in der Art.

Da hilft einem ein Controller, der exakt auf Kante genäht und zu 98% mit 
der Auslastung des Algorithmus beschäftigt ist, nicht mehr weiter. 
Bringt ja auch nichts, wenn der zwar die Diskette lesen und schreiben 
kann, dann aber ewig mit der Datenübertragung zu PDP oder Z80 
beschäftigt ist.

Peter S. schrieb:
> Und zeig doch einfach mal wie du das gemacht hast

Kanner nich.
Oder vielleicht kanners doch, aber tuts nicht.
Vom Ergebnis her ist das identisch.
Gast #7149611
Lesenswert?

Peter S. schrieb:

> 3. Du hast dich mit den CCL auseinandergesetzt?

Ja, sehr intensiv, wenn auch nicht unter dem Aspekt, ein 
Floppy-Interface damit bauen zu wollen. Die Erkenntnis, dass auch das 
damit möglich wäre, ist nur ein (für mich völlig nutzloses) 
Abfallprodukt.

> Ich glaube kaum, denn
> sonst wüsstest du, dass diese bei einer MFM dekodierung kaum
> gewinnbringend eingesetzt werden können

Das sehe ich definitiv völlig anders. Und wenn DU dich tatsächlich 
damit auseinandergesetzt hättest, würdest auch du das anders sehen...

> der Code bleibt blocking

Ähem nein.

> 4. Was wirklich nötig wäre um so eine Aufgabe non-blocking zu machen
> wäre DMA, das haben die AVR128Dx leider nicht

Das stimmt, DMA hat er nicht. Ist hier aber auch garnicht nötig. Um 
BYTES mit der nötigen Rate zu schaufeln, reicht es völlig. Mit den 
BITS muss er sich dank CCL+SPI ja nicht mehr beschäftigen.

> Also zuerst lesen und dann meckern. Und zeig doch einfach mal wie du das
> gemacht hast

Ich habe ausdrücklich gesagt, das ich es eben nicht gemacht habe. Ich 
könnte es aber jederzeit tun. Es muss mich bloß jemand dafür bezahlen, 
weil ich es weder für mich selber noch im Geschäft brauche. Wenn es also 
irgendwer braucht, steht es ihm frei, die Lösung bei mir zu kaufen. Dann 
kann er sie meinetwegen auch veröffentlichen. Solange der Urheber 
genannt und die eigene Unfähigkeit öffentlich dargelegt wird. 
Diesbezüglich biete ich dir dieselben Konditionen, wie ich sie MaWin 
angeboten habe.

Der scheint allerdings auf Floppy auch nicht so wirklich scharf zu sein. 
Was ich allerdings durchaus verstehen kann, ich selber bin es ja auch 
nicht. Aber für Geld...
Gast #7149711
Lesenswert?

> Wenn der TO jetzt ne alte Floppykarte mit ISA-Bus
> nehmen würde, veieinfacht sich die Sache dann?

Hehe - so war die erste Generation von Festplattencontrollern für den 
Amiga aufgebaut: eine ISA-Karte mit OMTI-5520-Controller (MFM, später 
5527 für RLL) und ein einfacher Adapter für ISA- nach Zorro-Bus.  Der 
Grund für die ISA-Karten war aber nur, dass die, im Gegensatz zu den 
einzelnen Chips, spottbillig und überall verfügbar waren.  Könnte 
heutzutage bei den Floppycontrollern ähnlich sein ;-)
Gast #7149732
Lesenswert?

Lotta  . schrieb:
> Wenn der TO jetzt ne alte Floppykarte mit ISA-Bus
> nehmen würde, veieinfacht sich die Sache dann?

Das ist ja das, was man mit dem WD37C65 (und ähnlichen) bekommt. Ein 
direktes paralleles µC Interface wie am ISA Bus. Den zweiten Chip dieser 
Karten (Adress Decoder) brauchen wir am Mikrocontroller nicht.

Seine Kern-Funktion war, beim den gewünschten Sektor zu finden und 
dessen Bits in Bytes umzuwandeln (bzw. anders herum beim Schreiben). 
Also primär ein Schieberegister mit der dazu nötigen Takt- und 
Zeitsteuerung. Das Einzige was ich an diesem Chip vermisse ist ein 
Pufferspeicher. Wenn er den Sektor gefunden hat, löst er einen Interrupt 
oder DMA aus und dann muss der Mikrocontroller die Daten so schnell 
übertragen, wie sich durch die Rotation der Disk ergibt.

> Die haben ja auch DMA gebraucht, oder irre ich mich da?

Nicht zwingend, geht auch ohne. Aber dann ist das Timing anspuchsvoll.

Nochmal der Link zum Datenblatt: 
http://bitsavers.informatik.uni-stuttgart.de/components/westernDigital/_dataBooks/1991_SystemLogic_Imaging_Storage/31_WD37C65C.pdf
Gast #7149809
Lesenswert?

Stefan ⛄ F. schrieb:
> Nicht zwingend, geht auch ohne. Aber dann ist das Timing anspuchsvoll.

Mit DD-Disketten (250 kBit/sec) haben das so langsame Geräte wie z.B. 
der Atari ST (mit 8 MHz getakteter 68k) oder auch noch langsamere 
8-Bit-Systeme hinbekommen.
Und wenn pro Byte ein Interrupt ausgelöst wird, sollte das auch bei HD 
(500 kBit/sec) ein typischer µC der Jetztzeit hinbekommen, den 
abzuarbeiten.

Die Interruptrate liegt bei 62.5 kHz. Das schafft ein AVR, der kann mit 
der Rate einen Sektorpuffer beschreiben bzw. auslesen.
Gast #7149851
Lesenswert?

Georg schrieb:
> Lotta  . schrieb:
>> Die haben ja auch DMA gebraucht, oder irre ich mich da?
>
> Gebraucht nicht unbedingt, aber auf dem ISA-Bus war DMA ja ohne Problem
> verfügbar. Das ist bei einfachen Controllern nicht so.

Der IBM PC/XT war zu langsam, um die Daten zu Fuß über den ISA-Bus 
abzuholen. So ein Floppycontroller hat keinen Puffer, da muss man mehr 
oder weniger in Echtzeit abholen.

Schon beim IBM/AT mit 6 bzw 8 MHz war DMA nicht mehr nötig, da wäre es 
auch mit PIO gegangen. Aus Kompatibilitätsgründen hat man es aber 
beibehalten. Die meisten Festplattencontroller liefen aber mit PIO, und 
so kam es zu der absurden Situation, dass die "langsame" Floppy 
schneller angebunden war als die Winchesterlaufwerke.

DMA kam dann zu Pentium II-Zeiten wieder in Mode, mit den 
ATA-Laufwerken.
Gast #7149856
Lesenswert?

DerEgon schrieb:
> Mit DD-Disketten (250 kBit/sec) haben das so langsame Geräte wie z.B.
> der Atari ST (mit 8 MHz getakteter 68k) oder auch noch langsamere
> 8-Bit-Systeme hinbekommen.
> Und wenn pro Byte ein Interrupt ausgelöst wird, sollte das auch bei HD
> (500 kBit/sec) ein typischer µC der Jetztzeit hinbekommen, den
> abzuarbeiten.
> Die Interruptrate liegt bei 62.5 kHz. Das schafft ein AVR, der kann mit
> der Rate einen Sektorpuffer beschreiben bzw. auslesen.

Du hast nicht verstanden, dass ein uC, wenn er ohne externen 
Datenseparator und ohne externe PLL auskommen soll, eine PLL in Software 
machen muss um den Drehzahlschwankungen folgen zu können  und man dafür 
eine 16 mal so hohe Samplerate des Datenstroms als notwendig für 
ausreichend zuverlässige Lesefähigkeiten erachtet. 8-fach mag auch noch 
irgendwie gehen mit Abstrichen an Zuverlässigkeit, aber 4-fach reicht 
sicher nicht.

Ebenso ist dir offenbar unklar, dass beim Schreiben nicht einfach ein 
Datenstrom mit z.B. 500kbps geschrieben wird, sondern die Flankenwechsel 
als PreShift um +/-125/250ns verschoben werden müssen, was auch 8MHz 
entspricht.

Anders gesagt: du hast keine Ahnung von Floppy-Technik und solltest 
lieber Schweigen als Unsinn vom Stapel zu lassen.

Alte Floppy-Controller ohne Spezial IC machten das mit einem Haufen an 
Zusatz-Schaltkreisen.
Gast #7149865
Lesenswert?

Soul E. schrieb:
> Der IBM PC/XT war zu langsam, um die Daten zu Fuß über den ISA-Bus
> abzuholen.

32 kHz Interruptrate mit einem 4.77-MHz-Prozessor bedienen, der pro 
Speicherzugriff vier Taktzyklen braucht (und hatte der nicht sogar noch 
Waitstates bei I/O-Zugriffen?) ... das ist halt deutlich langsamer als 
ein mit auch nur 1 MHz getakteter AVR. Allein das Auslösen eines 
Interrupts über den Interruptcontroller dürfte bei der 
PC-Hardwarearchitektur eine deutliche Latenz mit sich gebracht haben.

Tatsächlich wurde auf dem PC/XT sogar so verhältnismäßig langsames wie 
die UART aus Angst nicht im Interrupt betrieben, jedenfalls nicht von 
den dafür zuständigen Routinen im BIOS.
#7149896
Lesenswert?

Soul E. schrieb:
> Die meisten Festplattencontroller liefen aber mit PIO, und
> so kam es zu der absurden Situation, dass die "langsame" Floppy
> schneller angebunden war als die Winchesterlaufwerke.

Der HDD Controller des PC/XT verwendete DMA. Allerdings lief das genau 
wie bei der Floppy über den langsamen DMA Controller, nicht über Bus 
Master DMA wie beim Adaptec AHA1542 SCSI Adapter.
#7149921
Lesenswert?

MaWin schrieb:
> Lotta  . schrieb:
>> Geiles Thema!
>
> Und, hast du irgendeinen Beitrag gelesen und dir irgendein Bild
> angesehen oder Link gefolgt ?

Ja!
Ob ich ihn total verstanden hab, weiß ich aber nicht.
Die Beiträge im Forum lese ich aber normalerweise 3 mal:

mit positiver Einstellung
mit negativer Einstellung
zwischen den Zeilen.

Denn ich hab gelernt, das unter mancher knarzig-teerigen
Federung der OM's hier ne dicke Goldschicht zu finden ist,
wenn frau den Teer erstmal durchstoßen hat. ;-))

mfg
Gast #7149941
Lesenswert?

(prx) A. K. schrieb:
> nicht über Bus
> Master DMA wie beim Adaptec AHA1542 SCSI Adapter.

Den hätte man im PC oder XT nicht betreiben können.

Ich bin mir auch nicht sicher, ob das Hardwaredesign des PC bzw. XT 
überhaupt so etwas wie Busmaster-DMA zugelassen hätte; an Karten, die so 
etwas nutzten, könnte ich mich erinnern. Da der Festplattencontroller 
beim XT nichts standardisiertes war, sondern jeder Controller sein 
eigenes Süppchen gekocht hat (anders als beim AT mit dem WD1003, der in 
irgendeiner Form auch in heutigen SATA-Controllern drinsteckt), gab es 
natürlich etliche Möglichkeiten. Einig waren sie sich aber alle in 
einem: Sie waren langsam.
Die hypothetisch möglichen 500 kByte/sec Übertragungsrate erreichten 
MFM-Platten nur mit späteteren Controllern wie dem WD1006 (der ein RAM 
als Puffer für mehrere aufeinanderfolgende Sektoren verwendete und 
deswegen den "Interleave"-Betrieb unnötig machte).
Gast #7149992
Lesenswert?

Zu XT-Zeiten war 1:7 oder 1:11 Interleaving nicht ungewöhnlich. Da kommt 
dann mit jeder Umdrehung der Magnetscheibe ein Sektor. Und der wurde im 
Controller zwischengespeichert und konnte in Ruhe abgeholt werden.
Gast #7150233
Lesenswert?

Soul E. schrieb:
> Zu XT-Zeiten war 1:7 oder 1:11 Interleaving nicht ungewöhnlich.

Und damit werden aus den 500 kByte/sec Datenrate, die die Festplatte an 
den Controller liefert, mal eben knapp 72 kByte/sec oder sogar nur 45 
kByte/sec.

Heute bezeichnen wir Internetzugänge, die 500 kByte/sec liefern, als 
"Holzklasse".
Gast #7150821
Lesenswert?

MaWin schrieb:

> Du hast nicht verstanden, dass ein uC, wenn er ohne externen
> Datenseparator und ohne externe PLL auskommen soll, eine PLL in Software
> machen muss um den Drehzahlschwankungen folgen zu können

Nein, das muss er eben nicht. Man kann eine PLL mit den Möglichkeiten 
der CCL der neuen AVRs rein in "Hardware" umsetzen. Der MCU-Core hat 
damit nur zu einem Zeitpunkt was zu schaffen, nämlich bei der 
Konfiguration der CCL. Das ist, was du scheinbar nicht zu begreifen 
vermagst.

CCL ist de facto ein sehr primitiver FPGA. Aber eben nicht zu primitiv 
für den konkreten Zweck, aus dem Lesesignal eines Floppylaufwerks einen 
sauberen decodierten Bitstream und den dazu passenden Takt zu erzeugen 
und das an eine der SPI-Einheiten eines AVR128Dx zu verfüttern.

Erst dann kommt die MCU in's Spiel, die die fertigen Bytes von der 
SPI-Einheit abholen und weiter leiten muss.

Dein reines C-Gefrickele hat dir scheinbar jede ernsthafte Kompetenz 
geraubt.

Witzig ist dabei: Diese Sache wäre sogar in C problemlos umsetzbar, da 
die SPI-ISR selbst in dem gräßlich ineffizientem C implementiert locker 
schnell genug für die anfallende Datenrate wäre...
Gast #7150831
Lesenswert?

MaWin schrieb:
> Du hast nicht verstanden, dass ein uC, wenn er ohne externen
> Datenseparator und ohne externe PLL auskommen soll, eine PLL in Software
> machen muss um den Drehzahlschwankungen folgen zu können  und man dafür
> eine 16 mal so hohe Samplerate des Datenstroms als notwendig für
> ausreichend zuverlässige Lesefähigkeiten erachtet. 8-fach mag auch noch
> irgendwie gehen mit Abstrichen an Zuverlässigkeit, aber 4-fach reicht
> sicher nicht.

Und Du hast nicht verstanden, daß "DerEgon" sich auf die Nutzung eines 
FDC und den da rausfallenden Datenstrom bezieht.
Gast #7150833
Lesenswert?

c-hater schrieb:
> Dein reines C-Gefrickele hat dir scheinbar jede ernsthafte Kompetenz
> geraubt.

Pädagogisch bist du ein trauriger Blindgänger.

Wenn du jemand persönlich beleidigst, verschließt er sich vor dir. Das 
ist ganz normales menschliches Verhalten. Darum sind deine ganzen 
Ratschläge in diesem Forum vollkommen sinnlos. Das Einzige, was wirksam 
bleibt, ist schlechte Stimmung.
Gast #7150836
Lesenswert?

c-hater schrieb:
> Nein, das muss er eben nicht. Man kann eine PLL mit den Möglichkeiten
> der CCL der neuen AVRs rein in "Hardware" umsetzen

Nur zu.

Bei maximal 9 Gattern die auch noch dieselben Inputs sharen.

Übrigens unterlag DerEgon der irrigen Annahme, bloss weil ein alter 8 
bit uC auch irgendwie Floppies lesen konnte, müsste das ein AVR auch 
schaffen, und hat übersehen, dass der AVR das aber ohne Zusatzhardware 
(ausser Treibern) hinkriegen soll.

Ein WD37C65 oder GM82C765 ist jedoch eindeutig die bessere Losung - der 
enthält die Treiber schon.
Gast #7150849
Lesenswert?

Stefan ⛄ F. schrieb:

> Wenn du jemand persönlich beleidigst, verschließt er sich vor dir.

Du hast das immer noch nicht begriffen: Ein Nennung offensichtlicher 
Tatsachen ist keine Beleidigung.

Allenfalls kann sie als Beleidigung empfunden werden. Wenn man aber 
nichts mehr schreiben darf, was irgendeine Mimose möglicherweise als 
Beleidigung empfindet, ist das Internet de facto tot...
Gast #7150854
Lesenswert?

Nee, Du. Zwischendrin ging es darum, daß der olle PC für die Ansteuerung 
seines FDC ausgerechnet DMA brauchte, und daß ohne DMA das Timing 
besonders  kritisch wäre.

Und ich bezog mich explizit darauf, daß ein popliger AVR bei der 
Interruptbehandlung Kreise um den ollen PC rennt und die Interrupts 
eines FDCs bedienen kann.

Aus der Fragestellung des Threadstarters abzuleiten, daß unbedingt auf 
einen FDC verzichtet werden muss, ist allerdings auch nur einiger Leute 
Interpretation.
Beitrag #7150879 wurde von einem Moderator gelöscht.
Beitrag #7150917 wurde von einem Moderator gelöscht.
Beitrag #7150949 wurde von einem Moderator gelöscht.
Beitrag #7150964 wurde von einem Moderator gelöscht.
Beitrag #7150971 wurde von einem Moderator gelöscht.
Beitrag #7150974 wurde von einem Moderator gelöscht.
Beitrag #7150980 wurde von einem Moderator gelöscht.
Beitrag #7150984 wurde von einem Moderator gelöscht.
Gast #7151001
Lesenswert?

Stefan ⛄ F. schrieb im Beitrag #7150984:

> Gerne.

Na toll. Und was genau ist jetzt dein Beitrag? Rein technisch?

Geht's mit einem AVR128Dx? Ja oder nein, was sagst du? Wenn ja: warum? 
Wenn nein, warum nicht?

Das ist, was man Fakten nennt und worüber zu diskutieren wirklich 
lohnt. Alles andere ist sinnleerer Bullshit, vollkommen huppse...
#7151646
Lesenswert?

Mich würde eigentlich doch noch interessieren ob es noch andere 
geschafft haben ohne CPLD und ohne FDC HD-Disketten zu lesen und zu 
schreiben.

Die CCL des AVR128Dx könnte man evtl. beim Schreiben eines Sektors 
verwenden um die NOR Logik nachzubilden um aus den Rohdaten einen MFM 
Datenstrom zu generieren. Aber leider scheitert die Idee mit dem SPI auf 
dem AVR128Dx daran, dass das SPI die Bytes nicht nahtlos schreibt. D.h. 
zwischen zwei Bytes, auch im buffered Mode, macht der AVR128Dx eine 
Pause von einem Bit, das ist natürlich ärgerlich und verhindert mit SPI 
und CCL einen MFM Datenstrom zu erzeugen. Man könnte das SPI 
Datenregister natürlich auch bitsynchron schreiben, aber dann wird das 
mit dem blockfreien schreiben nichts und man gewinnt also genau nichts.

Lesen ist eine ganz andere Liga, ist übrigens wesentlich komplizierter 
als Schreiben eines Sektors, hier muss man sich mit dem MFM Datenstrom 
synchronisieren damit man die Clock und Daten bits auseinanderhalten 
kann. Dazu muss man die SYNC bytes erkennen und sich darauf 
synchronisieren. Da reichen die CCLs definitiv nicht aus, denn ein CCL 
ist nur in etwa das gleiche wie 2 LUT eines FPGA, da kann man keine 
Statemachine bauen die ein 8-bit SYNC Byte erkennt, dazu braucht man 
mindestens 16 LUT. Das SPI ist hier auch nicht hilfreich, weil man 
müsste einen Clock für das SPI generieren, der mit der evtl. 
schwankenden Datenrate synchronisiert ist. Da reichen die 3 CCL auch 
wieder nicht. Im CPLD habe ich dazu eine Statemachine mit 4 Flip-Flops, 
und das nur weil ich statt 16-fach nur 8-fach oversample (es hat sich 
gezeigt, das Floppies meist genügend stabil laufen, so dass 16-fach 
oversampling nicht nötig ist wie das in den meisten FDCs mit digitalem 
Dataseparator gemacht wurde). Sonst würde es 5 Flip-Flps brauchen. Die 
CCLS des AVR128Dx stellen aber nur total 3 zur Verfügung.

Leider hat sich der OP nicht mehr gemeldet und so wissen wir bis heute 
nicht ob er nur die Floppies ansteuern will um den Kopf zu bewegen und 
den Motor anzusteuern oder ob er wirklich die Daten lesen und schreiben 
will. Ich nehme aber an das Zweite ist der Fall, denn für das erste gibt 
es jede Menge Beispiele im Internet.

Vielleicht werde ich mir mal die Zeit nehmen und das Projekt mit dem 
CPLD ins Netz stellen. Hier sieht das Ganze natürlich wesentlich 
entspannter aus. Eigentlich bildet das CPLD einfach nur den Datenpfad 
eines FDC ab, d.h. er ist in der Lage aus Bytes einen MFM Datenstrom zu 
erzeugen und aus einem MFM Datenstrom das SYNC Byte zu erkennen und wenn 
er synchronisiert ist den MFM Datenstrom in Bytes umzuwandeln. Hier muss 
der AVR natürlich nur alle 16usec (bei 3 1/2 HD Floppies) ein Byte 
liefern oder abholen, das geht natürlich auch in einer Interruptroutine. 
Wobei der AVR dann trotzdem ziemlich ausgelastet ist und man natürlich 
nicht allzu lange Zeit nach dem Interrupt hat das nächste Byte zu 
liefern. Das CPLD ist in Leserichtung nur einmal gepuffert und in 
Schreibrichtung gar nicht, d.h. hier dient das 8-bit Interface als 
Puffer. Hier würde sich natürlich der Level1 Interrupt des AVR128Dx 
anbieten damit man die Reaktionszeit garantieren kann. Meine CPLD Lösung 
braucht 143 LUTs und 53 Flip-Flops. Spezialisten bringen das sicher auf 
etwas weniger, aber wir sind weit entfernt von den 6 LUT und 3 
Flip-Flops im AVR128Dx.

Die Signale DIR, STEP, HS, DSx, MOTON, TRACK0, WG etc. werden aber 
weiterhin rein in der AVR Firmware bedient. Auch ein Format eines Track 
muss man zu Fuss machen.

Hier auch noch etwas Zusatzinformation zum Ursprünglich geplanten 
Projekt, einem Floppy Disk Controller für einen PDP-11. Hier ist es 
eigentlich absolut unwichtig ob der AVR die Floppies Blocking oder 
Nonblocking lesen oder schreiben kann. Im Fall eines PDP-11 schreibt das 
Betriebssystem nur die Information über den gewünschten Sektor in die 
Controller Register und auch eine DMA Adresse. Anschliessend setzt der 
PDP-11 das GO bit im Controller und ab dann ist das BUSY bit im 
Controller gesetzt und regiert nicht mehr auf PDP-11 Zugriffe. D.h. der 
AVR hat mehr oder weniger alle Zeit der Welt sich nur mit dem Floppy 
abzugeben, den Sektor zu lesen oder schreiben, und danach oder davor die 
Daten via DMA in den PDP-11 Speicher zu schreiben/lesen. Anschliessend 
aktiviert er wieder das Controller Interface, d.h. löscht das BUSY bit, 
für die PDP-11 ist das dann die Information ob die Controller Register 
einen Status zeigen und dass er wieder einen neuen Befehl schreiben 
kann. Der AVR kann das alles sequentiell machen, da braucht es kein 
non-blocking Floppy Interface. Ähnlich ist das auch auf meinem RLV12 
Emulator umgesetzt. Die bekannten Betriebssystem auf der PDP-11 
funktionieren damit ohne Probleme.
#7153729
Lesenswert?

Lotta  . schrieb:
> Die haben ja auch DMA gebraucht, oder irre ich mich da?

Ja und nein. Weder der PCjr noch frühe Tandy-Systeme hatten einen 
DMA-Controller, also war er für DD-Formate nie zwingend nötig. 
HD-Formate können diese Systeme nicht verarbeiten.

Andererseits war DMA auf dem ursprünglichen PC/XT schneller als die CPU 
und für den Speicherrefresh ohnehin vorhanden, also hat IBM ihn auch für 
Disketten und Festplatten benutzt. Aus Kompatiblitätsgründen wurde das 
dann beibehalten, solange PCs mit Floppy-Controllern existierten.

DerEgon schrieb:
> Mit DD-Disketten (250 kBit/sec) haben das so langsame Geräte wie z.B.
> der Atari ST (mit 8 MHz getakteter 68k) oder auch noch langsamere
> 8-Bit-Systeme hinbekommen.

Ein ZETA V2 (kein DMA) schafft mit seinem Z80 bei 8 MHz auch 
HD-Disketten, aber nicht bei 4 MHz.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren