Hallo Besucher, der Thread wurde 43k mal aufgerufen und enthält 162 Antworten

letzter Beitrag von ACDC am

Eigenbau Speeder

  • Ich habe euch ein paar Fotos von den notwendigen Schritten zum Einbau des Speeders in die Floppy zusammengestellt.
    Für den C64 gibt's nur das EPROM, das ihr in einen geeigneten Adapter oder eine Umschaltplatine stecken müßt.


    Floppy Einbau:
    Bild 1.
    Hier seht ihr alle Teile des Speeders, die Floppy Platine, das EPROM für den C64 und das parallele Verbindungskabel zwischen der Floppy und dem User Port des C64. An diesem Parallelkabel hängt auch der Schalter für das Ein-/Ausschalten des Beschleunigers in der Floppy.


    Bild 2.
    Ein Ausschnitt der Floppy Platine. Der rot eingekreiste IC ist der 6502 Prozessor. Dieser Prozessor war meines Wissens eigentlich in allen 1541-1 Modellen gesockelt. Mit einem Schraubenzieher muß dieser 6502 Prozessor aus dem Sockel gehebelt werden (vorsichtig, damit die Anschlußbeinchen sich nicht allzu sehr verbiegen).
    Die blauen Kreise markieren Stellen, an denen sich möglicherweise recht große Plattenkondensatoren zur Entstörung der nebenliegenden ICs befinden. Auf meiner Floppy habe ich diese mit einem Seitenschneider herausgezwickt, um Platz für den Einbau des Speeders zu schaffen.


    Bild 3.
    Der leere Sockel mit der darunter sichtbaren Bezeichnung "IC1" dient zur Aufnahme des aus der Floppy herausgehebelten 6502 Prozessors.


    Bild 4.
    Hier wird der Prozessor aus der Floppy in die Speeder Platine eingesetzt.
    Wichtig - die Kerbe des Prozessors zeigt in die gleiche Richtung wie sämtliche Kerben der anderen ICs auf dem Speeder auch !


    Bild 5.
    Der Floppy Beschleuniger besitzt an der Unterseite der Platine einen 40 pol. Stiftadapter. Damit wird die Beschleuniger Platine in die Floppy an der Stelle des ehemaligen 6502 Prozessors eingesetzt.
    Das Parallelkabel kann an einem der beiden vorgesehen IC Sockel Positionen (auf der Platine als CON2 und CON3 gekennzeichnet) eingesteckt werden, welcher von beiden verwendet wird ist egal.


    Bild 6.
    Das Parallelkabel muß am C64 derart angeschlossen werden, daß das Kabel den Stecker auf der rechten Seite verläßt.
    Außerdem sieht man hier auch nochmal den Schalter für das Ein-/Ausschalten des neuen ROMs in der Floppy 1541. In der "Aus" Stellung entspricht das Kernal ROM und die Hardware Umgebung in der Floppy zu 100% dem Original.


    Die neuen Speeder ROMs im C64 und der Floppy 1541 sind nicht aufeinander angewiesen, d.h. ihr könnt entweder nur im C64, nur in der Floppy oder natürlich in beiden Geräten die Beschleuniger ROMs aktiviert haben um Programme zu laden/speichern etc.. Auch bei abgestecktem Parallelkabel kann ein normaler Floppybetrieb stattfinden (z.Bsp. notwendig wenn am Userport ein anderes Gerät angesteckt wird).
    Die volle Geschwindigkeit gibt's natürlich nur bei aktivierten Beschleuniger ROMs in C64 und Floppy sowie angestecktem Parallelkabel.


    WICHTIG
    Schaltet beim An-/Abstecken des Userport Kabels C64 und Floppy lieber ab, mir sind bei eingeschaltenen Geräten in den letzten beiden Wochen zwei 6522 Portbausteine kaputtgegangen.

  • Und hier noch schnell nach Durchforstung meiner Sourcen eine Auflistung der hinzugekommenen Kommandos bzw. Funktionen:


    Goodies:
    * Schneller Reset am C64 mit Autostartunterdrückung etc.
    * Floppy Kommandos per @ Befehl
    * Funktionstastenbelegung
    * Floppymotor läuft beim Einlegen einer Diskette an (Zentrierung)
    * 35/40/41/42 Spur Betrieb
    * Korrigiertes @: (Save + Replace) Kommando beim Speichern
    * Directory laden und anzeigen ohne Programmverlust (Funktionstaste)
    * Load direkt aus dem Directory
    * "Old" Kommando zur Wiederherstellung von Basic Programmen nach einem Reset
    * Anhalten des Bildschirmscrollings (natürlich nur im Textmodus) bei Auflistungen (LIST, Directory etc.)
    * Ausgabe von Start- und Endadresse eines Programms bei LOAD


    Funktionstastenbelegung:
    F1 ... Directory laden und anzeigen ohne Programmverlust
    F2 ... Schreibt "SYS 4096*" in die Console
    F3 ... LIST
    F4 ... OLD
    F5 ... LOAD, entweder direkt aus dem Directory, oder ohne Filename das erste Programm auf Diskette
    F6 ... SAVE
    F7 ... RUN


    Weitere C64 Funktionen:
    <SHIFT> + <RUN STOP> ... Laden und starten des ersten Programms auf Diskette
    RESET + <RUN STOP> ... Unterdrückung des Autostarts eines angeschlossenen Moduls oder Programmes
    RESET + <C> ... Löscht den Speicher (z.Bsp. um lästige Autostart Programme loszuwerden)
    RESET + <T> ... Verschiebt den Inhalt der Zeropage auf die Adresse $7000 und kann nach dem Reset begutachtet werden
    Scrolling + <linke SHIFT/SHIFT LOCK> ... Anhalten eines LIST oder DIR, mit <rechter SHIFT> kann fortgesetzt werden


    Floppykommandos:
    @ ... Floppy Statusabfrage
    @<command> ... Einfache Möglichkeit zum Senden von Floppy Kommandos (entspricht OPEN 1,8,15; PRINT#1 ...), z.Bsp. @I zum Initialisieren der Floppy
    @FL:<filemask> ... "Lock" der in <filemask> angegeben Files
    @FU:<filemask> ... "Unlock" der in <filemask> angegebene Files
    @V- ... Abschalten des Verifies für Schreiboperationen (Speichern, Formatieren)
    @V+ ... Einschalten von Verify für Schreiboperationen (standardmäßig an)
    @VF ... Abfragen der Verify Einstellung
    @D+ ... Aktivierung des 40 Spur Betriebs (bei anschließendem Formatieren einer Diskette wird diese auf 40 Spuren formatiert)
    @D++ ... Wie "D+" nur mit 41 Spuren
    @D+++ ... Wie "D+" nur mit 42 Spuren
    @D- ... Wiederherstellung des 35 Spurbetriebs
    @DF ... Aktuellen Spurbetrieb abfragen

  • Hallo,
    ich habe da mal eine bescheidene Frage, und zwar ob Dein System zum Speeddos, Speeddos Plus Kompatibel ist, um all die schönen Programme zu nutzen die es für Speeddos gab.
    Und außerdem würde mich die Kompatiblität des Systems interessieren, ist dies auch mit Speeddos vergleichbar ?


    Viele Grüße
    MM

  • Zitat

    Originally posted by maxandmolly
    Hallo,
    ich habe da mal eine bescheidene Frage, und zwar ob Dein System zum Speeddos, Speeddos Plus Kompatibel ist, um all die schönen Programme zu nutzen die es für Speeddos gab.
    Und außerdem würde mich die Kompatiblität des Systems interessieren, ist dies auch mit Speeddos vergleichbar ?


    Ich bin mal so frech und nehme Retro eine Antwort vorweg :)


    An der Kompatibilität wird gerade noch gedreht. Bisherige Tests sehen aber schon mehr als gut aus: Auf ihm läuft mehr Software, als auf Speeddos(+).


    Mit letzterem ist Sunrise ist aber nicht kompatibel (wie du oben sehen kannst, verwendet Sunrise z. B. ein anderes Kabel).

  • Zitat

    Original von tischuer
    Mit letzterem ist Sunrise ist aber nicht kompatibel (wie du oben sehen kannst, verwendet Sunrise z. B. ein anderes Kabel).


    Oha? Ist das Kabel tatsächlich für Software anders aufgebaut als das übliche Parallelkabel? Fände ich recht seltsam...
    NLQ hatte im seriellen SJiffy eine wundervolle Blockread-Routine auf dei Beine gestellt.

  • Tim weiss schon was er da sagt, er hat das Teil schliesslich getestet. Momentan ist der Speeder übrigens bei mir :)


    Die Verwendung eines zu Speeddos nicht-kompatiblen Kabels hat bei Speedern durchaus Tradition und Sinn. Dadurch kann man eine einzige Speeder Hardware für alle Floppies (1541/1541C/1541-II/1570/1571) verwenden. Bei Sunrise klappt das leider trotzdem nicht, aber so wie ich das verstanden habe wurde es auch nie auf einer breiten Hardwarebasis durchgetestet, weil nie jemand Interesse gezeigt hat das System zu vermarkten. Was ich ausserordentlich schade finde, denn der Speeder ist einmal extrem schnell und dabei auch sehr, sehr kompatibel. Mit noch etwas Feinschliff an der Hardware, um die Kompatibilität mit mehr Floppyversionen zu ermöglichen, und etwas Feinschliff an der Software, um die Kompatibilität mit ein paar Programmen zu erhöhen, wäre das der absolute Edelspeeder. Die Versprechungen von Retro sind wirklich nicht übertrieben, beim Laden schlägt er sogar Professional DOS (in dessen Standardeinstellung), was in meinen Augen eine absolute Glanzleistung ist.

    Code: Floppy Fehlerkanal abfragen - Ausserdem kann ich bei "drive not ready" den I: und N: Befehl verwenden und notfalls den Kopf manuell zurückschieben. Und Finger weg vom Stepper!
    1. 10 open1,8,15 : rem 8 ist die Geräteadresse und das kann man bei Bedarf natürlich anpassen
    2. 20 get#1,a$:?a$;:ifst<>64goto20 : rem Das CLOSE 1 am Ende kann man sich sparen, weil beim RUN automatisch ein CLOSE ALL ausgeführt wird.
    3. RUN
  • Genau. Retro hat einen extra 6522 auf der Platine, der eine andere Adresse hat. Andere Speeder haben einen 6821, der auch eine andere Adresse hat, oder einen 6526 usw.

    Code: Floppy Fehlerkanal abfragen - Ausserdem kann ich bei "drive not ready" den I: und N: Befehl verwenden und notfalls den Kopf manuell zurückschieben. Und Finger weg vom Stepper!
    1. 10 open1,8,15 : rem 8 ist die Geräteadresse und das kann man bei Bedarf natürlich anpassen
    2. 20 get#1,a$:?a$;:ifst<>64goto20 : rem Das CLOSE 1 am Ende kann man sich sparen, weil beim RUN automatisch ein CLOSE ALL ausgeführt wird.
    3. RUN
  • Danke für Deine Stellungnahmen x1541, hab' erst jetzt wieder einen Blick hier herein 'riskiert' ;).


    @Hardware Kompatibilität
    Als ich den Speeder Ende der 80er Jahre entwickelt habe, war ich nur in Besitz einer einzigen 1541-I Floppy und wurde nur darauf getestet (konnte mir auch nicht mehr leisten). Wie x1541 auch erwähnt hat, aufgrund des mangelnden Interesses von Firmen zu dieser Zeit das Teil noch zu vermarkten, ist der Speeder nun sehr lange Zeit auf Eis gelegen, bis ich vor wenigen Monaten meinen C64 wieder mal aktiviert und dieses Forum gefunden habe.


    Wie sich nun durch Tests von Tim und x1541 gezeigt hat, gibt es leider mit den etwas älteren 1541-I Modellen noch Probleme, an denen ich gerade (wenn's die Zeit erlaubt) dran bin. x1541 war so nett und hat mir eine der Problem Platinen zu Testzwecken zukommen lassen, allerdings bin ich nach meinen bisherigen Versuchen noch am Grübeln, wie ich dem Problem auf die Schliche komme, das sich durch sporadische Schreib-/Lesefehler äußert.
    Danke auch für das Lob in Deinem Absatz x1541 :).


    @Parallelkabel / Port
    Obwohl ich heute selber ein wenig an meiner Erinnerung zweifle, glaube ich, daß durch meinen eigenen IO Baustein, den ich mit 2 MHz während des Ladevorganges betreibe, ein klein wenig schneller wurde (ich schätze den Vorteil heute aber vielleicht auf 0.1 Sekunden ein, ich weiß es eben leider nicht mehr genau, aber ich wollte damals einfach unbedingt den schnellsten Direktlade Speeder bauen, den man bekommen kann).
    Vielleicht wäre eine kleine Designänderung hin zum SpeedDOS kompatiblen Port gar kein Nachteil, denn die 6522 sind etwas Mangelware bzw. die verfügbaren Modelle von WDC nur in großen Stückzahlen lieferbar.


    Ich halte euch aber am Laufenden was diese Fragen betrifft bzw. werdet ihr hier sicher einen Freudenschrei "lesen", wenn ich das Problem auf der ganz alten 1541-I gefunden habe ;).

  • Ich verstehe Dich da so, daß Du ganz generell wissen möchtest, wie FLoppyspeeder funktionieren. Letzten Endes drängt sich einem ein Floppyspeeder regelrecht auf, wenn man in Assembler programmiert und einen Blick in die Floppy riskiert. Im Grunde ist die Floppy ein Computer wie der C64 auch, hat halt nur statt Video und Sound ein paar Chips für I/O. Ein paar Dinge sind vorgegeben, wenn man nicht gleich eine ganz neue Floppy bauen will. Vom Schreib-Lesekopf gehen kodierte Daten in die Elektronik, ein Programm kann dann in den I/O-Chips nachsehen, was gerade passiert bzw. wird ähnlich IRQ'S informiert. Der Rest ist eigentlich Software. Dazu gehört, die Daten soweit zu vestehen, daß man korrekte Sektoren ansteuern und einlesen kann. Dann muß ein Sektor eingelesen, dekodiert und übertragen werden. Und da kann man sich einige Routinen ausdenken, die diese Aufgaben schaffen, und die sehen garantiert anders aus als das, was Commodore da eingebaut hat.


    Die ganze Übertragung ist nur das Setzen und Löschen von Bits des Floppy-Programms in einem IO-Baustein, und die anderen angeschlossenen Geräte (der C64) beobachten die Empfangsleitungen und interpretieren das Geschehen.
    Die einfachsten Software-Fastloader müssen nur verstehen, wie die Dateien auf den Sektoren liegen und beschleunigen nur die Übertragung. In der Floppy läuft halt ein eigenes Programm, daß sich Sektoren vom normalen DOS lesen lässt und das dann selber die Übertragung an den C64 vornimmt, und zwar nicht nach Commodore-Standard. Sowas reicht dann schon für 5-fache Beschleunigung.
    Wenn man tiefer geht überlässt man das Lesen von Sektoren nicht mehr dem DOS, sondern schaut dem Schreib-Lesekopf direkt auf die Bits. Von dort kommen kodierte Daten, die auch erstmal von Software lesbar gemacht werden wollen, und man kann definitiv schneller decodieren als es das Original-DOS macht.


    Hardware-Basteleien tun dem ganzen auch gut: Die Floppy hat ein komplettes Register unbenutzt, das man prima mit einem Paralelkabel mit dem C64 verbinden kann, vereinfacht die Übertragung doch sehr. Mehr RAM tut auch gut, am besten genug für eine ganze Diskette, aber genug für einen Track statt für einen Sektor bringt auch einiges. Man muß sich dann nicht mehr starr daran halten, wie das File auf die Sektoren verteilt ist, sondern kann mehr Rücksicht auf die Physik nehmen.
    Gleich die ganze "wichtige" Hardware der Floppy durch einen 2MHz-Computer zu ersetzten schafft dem Programmierer Luft für weitere Ideen, die sonst an der Rechenleistung gescheitert wären, sowas wie lesen-dekodieren-übertragen alles Gleichzeitig.

  • Danke Hoogo,


    das war schon mal ein kleiner Anfang - aber ich will mehr :-)
    Wenn Retro das als richtiges Projekt aufgezogen und Firmen angeboten hatte, dann hat er sicherlich noch ein paar anschauliche Diagramme die die Arbeitsweise seines Speeders verdeutlichen und mit der, des 'rohen' C64-1541-System vergleichen, welches ja auch schon etwas Besonderes ist und sich am ehesten mit einem SCSI-System vergleichen läßt, denke ich.
    Aber ich will hier nicht mutmaßen, denn ich frag ja, weil ich's genau wissen möchte und würde den Meister lieber selbst zu Wort kommen lassen:

  • Diagramme ? - Nein, sowas habe ich nicht mehr bzw. glaube ich nicht, daß ich irgendwelche hatte. Nachdem es damals einige Floppy Speeder gab und deren Funktionsweise ähnlich war, war wohl eher die Meßzeit ausschlaggebend. 1990 bzw. 1991 hätte mir aber sicher auch kein Diagramm mehr geholfen, den Speeder einer Firma anzupreisen - ich glaube 1992 kaufte ich mir dann meinen ersten PC ;(.


    Du möchtest wissen wie mein Speeder funktioniert ? Zuerst mal muß man wissen, warum die 1541 Floppy im Original Modus so langsam ist. Folgende Punkte fallen mir dazu ein:

    • Der serielle Bus (die Datenbits werden einzeln hintereinander ohne richtiges Handshake übertragen, d.h. die Floppy wartet nach jedem Bit bis der C64 es ganz sicher übernommen hat)
    • Die GCR Codierung (die Floppy speichert die Datenbytes nicht 1:1 sondern wandelt 4 Datenbytes in 5 GCR Bytes um)
    • Der geringe Speicher der Floppy sodaß die Sektoren einzeln gelesen, dekodiert und übertragen werden müssen
    • Das ständige Warten auf den folgenden Sektor
    • Die langsame Kopfbewegung und die daraus resultierende Zugriffszeit


    Und genau an diesen Punkten setzen eigentlich alle Speeder an, die auch mit etwas mehr Hardware geliefert werden, so auch meiner.


    Parallele Datenübertragung
    Das war so ziemlich mein erster Punkt, den ich bei meiner Entwicklung einsetzte. Alleine durch den Einsatz eines parallelen Kabels mit richtiger Handshake Übertragung brachte ich die Ladezeit von 202 Blöcken schon auf ca. 20 Sekunden.


    RAM
    Um das ständige Warten auf den nächsten einzulesenden Sektor einer Spur zu vermeiden, setzte ich ein 8 kB RAM ein. Dadurch kann ich sämtliche Sektoren einer Spur in einer Umdrehung einlesen und die benötigten Sektoren bei Bedarf daraus abrufen.


    2MHz + GCR Dekodierung
    Der Prozessor arbeitet mit variabler Taktfrequenz 1 MHz / 2 MHz. Die 2 MHz benötige ich, um während des Einlesens der Sektoren einer Spur diese auch gleichzeitig von der GCR Codierung zu 'befreien'. Der Mechanismus arbeitet mit Codetabellen, d.h. ich muß mir während des Einlesens immer 5 bit so zurecht legen, damit mir diese als Index auf ein 4 bit Nibble dienen können.
    Durch das Dekodieren während des Einlesens habe ich am Ende einer gelesenen Spur die Sektoren auch gleich alle dekodiert im Speicher und muß nicht einen extra Schleifendurchlauf dafür machen.
    Zusätzlich kann ich durch die 2 MHz auch noch die Checksummen Berechnung während des Einlesens durchführen (alle Datenbytes eines Sektors werden untereinander EOR verknüpft und dieser Wert in einem Checksummenbyte abgelegt, welches auch auf der Diskette gespeichert wird - zur Erkennung von Lesefehlern).


    Lesen der Sektoren on the fly
    Bsp., zeigt die Sektorverkettung beim Laden eines Programmes auf Spur 1 Sektor 0, so bewege ich den Schreib-/Lesekopf auf Spur 1, warte aber mit dem Lesen der Spur nicht bis Sektor 0 vorbeikommt, sondern beginne mit dem Einlesen der Sektoren sogleich mit dem ersten, der am Schreib-/Lesekopf ansteht. Am Ende des Einlesens einer Spur sind aber alle Sektoren geordnet abgelegt, d.h. ab $8000 findet sich Sektor 0, ab $8100 Sektor 1 usw. (mein RAM blende ich bei Speicherstelle $8000 - 9fff ein).


    Diese paar Punkte machen bei meinem Speeder eigentlich schon die ganze Geschwindigkeit beim Laden eines Programmes aus ;).


    Explizit beschleunigt habe ich nur das Laden- und Speichern von PRG Dateien, die Beschleunigung bei SEQ, USR und REL Dateien resultiert aus verbesserten Block Lesen/Schreiben Routinen. D.h. diese Routinen verwenden auch das Prinzip des Lesens/Schreibens einer ganzen Spur und das Cachen von einzelnen Sektoren im RAM.


    Extra beschleunigt habe ich dann noch die Formatier, Scratch und Validate Routinen, wobei mir im speziellen die Validate sehr gut gelungen sein dürfte ;).


    Na ja, soweit mal das Wichtigste.


    Ein paar Hardware Spielereien habe ich auch noch eingebaut, wobei ich aber hoffe, daß mir die nicht das Problem auf den älteren Floppies erzeugen.

  • Hey Retro,


    erst mal vielen Dank für deine ausführliche Antwort.


    Dass es enorme Geschwindigkeit bringt, die Daten parallel zu verschicken, leuchtet ein.


    Deine Software auf dem C64 unterhält sich also mit deinem Programm in der Floppy, welches die Daten schneller ließt, weil es extra-Speicher verpasst bekommen hat, mehr auf einmal lesen kann, nebenbei noch den GCR-Code dekodiert, dadurch 2 Bit pro Byte spart und viel auf einmal an den C64 schickt.


    Ah - mir dämmert's - und damit das ganze auch universell funktioniert, hast du dich an die ganzen Standard-Floppy-Befehle gehangen, die dann einfach deine Software benutzen, statt die Routinen für die Serielle Schnittstelle.


    Nein, da ist noch ein Haken!
    Du hast kein Software auf dem C64, alles ist in der Floppy.
    Dort fängt dein Programm die Floppy-Befehle ab, und macht den schnelleren Zugriff.


    Hm, wie kannst du denn von der Floppy aus auf den Speicher des C64 zugreifen, hat der schon sowas wie DMA?


    Gruß, Worf

  • Hallo Worf,


    -Ob "extra Speicher das Lesen beschleunigt" ist Definitionssache. Der Speicher ist sozusagen ein Cache, der mit allen Sektoren einer Spur gefüllt wird. Beim normalen Laden Sektor für Sektor, wie die Datei verteilt ist, muß man häufig auf den einen verlangten Sektor warten, denn man hat keinen Einfluß darauf, wie sich die Diskette im Laufwerk dreht und wann der Sektor mal vorbeihuscht. Liest man die ganze Spur, kann man die Reihenfolge der Datei ignorieren, Ziel ist nur, den Cache zu füllen.
    -"Mehr auf einmal lesen" ist korrekt. Die normale 1541 hat nur 2KB, da scheidet das Lesen einer Spur aus.
    -"2Bit pro Byte sparen" kann man so nicht sagen. Die GCR-Kodierung oder zumindest etwas in der Art wird von der Hardware gebraucht. Der Schreib-Lesekopf erkennt Bits durch Wechsel der magnetisierung. Wechselt sie innerhalb einer bestimmten Zeit, ist das Bit 1, wechselt sie nicht, dann 0. Um Schwankungen in der Mechanik auszugleichen wird regelmäßig ein 1-Bit zur Orientierung benötigt, zu viele 0en hintereinander sind nicht mehr genau zu messen. Ob die Mechanik wirklich so eiert bezweifle ich zwar, aber so ist das jedenfalls in die 1541 eingebaut worden. Um diese Beschränkung einzuhalten gibt es die GCR-Kodierung. 4 Bit werden beim Schreiben zu 5 Bit aufgebläht, und diese 5er-Päckchen kann man beliebig aneinanderreihen, ohne daß mal mehr als 8 1en oder 2 Nullen aufeinanderfolgen. Daß man das beim Laden Rückgängig machen muß, gilt für alle Lader, allerdings verlegt man das auch schonmal auf den C64. Das ist aber etwas aufwendig, on-the-fly bei 1MHz habe ich nur einmal bewundern dürfen (habe mir allerdings die ROMs der Hardwarespeeder nie angesehen), normalerweise braucht man nach dem Lesen des Sektors noch etwas Zeit oder hat halt 2MHz zur Verfügung.
    -Daß Retro keine Software im C64 hat bezweifle ich :)
    -Die Floppy kann nicht auf den C64-Speicher zugreifen (obwohl das mit dem DMA mal eine krasse Idee wäre)

  • Worf
    Im C64 habe ich natürlich auch die ganzen Kernel Routinen modifiziert, damit die mit dem parallelen Kabel arbeiten können. Aus Kompatibilitätsgründen sind die seriellen Routinen nach wie vor vorhanden, und werden auch genutzt. Denn es ist durchaus denkbar, daß zwei Floppies am C64 hängen, wobei sich aber nur in einer ein Speeder befindet, d.h. die andere muß nach wie vor über den seriellen Bus bedient werden.
    Dem zusätzlichen Code sind aber die Kassettenroutinen im C64 zum Opfer gefallen, denn irgendwo mußte ich die zusätzlichen Funktionen unterbringen.


    Hoogo
    Die GCR Kodierung ist nicht nur zum Ausgleich von Schwankungen in der Mechanik vorhanden. Die Drehzahlen zweier Floppies sind niemals so ident, daß eine Diskette von der einen aufgezeichnet auf der anderen ohne Schwierigkeiten lesbar wäre, gäbe es diese Synchronisierungsbits durch die GCR Kodierung nicht.


    Wirklich, es gab auch Speeder oder Ladesysteme, die die GCR Dekodierung am C64 durchgeführt haben ? Hmm, aber zumindest die ersten Bytes eines Sektors müssen in der Floppy dekodiert werden, damit der Folgesektor erkannt wird. Die Checksummen Berechnung erfolgt eigentlich auch mit den dekodierten Daten, wurde dann auf die Erkennung von Lesefehlern verzichtet ?

  • Ja, Lader, die für Demos verwendet werden, kümmern sich in der Regel einen Dreck um die Prüfsumme, aber als Herr über das zu ladende Programm hat man eh Möglichkeiten, die bei parallelen Hardwarespeedern nicht wirklich Sinn machen.
    In alten Censor-Demos habe ich eine Übertragungsroutine gesehen, die zunächst die Laufunterschiede zweischen 6510 und 6502 auf einen Takt Unterschied gebracht hat, um dann anschliessend einen ganzen Block von Bytes schneller zu übertragen. Die 1541 hat undecodierte Bytes gesendet, der C64 hat sich die in 5er-Päckchen abgegriffen...
    Krills Loader und wohl auch die Action Replays erstellen in der 1541 auch keinen komplett "normal" decodierten Sektor, sondern schieben sich irgendwas im Speicher zurecht, was im Übertragungsteil dann wieder gelegen kommt. Bei paralleler Übertragung ist das aber alles Wertlos.


    Die Unterschiede zwischen verschiedenen Laufwerken habe ich bei GCR gar nicht bedacht.

  • Hi Retro,


    Du hast also eine Platine mit verschiedenen Bausteinen in die Floppy eingesetzt, diese mit einem Kabel am Userport an den C64 angeschlossen.
    Dann hast du noch Software im C64 untergebracht:
    >Im C64 habe ich natürlich auch die ganzen Kernel Routinen modifiziert


    Kann man dieses Kernel-ROM einfach ausbauen, kopieren, abändern und durch ein Eprom ersetzen oder mußtest du anders vorgehen? Dein Speeder ist doch auch abschaltbar, oder?


    Bekommt die mit deinem Speeder getunete Floppy noch Befehle über die serielle Schnittstelle, oder fängst du alles im Kernel ab und schickst es über das Parallelkabel?


    Gruß, Worf