1541-SD

Aus
Version vom 4. September 2019, 23:18 Uhr von Tw (Diskussion | Beiträge) (CPLD Hardware)
Wechseln zu: Navigation, Suche


Ersatz der Schreib-/Lese-Elektronik einer 1541 Diskettenstation

Das Ziel ist, die Schreib-/Lese-Elektronik einer 1541 Diskettenstation zu ersetzen. Die Daten sollen nicht von einer Diskette kommen, sondern von einer modernen SD-Karte.


Natürlich gibt es das schon, in Form eines SD2IEC oder einer 1541-Ultimate. Aber es ist nichts ist kompatibler zu einer 1541 als ein 1541 Laufwerk. Die 1541 ist ein Computer mit eigener 6502 CPU sowie RAM und ROM. Man kann Programme in die 1541 laden und ausführen, was auch getan wird bei vielen Demos und Disk-Speeder.

Wir lassen die 1541 wie sie ist und tauschen nur die Schreib-/Lese-Elektronik gegen moderne Hardware. Dadurch bekommt die 1541 selbst gar nicht mit, dass etwas anders ist. Damit läuft auch jedes Programm weiterhin, die Kompatibilität ist tatsächlich 100%.


Diskette und Laufwerk

Die Diskette ist ein magnetischer Datenträger. Im inneren ist eine magnetische Scheibe, die mit ca. 5 Umdrehungen pro Sekunde rotiert. Ein Magnetkopf (eine Spule) ist über der Scheibe montiert. Mit jeder Umdrehung werden die magnetischen Änderungen in Strom Impulse umgewandelt.

Eine Diskette ist in Spuren und Sektoren unterteilt. Eine Diskette für eine 1541 Diskettenstation hat 35 Spuren. Jede Spur ist unterteilt in 17 bis 21 Sektoren, jeder Sektor hat 256 Bytes. Der Schreib- Lesekopf der Floppy wird auf eine Spur positioniert, danach werden die Sektoren dieser Spur der Reihe nach gelesen. Dadurch ensteht ein stetiger Datenstrom im Lesemodus.

Jeder Sektor hat zudem einen Kopfteil, damit der Sektor gefunden werden kann. Zudem werden jeweils 8 Bit in 10 Bit kodiert (GCR Kodierung). Zwischen den Sektoren und zwischen Sektor und Kopfteil sind Sync Bytes. So kommt man auf maximal 8KB Daten pro Spur.

Aber Sektoren sind für uns irrelevant. Wir betrachten zunächst nur eine Spur einer Diskette. Jede Spur enthält bis zu 8 KB Daten. Es ist ein Kreis, daher werden die Daten in einer endlosen Folge gelesen. Und zwar als Folge von einzelnen Bits. Die Diskette rotiert mit 5 Umdrehungen pro Sekunde. Daher werden die maximal 8 KB Daten fünf mal pro Sekunde übertragen (40 KB pro Sekunde).


Die Lese Elektronik

Die Lese Elektronik eines 1541 Disketten Laufwerk besteht aus einem Elektromagneten (eine Art Tonkopf) und etwas Analog-Technik. Solange sich eine Diskette im Laufwerk befindet und der Motor läuft, produziert die Lese Elektronik eine scheinbar endlos wiederholende Folge an Datenbits.

Eine scheinbar endlos wiederholende Folge an Datenbits, - perfekt für einen Ring Buffer. Perfekt für einen CPLD, an dem ein Speicher (SRAM) angeschlossen ist. Der CPLD liest Daten aus dem statischen RAM Speicher und schiebt die Bytes sequentiell raus. Schon haben wir die Lese Elektronik einer 1541 perfekt emuliert.


Die Schreib Elektronik

Die Schreib Elektronik eines 1541 Diskettenlaufwerk besteht aus einem Elektromagneten (eine Art Tonkopf), einem Taktgeber und etwas Analog-Technik. Wenn die Elektronik auf schreiben gestellt wird, dann wird ein Daten Bit-Strom verwandelt in magnetische Felder, die Teile der Diskette magnetisieren.

Dasselbe funktioniert auch in unserem Ring Buffer. Die Ring Buffer Adresse wird laufend erhöht, analog zur Drehung der magnetischen Scheibe in der Diskette. Sobald auf schreiben gestellt wird, liest der CPLD die Daten in ein Schieberegister ein. Alle acht Bit wird das entstandene Byte in den RAM Speicher übertragen. Schon haben wir die Schreib Elektronik einer 1541 emuliert.


Spur Wechsel

Soweit so gut, ein CPLD und ein statisches RAM mit einer Größe von 8KB, schon können wir eine Spur lesen und schreiben. Die 1541 merkt gar nicht, ob es eine echte magnetische Diskette ist, oder ob der Datenstrom aus einem CPLD bzw. einem RAM kommt. Aber eine Diskette hat 35 Spuren ...

Wenn die zu lesenden Daten nicht auf der aktuellen Spur zu finden sind, dann führt die 1541 einen Spurwechsel durch. Dazu werden Schrittmotoren verwendet, die den Kopf auf eine andere Spur bewegen. Wenn die 1541 einen Spurwechsel macht, dann müssen wir die Daten im RAM Speicher tauschen.

