1541-SD-v2

Aus
Wechseln zu: Navigation, Suche


Erweiterung der 1541 Diskettenstation um eine SD Karte

Dieses Projekt basiert technisch auf einem alten Feldversuch von mir (1541-SD).

Der Unterschied sind aber die Projekt Ziele:

  • es soll BEIDES funktionieren (Diskette und SD-Karte)
  • der Einbau soll sehr einfach sein


Das Ziel ist es, optional zur Diskette eine SD Karte benutzen zu können. Der Eingriff erfolgt direkt bei der Schnittstelle zur Schreib-/Lese-Elektronik der 1541 Diskettenstation. Die 1541 bemerkt den Unterschied gar nicht, ob die Daten von der SD Karte oder von einer Diskette kommen. So laufen alle Programme einwandfrei, die Kompatibilität ist 100%.


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 den PLD gegen die 1541-SD Platine. Die Daten zum VIA 6522 kommen nun vom CPLD der Erweiterungskarte. Der CPLD liest die Daten je nach Einstellung entweder aus dem RAM Speicher oder von der Diskette (wie normal).


Betriebsarten

Die Platine 1541-SD-v2 ersetzt den PLA in der 1541 verwendet.

  • PLA entfernen
  • Platine statt PLA in den Sockel stecken


Normal Betrieb

In dieser Betriebsart tut der CPLD exakt dasselbe, wie die originale PLA. Die 1541 funktioniert wie gewohnt als Diskettenlaufwerk (Normal Betrieb).

Die exakten Gleichungen der PLA in der 1541 müssen noch ermittelt werden.


Simulation der 1541 Schreib-/Lese-Elektronik

In dieser Betriebsart arbeitet eine SD Karte als Datenträger in der 1541. Das Diskettenlaufwerk bemerkt keinen Unterschied. Alles verhält sich exakt wie eine eingelegte Diskette.



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


Controller

Am AVR Controller ist folgendes angeschlossen:

  • das SD Slot
  • der CPLD


Der Controller hat folgende Aufgaben:

  • Überwachung der Floppy Signale
  • lesen der Spurdaten von der SD-Karte
  • schreiben der Spurdaten auf die SD-Karte
  • schreiben der Spur Daten in das 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:

  • der 1541 (PLA Sockel)
  • dem Spur-RAM
  • dem AVR Controller


Die Logik im CPLD erfüllt folgende Aufgaben:

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


Ersatz der 1541 PLA:

In dieser Betriebsart tut der CPLD exakt dasselbe, wie die originale PLD. Die 1541 funktioniert wie gewohnt als Diskettenlaufwerk.

Die Gleichungen der PLA in der 1541 müssen noch ermittelt werden.


Simulation der 1541 Schreib-/Lese-Elektronik:

In dieser Betriebsart arbeitet eine SD Karte als Datenträger in der 1541. Das Diskettenlaufwerk bemerkt keinen Unterschied. Alles verhält sich exakt wie eine eingelegte Diskette.

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.


Es gibt zwei Möglichkeiten den CPLD an die 1541 anzuschließen. Entweder vor dem Schieberegister (direkt am VIA 6522) oder nach dem Schieberegister (an der Elektronik). Je nachdem werden die Daten zur 1541 byteweise oder Bit für Bit übertragen.



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)