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

letzter Beitrag von Cpt.Hardy am

Vice SD2IEC Emulation

  • Hallo, vielleicht wurde das auch schon an anderer Stelle er- oder geklärt, hab aber leider mit der Suchfunktion nix passendes gefunden. Für unterwegs hab ich mir mit einem PiTop (Raspberry Pi Laptop "Bausatz") und BMC64 einen kleinen "Ersatz" gebastelt. Den würd ich jetzt noch gern so konfigurieren, dass er zumindest ansatzweise und soweit wie möglich meinem "richtigen" C64 entspricht. Somit hätte ich da im Emu auch gern eine SD2IEC Emulation. Was ich dazu gefunden habe ist das hier: http://commodore64.samcoupe.cz/sd2iec-pcemulation.html aber da werde ich noch nicht wirklich schlau... Wie kann ich da die SDCard simulieren? Muss da ein neuer Ordner angelegt werden in dem dann die d64 Images liegen? Wer sich jetzt fragen sollte, was das für einen Sinn macht, klare Antwort; eigentlich keinen... Wär halt einfach nur cool, wenn ich da eben die gewohnte Umgebung hätte.

  • Der stellt da letztendlich nur die Funktion "IECDevice" an, womit VICE auf der jeweiligen Laufwerknummer ein Verzeichnis des Host-PCs per KERNAL-Traps sichtbar macht.


    https://www.c64-wiki.de/wiki/VICE#Laufwerks-Emulation


    Dann scheint er noch ein anderes Laufwerks-ROM auszuwählen (unklar, wozu - wird bei IECDevice eh nicht wirklich benutzt) und einen anderen KERNAL (was definitiv mit "SD2IEC-Kompatibilität" nichts zu tun hat, vermutlich ist das einfach ein Kernal mit Funktionstastenbelegung oder so).

  • Huch, der verwendet ja meinen Kernal :).


    Es gibt quasi zwei Level von Emulation: einmal das Verhalten des Filesystems (wo Du auf Dateisystem-Folder und DIskimages zugreifen kannst, die sich dann halt statt auf einer sd-Karte auf Deiner Festplatte befinden). Das bekommst Du wie 1570 schon sagt durch Aktivieren eines "IEC-Devices" in Vice hin.


    Zum anderen gibt es dann noch sd2iec-spezifische Funktionalität, z.B. der spezielle Schnelllader, und diverse Spezial-Befehle. Manche davon funktionieren auch mit dem Vice IEC-Device. Andere nicht (z.B. Wechsel ins Root-Verzeichnis, der spezielle Schnelllader etc.). Aber wenn Du ohne die auskommst (und das kann man normalerweise), brauchst Du nichts mehr als das IEC-Device. Wenn Du meinen sd2iec-Kernal verwendest, wirst Du z.B. feststellen, dass im Browser wenn Du INS drückst ein Syntax Error kommt, weil das IEC-Device den sd2iec-Befehl für den Wechsel ins Root-Verzeichnis nicht kennt. Der Schnelllader wird auch nicht verwendet, das macht aber nichts, da es in meinem Kernal einen Fallback zu Kernal-Load gibt und dieser bei IEC-Devices sowieso blitzschnell lädt.


    Eine komplette Emulation des sd2iec existiert im Vice m.W. nicht (was z.B. die Entwicklung meines Kernals umständlicher als nötig gemacht hat, da ich alles immer nur auf echter Hardware testen konnte).

  • In den "Peripheral Settings" habe ich den Haken bei "Use IEC device" noch nie gebrauchen können.


    Auch mit nicht gesetztem Haken dort, und sonst noch TDE aus und Virtual devices on (a.k.a. KERNAL-Traps ein) ist das VICE-VDrive nutzbar, womit man dann ein PC-Verzeichnis als Diskette mounten kann. Oder eben alternativ ein Diskimage mounten kann, wobei dann ganz allgemein der Dateizugriff (auch auch z.B. der Direktzugriff auf Sektoren!) geschwindigkeitsmäßig bei sehr guten Schnellladern anzusiedeln ist. Ebenso werden die sinnvoll einsetzbaren Erweiterungen von CMD (Verzeichniswechsel, etc.) unterstützt. Was halt nicht dabei ist, sind die in der sd2iec-Firmware nachimplementierten Schnell-Lade-Protokolle - aber die braucht man aufgrund der ohnehin bereits hohen Geschwindigkeit ohnehin nicht.


    Nochmal zu den "IEC devices" - war das nicht dafür gedacht, daß man am Parallel-Port eine CBM-Floppy anschließen und mit geeigneten Treibern allenfalls/immerhin das Standard-IEC-Protokoll, von VICE gesteuert, fahren konnte?

  • Hm, Du hast Recht. Ich habe irgendwie in Erinnerung, dass das damals so nicht ging und ich immer das IEC Device einschalten musste. Außerdem habe ich gerade festgestellt, dass man auf diese Weise ja gar keine Images mounten kann, das hatte ich auch anders in Erinnerung. Ich vermute, dass ich einfach alt und senil werde... =O

  • Wenn ich das richtig verstanden habe, ist da so einiges in den letzten Versionen in Bewegung gewesen, und die Emulation kann auf mehreren Ebenen stattfinden: True Drive emuliert alles bis zum R/W-Kopf der Floppy, IEC-Emu scheint es auch noch zu geben, was $DD00 am C64 emuliert, und dann noch die Traps, die ein paar KERNAL-Routinen "ersetzen". Müsste man mal recherchieren, was genau bei welchem Config-Setting passiert (bzw. einen Pull Request bei VICE machen, die Doku ist ja arg dünn). Die Schnittstelle zu echten per Hardware (X-Kabel etc.) angeschlossenen Laufwerken verbirgt sich jedenfalls hinter "Real IEC" (im Code), und das scheint von "IEC Device" erstmal unabhängig zu sein.

  • Hallo Leute


    Ich lese hier gerade, wie ich mir in Vice mittels den Optionen -device8 1 -iecdevice8 -fs8 D: statt einer .D64 einzubinden einfach im Dateisystem rumwuseln kann. Dann also noch die Final Cartridge eingebunden und schon kann ich tatsächlich DOS"$ auf meine Festplatte ausführen und per DOS"CD:VERZEICHNISNAME im Ordnerbaum herumsteigen.


    Nur: Kann man in diesem Modus nun auch wieder eine .D64 "mounten", um daraus BASIC-Programme zu laden? Weil, weshalb dann überhaupt die Wanderung im Dateisystem?


    Danke für eure Antwort und sorry für das Thread-Hijacking. Passt doch irgendwie schon hier rein, nicht?

  • 1570 Danke für Deine Antwort. Das mit der GUI ist mir klar. Dort kann ich auch einfach -iecdevice8 ausschalten und wiederum aus der GUI mir eine .D64 auswählen. Was ich mir hier effektiv überlegt habe war, von einem BASIC-Programm aus die Diskette zu wechseln. Denn ohne diese Möglichkeit wäre mir nach wie vor unklar, warum man überhaupt über den Befehlskanal von einem Computer aus zu einem Floppy-Gerät durch die Verzeichnisse des Hosts wandern können müsste.


    Auch hatte ich probiert, .PRG zu öffnen. Dann hätte ich den Grund gesehen, warum diese Funktion überhaupt von sd2iec in den VICE gekommen sein könnte. Du sagtest zu Recht, "wie eine Datei aussieht". Also kann man auf Dateien des Hosts zugreifen, mit LOAD konnte ich aber auch nichts anfangen. Womöglich handelt es sich hier also bloss um den Anfang einer tollen Idee, für die es effektiv kein Publikum gibt. Bis zum Moment, wo ich nun gefragt habe. Da müssten wir wohl selber an VICE Hand anlegen.


    In einem anderen Thread hier im Forum sehe ich nun, dass man ja auch HDD in VICE emulieren können soll. So könnte ich meine Multidisk-Anwendungen quasi auf eine übergrosse Gesamtdiskette legen und damit auch gleich das programmtechnische Diskettenwechseln vermeiden. Ich forsche da mal weiter, denn (Blick ausm Fenster) wettermässig bietet sich dies glaub an.

  • JamiroDrache Eben nicht. Auch ist die Syntax offenbar ein klein wenig anders. VICE hat eigenen Code. Auch habe ich selber kein sd2iec.


    Bei sd2iec ist es gemäss Doku unterschiedlich, in einen Ordner per OPEN1,8,15,"CD/SOMEDIR/":CLOSE1 zu wechseln, in ein Image per OPEN1,8,15,"CD:SOMEGAME.D64":CLOSE1. Also schräger für den Ordner, Doppelpunkt für in die .D64 . Bei VICE wechselt man per Doppelpunkt allerdings in einen Ordner und mit offenbar keiner Syntax in ein Image.


    Würde ich also per BASIC die Disk-Images wechseln wollen, wären die Implementierungen VICE zu sd2iec unterschiedlich.

  • 1570 "Man" hat bereits geschaut. Interessant scheint src/fsdevice/fsdevice-flush.c, wo die Kanalbefehle aufgedröselt werden. Ab Zeile 680 hat es sogar Kommentar drin, wie dies gemacht scheint.


    Jetzt muss ich für VICE allerdings einmal sagen, dass diese Source-Ablage das auf Sourceforge ziemlich schwierig einzuschätzen ist. Was schaue ich mir da eigentlich an? Ist dies aktuell? Wenn ich es ändern wollte, wie würde ich es committen (einchecken) ?

  • Auch hatte ich probiert, .PRG zu öffnen. Dann hätte ich den Grund gesehen, warum diese Funktion überhaupt von sd2iec in den VICE gekommen sein könnte. Du sagtest zu Recht, "wie eine Datei aussieht". Also kann man auf Dateien des Hosts zugreifen, mit LOAD konnte ich aber auch nichts anfangen.

    Aber natürlich kann man mit Vice vom Dateisystem auch Programme laden und auch starten, dass ist ja auch der Sinn des ganzen. Da hast du vielleicht noch einen Fehler bei den Einstellungen.

    Du musst die virtuellen Devices einschalten:

    True Drive Emulation ausschalten:

    Und bei Filesystem Device ein Verzeichnis wählen(optional):



  • CapFuture1975 Danke vielmals für Deine bebilderte Anleitung. Dass ich von der Kommandozeile aus operiere hat den Grund, dass ich nicht mit mehreren Konfig-Dateien arbeiten möchte. Ich habe Deine Einstellung nun also in eine neue Zeile gepackt und sie werden mir in der GUI auch angezeigt. Jedoch kann ich nach wie vor weder .D64 (geht wohl gar nicht), wie auch keine .PRG laden.


    Ich schreibe hier so nebenher und werde euch allen später mal meine Bilder reinstellen. Habe hier VICE 3.1 unter Windows genommen, auch mal von x64 auf x64sc gewechselt. Ich probiere also noch ein bisschen, bevor ich hier rückfrage.


    JamiroDrache Das mit dem ⬅ geht schon auch. Ist analog zum Wechsel in den Ordner ... Wie gesagt sind die Implementierungen offensichtlich unterschiedlich.


    Danke euch beiden für eure Einsätze mir gegenüber. Es ist natürlich bloss ein nice to have.

  • CapFuture1975 Oh je, warum startet mein Skript denn überhaupt Version 3.1, wenn es 3.6 gibt? Seufz. Okay, habe mal den Pfad korrigiert. Nur, welche Version hast Du nun denn genau? Bei mir sieht dies nämlich so aus:

    1. Mit dem Kommandozeilenparameter kann ich arbeiten, aber bei mir sehe ich nicht einmal das Register Generic.
    2. Somit fehlt mir oben der Radio Button True Drive Emulation komplett. Komisch.
    3. Du hast die Drive sound emulation eingeschaltet. Sobald ich aber im FS des Hosts herumgurke, höre ich sowieso nichts mehr. Korrekt?

    Du brauchst mir übrigens nicht sofort antworten. Ich bin nun sowieso mal zuerst am Sonntagnachmittags-Spaziergang. Oder so ähnlich.

  • Die Screenshots sind vom Vice3.5, sorry dafür, hätte lieber 3.6 nehmen sollen, aber da habe ich Dolphin-Dos fest eingestellt, daher fusche ich da ungern in den Einstellungen rum. Bei 3.6 ist das alles unter Drive zu finden, "Generic" gibt es nicht mehr, wie Du ja auf deinem Screenshot sehen kannst.


    Somit fehlt mir oben der Radio Button True Drive Emulation komplett. Komisch.

    Das ist jetzt weiter unten zu finden. Genau wie "Enable Virtual Device"

    Du hast die Drive sound emulation eingeschaltet. Sobald ich aber im FS des Hosts herumgurke, höre ich sowieso nichts mehr. Korrekt?

    Die lasse ich immer an, macht sowieso nur Geräusche, wenn True Drive Emulation wieder eingeschaltet ist.