Eine Spur der Diskette ist im 8 KB großen RAM Speicher abgebildet. Wir müssen nun dafür sorgen, dass die Daten im RAM immer der aktuellen Spur entsprechen. Dazu müssen wir den RAM mit den Daten der aktuellen Spur beschreiben. Zuvor müssen wir aber die Daten im RAM sichern, falls ein Schreibvorgang durch die 1541 stattgefunden hat.


SD Karte

Das Ziel ist, die Diskette zu tauschen gegen eine SD Karte, wo tausende Disketten Inhalte zugleich Platz finden. Der Inhalt einer Diskette kann als eine Datei dargestellt werden (Disketten Image). Es haben sich bei der 1541 die Formate D64 und G64 durchgesetzt.

Um die SD Karte anzuschließen bietet sich ein AVR Controller von Atmel an (Atmega). Der Atmel liest ein Disketten Image Datei. In der Datei sind die Daten aller Spuren einer Diskette gespeichert. Die aktuelle Spur wird aus dem Disketten Image gelesen und in den RAM gespeichert. Um das RAM zuzugreifen wird der CPLD benutzt (an dem ist das RAM angeschlossen).

Der AVR Controller steuert die SD Karte. Er überwacht auch die Signale an den Schrittmotor. Dadurch weiß der Controller, auf welche Spur die 1541 wechseln will. Nach jedem Spurwechsel muss die alte Spur auf die SD Karte gesichert werden (falls ein Schreibvorgang stattgefunden hat) und die neue Spur wird von der SD Karte in den RAM übertragen.


Hardware des Prototypen

Wir benötigen also:

  • ein RAM Speicher (für die Spurdaten)
  • einen CPLD
  • einen AVR Controller
  • ein SD Karten Slot


Um den Aufbau zu vereinfachen werden fertige Platinen modifiziert und verwendet:


Das Pollin CPLD Board hat einen Xilinx CPLD (XC95144) und einen statischen RAM mit 128 KB. Das andere Board ist ein SD2IEC, das hat einen AVR Controller und einen SD Kartenslot. Zusammen ergeben die beiden Boards den Prototypen des 1541-SD.


SD2IEC Teil

Am AVR Controller ist folgendes angeschlossen:

  • das SD Slot
  • der CPLD
  • Signale von der 1541 (Stepper, Motor, Reset)


Der Controller hat folgende Aufgaben:

  • Überwachung der Floppy Signale
  • lesen der Disketten Image Datei
  • schreiben der Disketten Image Datei
  • schreiben der Spur Daten in den Spur-RAM
  • lesen Spur Daten aus dem Spur-RAM


Nach einem Reset öffnet der Controller die Image Datei und setzt die aktuelle Spur auf 18 (Directory Spur). Danach liest er die aktuelle Spur aus der Image Datei und überträgt die Spur Daten ins Spur-RAM.

Nun überwacht der Controller die Signale der 1541. Wenn der Motor anläuft wird der CPLD in den Emulationsmodus geschaltet. Wird der Motor gestoppt, dann wird der Emulationsmodus des CPLD beendet.

Sobald die 1541 einen Spurwechsel durchführt, wird der Emulationsmodus des CPLD beendet. Der Controller ermittelt die neue Spur. Wenn die 1541 in die aktuelle Spur geschrieben hat, dann liest der Controller die Spur Daten aus dem Spur-RAM und schreibt sie in die Image Datei. Dann wird die neue Spur zur "aktuellen Spur". Der Controller liest die aktuelle Spur aus der Image Datei und überträgt die Spur Daten ins Spur-RAM.


CPLD Hardware

Der CPLD ist angeschlossen an:

  • dem Spur-RAM
  • an der 1541
  • an dem AVR Controller


Die Logik im CPLD erfüllt folgende Aufgaben:

  • Simulation der 1541 Schreib-/Lese-Elektronik
    • Datenstrom lesen (Spur RAM --> 1541)
    • Datenstrom schreiben (1541 --> Spur RAM)
  • Spur Daten übertragen zwischen Spur-RAM und AVR Controller


Simulation der 1541 Schreib-/Lese-Elektronik:

Der Controller schaltet die Simulation ein und aus. Die Simulation sendet zyklisch Daten aus dem Spur-RAM zur 1541 (ca. fünf mal pro Sekunde). Wenn die 1541 signalisiert, daß sie schreiben will, dann schaltet der CPLD in den Schreibmodus. Daten von der 1541 werden ins Spur-RAM geschrieben.

Rein technisch ist es einfach ein Zähler, der bis zu einem bestimmten Wert (Länge der Spur in Bytes) zählt. Der Zählwert ist die Adresse in das RAM. Dazu gibt es einen weiteren Zähler für die Bitfolge (8 Bits - 0 bis 7). Das RAM wird gelesen in ein Schieberegister am Begin von Takt 0. Dann wird Bit für Bit aus dem Schieberegister raus geschoben.




Fazit

Die Simulation der Lese Elektronik läuft soweit tadellos. Das DOS meldet sich über den IEC Bus. Es können beliebige D64 und G64 Images gelesen werden. Auch alle speziellen Dinge wie Floppy Programme (morsecode, filereader, blockreader ...) laufen tadellos. Das schreiben wurde nie fertig implementiert, dürfte aber technisch kein Problem darstellen.


WEB Links

  • [[1]] der Firma Pollin (Xilinx 95144, 128x8 kB SRAM)