Hallo Besucher, der Thread wurde 47k mal aufgerufen und enthält 204 Antworten

letzter Beitrag von Krill am

Schneller Trackloader

  • Ich habe einen schweineschnellen Trackloader geschrieben. Hier sind ein paar features:


    - läuft nur auf Pal-Systemen.
    - beschschleunigt eine 1541 mit Devicenummer 8 (oder 1541II, 1570, 1571).
    - kann einen Track in zwei Umdrehungen laden und GCR-dekodieren.
    - funktioniert wie HYPRA-Load: erst Loader mit run starten und dann das Programm ganz normal mit LOAD laden und starten.
    - Schaltet den Bildschirm wärend des Ladens ab.
    - Der Loader braucht Tabellen ab $c800. Falls das zu ladende Programm länger ist, dann werden diese Tabellen überschrieben. Das macht nichts, wenn alle ab $c800 zu ladenden Daten auf einem Track liegen.
    - Es sollte egal sein, ob noch andere Geräte am seriellen Bus angeschlossen sind (hab ich aber nur auf dem Emulator getestet).
    - Getestet ist das Programm auf VICE 1.22 (c64+1541,1571) und auf einem c128d blech.


    Wenn irgendjemand das Programm oder Teile davon gebrauchen kann, dann darf er dies tun. Meine einzige Bedingung dazu ist, dass er auf mich verweist, zum Beispiel: hab ich aus Mafiosinos loader kopiert.


    Ich komme in nächster Zeit leider nicht mehr dazu, den loader zu erweitern oder sowas (er hat zum Beispiel keine vernünftige Fehlerbehandlung), aber ich möchte noch Fehler beheben, wenn es welche gibt.


    Deshalb frage ich hier: Kann mal irgendjemand testen, ob der Loader auch auf einem echten c64 mit 1541, 1541II oder 1570 läuft? Ich habe die Stepperbewegung durch schnellere Interrupts beschleunigt. Ich gehe daher davon aus, dass es zum Beispiel unter Speeddos nicht läuft.


    Viel Spaß beim Ausprobieren,


    Mafiosino

  • Hallo Mafiosino


    Ich bin leider kein Eingeweihter des Floppyordens, deshalb kann ich deinen fastloader nicht richtig würdigen. :nixwiss:


    Deshalb zwei Fragen von mir:
    Wo hoch ist die Geschwindigkeit im Vergleich zum orginal BS oder im Vergleich zu anderen Fastloadern (z.b. FCIII)?
    Außerdem schreibst du das du einen Track mit 2Umdrehungen auslesen kannst. Wie viel sind es ohne Fastloader?


    hoffe auf Erleuchtung :)
    marco

  • Das Betriebssystem braucht für 191 blocks etwa 2 Minuten = 120 s. Mein Loader braucht dafür 6 s. Das ist rechnerisch Faktor 20. Mein Loader lässt sich allerdings etwas Zeit für das Suchen der zu ladenden Datei. Es wird einfach mittels Betriebssystemroutinen eine Datei geöffnet und wieder geschlossen. Das könnte man sicher noch optimieren.


    Interessant ist der Loader vermutlich erst für Sachen wie das Übertragen eines D64-Images aufs mmc64. Der könnte eine Diskettenseite in unter 20 s übertragen.


    Eine SAVE-Routine habe ich nicht geschrieben. Was sollte die denn genau können? Wenn ein Track abgespeichert werden soll wie bei einem Kopierprogramm, dann bräuchte man meiner Meinung nach mindestens 4 Diskettenumdrehungen. In der ersten wird der Track formatiert, dann könnte ein Sektor übertragen werden, wobei zwei Sektoren der Diskette vorbeirauschen, dann kann der Sektor geschrieben werden. Man kann so jeden 3. Sektor schreiben. Vielleicht könnte man irgendwie die Formatierung nebenbei ausführen, denn man muss ja nur die Header schreiben. Dann könnte man das in 3 Umdrehungen erledigen.

  • Zitat

    Original von Mafiosino
    Eine SAVE-Routine habe ich nicht geschrieben. Was sollte die denn genau können?


    Einen Track bzw. Block vom RAM auf eine bereits formatierte Diskette schreiben.
    So eine Routine würde ich gern in den D64-Writer für das MMC64 einbauen. Die aktuelle Version des Writers arbeitet mit einem Interleave-Wert von 11, es wäre also ein enormer Geschwindigkeitszuwachs zu erwarten.


    CU
    Kratznagel

  • Zitat

    Original von Mafiosino
    Das Betriebssystem braucht für 191 blocks etwa 2 Minuten = 120 s. Mein Loader braucht dafür 6 s. Das ist rechnerisch Faktor 20.


    Wenn ich mich recht erinnere dann Beschleunigt die FCIII den Ladevorgang um den Faktor 10. Die Doppelte Geschwindigkeit ist schon Wahnsinn ohne auf eine Parallele Schnittstelle zurück zugreifen. Warum soll das nur auf die MMC64+Floppy beschränkt werden. Das wäre doch ein gutes Einsatzgebiet für das MMC2IEC. Wenn ich richtig gelesen habe sollen Fastloader irgendwann mittels Hashwert erkannt werden, so das dann das Sendeprotokoll angepasst wird. Das gibt bestimmt einen riesigen Geschwindigkeitsboost.

  • Der Trick dieses Trackloaders liegt nicht im Übertragungsprotokoll, sondern darin, von jedem Sektor nur jedes 2. Byte zu lesen. Das erleichtert ein kleines bisschen das Dekodieren, aber vor allem spart es die Zeit zum Zwischenspeichern eines Sektors und gibt dazu die Zeit, jedes Byte sofort zu übertragen. Das ist was sehr 1541-Spezifisches, das gleiche Protokoll für eine Übertragung aus RAM heraus statt von Diskette wäre sogar langsamer als andere Protokolle. Dürfte also einem MMC nichts bringen.

  • Zitat

    Wenn ich mich recht erinnere dann Beschleunigt die FCIII den Ladevorgang um den Faktor 10. Die Doppelte Geschwindigkeit ist schon Wahnsinn ohne auf eine Parallele Schnittstelle zurück zugreifen.


    FC3 und AR dürften deutlich schneller als 10* sein.... eher auch so 20*, das warp format vom AR macht 25*

  • Diese Geschwindigkeitsangaben sind mehr "Gefühlt/Gemessen" als "Gerechnet". Das Original dürfte so einen Interleave von 30 haben, IRQ-Lader haben so 5 bis 4, AR dürfte 3 Umdrehungen brauchen, das Warp 2 Umdrehungen, aber bei weniger Daten. Dazwischen gibt es nichts. Nur: Je schneller der Lader, desto mehr fällt das Drumrum ins Gewicht. Eine Sekunde Dateisuche kann da schon 20% der Ladezeit ausmachen, und wenn nach einem Spurwechsel der nächste Sektor gerade verpasst wird kommt eine Extra-Umdrehung drauf, im Schnitt eine halbe, das sind wieder 10-20% oder so drauf. Da fällt selbst das Hochladen des Laders zur Floppy ins Gewicht, macht man besser mit einer eigenen Hochlade-Routine. Von Heureka-Sprint weiß ich, daß es beim Speichern beim Spurwechsel nachsieht, welches der nächste Sektor ist, der am RW-Kopf vorbeikommt.

  • Zitat

    Nur: Je schneller der Lader, desto mehr fällt das Drumrum ins Gewicht. Eine Sekunde Dateisuche kann da schon 20% der Ladezeit ausmachen, und wenn nach einem Spurwechsel der nächste Sektor gerade verpasst wird kommt eine Extra-Umdrehung drauf, im Schnitt eine halbe, das sind wieder 10-20% oder so drauf.


    wer wirklich schnell laden will verzichtet eh auf dateien :)

  • Zitat

    Original von Mafiosino
    Ich habe einen schweineschnellen Trackloader geschrieben.


    Wow, sehr gut!


    Mir ist aufgefallen, dass in dem Codestück, das in der Floppy läuft, Befehle wie SAX, SBX und ARR verwendet werden. Gibt's diese Opcodes in der 1541 ganz legal, oder sind das genau wie im C64 "illegale" (nicht offiziell dokumentierte) Opcodes, die möglicherweise nicht immer bzw. nicht auf jeder Hardware funktionieren? Verwenden andere, "herkömmliche" Fast-Loader auch solche Opcodes im Floppy-Code?