1541 RAM-Disk

Aus
Wechseln zu: Navigation, Suche


RAM-Disk Erweiterung für das 1541 Diskettenlaufwerk

Ein Grundproblem des 1541 Floppy Laufwerk ist der Mangel an RAM (Arbeitsspeicher). Das Gerät hat vom Werk her nur 2KB, weil RAM zu dieser Zeit sehr teuer war.

Einige Floppy Speeder haben das Problem erkannt und 8KB RAM augferüstet (Dolphin-DOS, Professional-DOS, Prologic-DOS ...). Damit konnte man eine ganze Spur einer Diskette im RAM zwischenspeichern und damit das Interleave Problem ausschalten.

Das Ziel wäre, so viel RAM in der Floppy zu haben, daß man eine ganze Diskette im RAM zwischenspeichern kann. Wenn eine Diskette erst mal eingelesen ist, erfolgen alle weiteren Lesezugriffe des C64 direkt aus dem RAM. Der Motor des Laufwerk muss nur noch anlaufen, wenn ein Schreibzugriff erfolgt.

Die Idee zu dieser Hardware ist nicht neu. Es exisitiert diese Hardware bereits in Form des wenig erfolgreichen TurboTrans+ (Nachfolger des TurboAccess).

Hardware

Als Hardware verwende ich eine modifizierte Final Expansion 3. Ein Flachbandkabel verbindet das FE3 mit der Platine der 1541 Floppy. Der interne ROM der Floppy (DOS) wird entfernt, der 2KB Arbeitsspeicher bleibt erhalten. Damit stehen dem Floppy Prozessor nun 514KB RAM und 512KB Flash zur Verfügung.

Das CPLD Design ist speziell angepasst. An der Adresse 8xxx (RAM Bank 0 bis 63) und Axxx (RAM Bank 0, optionaler Schreibschutz) der Floppy kann man RAM Speicher der FE3 einblenden (zweimal 8KB). Das ROM der Floppy wird durch den Flash Speicher (Flash Bank 0 bis 31) der FE3 ersetzt.

Das Banking kann per Software eingestellt werden. Dazu stellt der CPLD 3 Register zur Verfügung, die im IO Bereich ab Adresse 1400 eingeblendet werden.

Das SD2IEC im FE3 ist am IEC Bus angeschlossen und auf Gerät #9 gestellt. Diese 1541 Floppy hat also eine Diskette (bzw. eine RAM Disk) als Gerät #8 und eine SD Karte als Gerät #9.

Es wäre großartig, den CPLD so anzupassen, daß die TurboTrans+ Firmware direkt laufen würde. Leider ist nirgendwo die Hardware des TurboTrans+ dokumentiert. Mir ist es auch noch nicht gelungen, ein TurboTrans+ auszuleihen oder käuflich zu erwerben.

Software

Das DOS der 1541 ist nur geringfügig modifiziert worden. Zudem kann man durch Umschalten der Flashbank auf ein originales DOS umschalten (Kompatibilitätsmodus).

Die Modifikationen des DOS sind **JMP** Befehle an bestimmten Stellen im originalen Code des Disk Controllers (Sektor lesen/schreiben, Eingabeschleife). Die Ersatz Routinen übernehmen die Funktion der originalen Routine.

Die **Leseroutine** überträgt den gewünschten Block direkt aus dem RAM Speicher (wenn vorhanden). Wurde der Block noch nicht gelesen, dann kommt eine Routine zum Einsatz die eine ganze Spur in einer Umdrehung (200ms) in das RAM einliest.

Die **Schreibroutine** überträgt den Block direkt ins RAM. Dabei wird die betroffene Spur als "verändert" markiert.

Die **Eingabeschleife** sucht normalerweise nach Aufträgen im Eingabebuffer. Wenn kein Auftrag ansteht (**Lazytime**), dann werden anstehende interne Aufgaben ausgeführt:

* nur Spuren die als "verändert" markiert sind, werden auf die Diskette zurückgeschrieben.

Die Modifikationen im DOS sind beschränkt auf ein paar JMP Befehle. Daher kann man sehr einfach beliebiege DOS Versionen patchen. Getestet ist das mit originalem DOS und einem standard 40 Spur Speed-DOS.

Umbauanleitung

Bei meiner 1541 waren folgende Schritte nötig:

  • Das Flash der FE3 muss programmiert werden. Entweder am VC-20 oder in einem Programmer am PC.
  • FE3 mechanisch montieren, sodass das Flachbandkabel möglichst kurz bleiben kann.
  • Am VC-20 Connector wird ein Flachband Kabel angelötet (alternativ kann ein VC-20 Expansion Connector verwendet werden)
  • Das Flachband Kabel wird an der 1541 Platine angelötet. Fast alle Drähte können an der CPU (UC-4) angelötet werden. Der Draht für die IO Adressierung muss an Pin 6 des Adressdekoder 74LS42 (UC-8) der 1541 gelötet werden.
  • Das ROM der 1541 muss entfernt werden. Wenn es eingelötet ist, dann kann man den CS Pin abschneiden.
  • Wenn man das SD2IEC nutzen möchte, dann muss das IEC Kabel angeschlossen werden.

Todo's

Folgende Verbesserungen sind geplant:

  • Momentan liegen die GCR kodierten Daten im RAM Buffer. Die Floppy sollte in Leerlaufzeiten die GCR Dekodierung vorab machen, um den Zugriff weiter zu beschleunigen.
  • Das Lesen von Spurdaten in das RAM wärend der Lazytime und nicht erst bei Bedarf.
  • Eine einstellbare Verzögerungszeit für das Schreiben von Spurdaten auf die Diskette.
  • Software Befehle an die Speeder Hardware: umschalten auf original DOS
  • Hardware TurboTrans kompatibel machen. Man könnte dann TurboTrans+ direkt auf der Hardware ausführen.

News

  • 27.06.2010: Die Firmware schmiert ab und zu ab. Das Problem ist ein Speicherkonflikt. Der RAM und das IO spiegeln sich im unteren 32K Segment, Commodore hat die Adresse nicht sauber dekodiert. Abhilfe schafft die Verlegung des erweiterten RAM in Block 4 und 5.
  • 06.06.2010: Erste Version der 1541 RAM-Disk

WEB Links