Hello, Guest the thread was called2.8k times and contains 43 replays

last post from strik at the

Vice auf Mac: kann man damit Floppy simulieren?

  • Habe jetzt zum ersten Mal VICE auf dem MacBook in Betrieb genommen. Absolut cooles Programm.


    Jetzt meine Frage: Kann ich ohne weiteres ein BASIC Programm darauf entwickeln, das auf eine Art virtuelle Floppy zugreift (mit den ganzen Regeln der Filespeicherung der normalen Commodore Floppy)? Oder brauche ich dafür zusätzliche Hardware, die die Floppy simuliert; eine SD-Karte oder so? Bin in dem Thema ein absoluter Anfänger.


    jomodore

  • Vice unterstützt (natürlich) Disketten-Images diverser Formate, die über die gewünschte emulierte Floppy bedient werden (Stichwort "True Drive Emulation"). Ausserdem kann Vice (bei ausgeschalteter True Drive Emulation) den Floppy-Typ ignorieren und Commodore-Dateien direkt via Host-Dateisystem laden und speichern (ich nix Mac, aber ich gehe mal davon aus dass das da nicht anders ist als z.B. unter Windows).

  • Ich könnte also ein Programm vom C64 auf SD2IEC abspeichern, hier am Mac-PC einlesen und veändern und dann wieder auf den C64 transferieren und dort weiter bearbeiten und auch starten?


    Ich erinnere mich, dass ich vor ca. 6-7 Jahren mit einer blauen SD-Platine von INDIVIDUAL Computers (glaube ich) so was ähnliches machen konnte. Aber ich brauchte damals eine echte Floppy-Drive, wenn ich mich recht erinnere. Das war recht kompliziert - so aus der fernen Erinnerung. Ist aber schon lange her. Müsste mich da mal wieder reinwursteln. Aber man hat einfach zu viel am Hals, das alles wieder einzuüben. Der VICE ist auf Englisch. Und das macht es recht schwierig. Das Einrichten eines Joysticks im VICE gelingt mir nicht. Habe einiges versucht. Aber irgendwie klappt es nicht mit all diesen Keypads usw. Kapiere vieles nicht.


    Aber hat sich denn da was vereinfacht nach sovielen Jahren (wie oben im ersten Satz gefragt)?




    jomodore

  • Ich könnte also ein Programm vom C64 auf SD2IEC abspeichern, hier am Mac-PC einlesen und veändern und dann wieder auf den C64 transferieren und dort weiter bearbeiten und auch starten?

    Kurz: Ja. Du kannst mit VICE direkt auf Dateien aus Verzeichnissen (z.B. von SD-Karte) zugreifen. Und cool ist auch, dass du in VICE per Copy&Paste (z.B. aus einem Webbrowser) Code eingeben kannst. Wenn du also Beispiel-Code im Wiki siehst, dann kopierst du ihn und fügst ihn in VICE wieder ein: Wie von Zauberhand wird er dann getippt.


    Das Einrichten eines Joysticks im VICE gelingt mir nicht.

    Meinst du einen echten Joystick oder eine Simulation per (z.B.) Cursor-Tasten? Ich habe bei mir folgendes eingestellt und damit wahlweise Controlport 1 oder 2 (umschaltbar im Betrieb über cmd/j und abschaltbar über cmd/k) auf Cursortasten (und [Feuer] auf [alt]).


  • Habe inzwischen weiter experimentiert: kann PRGs von SD-Karte in VICE (auf dem MacBook) laden und auch wieder auf SD abspeichern und dann am C64 benutzen. Das ist sehr praktisch.


    Ich schaffe es allerdings nicht, in VICE per PRINT# Daten in eine seqentielle Datei zu schreiben oder per INPUT# zu lesen. Kann nicht rauskriegen, woran ich da scheitere.


    Gibt es da eine Sonderregelung im Vergleich zum echten C64 mit Floppy? Vielleicht eine andere Befehlsfolge?


    jomodore

  • Ich verstehe leider nicht, was Du mit "Druckausgabe" meinst. Ich möchte ja Werte (Variablen) in eine Seq. Datei schreiben und später wieder einlesen. Drucken will ich nicht. Meinst Du diesen CMD4 Befehl?


    jomodore

    Sorry, mein Fehler. Hatte es so verstanden, dass Du per PRINT #1 an den (virtuellen) Drucker senden wolltest.


    <Edit>Hier ein Beispiel, wie man in BASIC mit PRINT# in ein File schreibt und mit INPUT# den Wert wieder rausliest.
    Hab's soeben mit VICE getestet und mit DirMaster überprüft: In dem im VICE angehängten Diskette (D64 Datei, ich habe eine neue, leere mit VICE erstellt)
    wir die Datei auch tatsächlich erstellt.


  • Ich befolge haargenau die Anweisungen aus dem Buch "Fortgeschrittenes Programmieren auf dem VC-20 und dem Commodore 64" von Haller-Verlag 1984. Leider ohne Erfolg. Ein String wird in eine Tabelle eingelesen und dann wieder ausgelesen (von SD-Karte):


    OPEN 1,8,15,"WERTETABELLE,S,W"
    PRINT#1,A$
    CLOSE 1
    OPEN1,8,15,"WERTETABELLE,S,R"
    INPUT#1,F$
    CLOSE1
    PRINTF$
    END


    Das scheint der VICE nicht verarbeiten zu können. Oder es gibt eventuell eine Einstellung im Menu, die man vornehmen muss, die dem VICE eine Floppy vorgaukelt.


    Das meinte ich weiter oben. Vielleicht ist da doch ein Unterschied in der Emulation.


    jomodore

  • Ich weiss nicht, wie das ist mit dem SD2IEC, aber im VICE ist das so, dass du eine "Diskette" einlegen musst, also eine D64 Datei anhängen ("attach") musst.
    Dazu wählst Du über das Menu Deine bereits bestehende D64 Datei oder Du erstellst in der gleichen Datei-DialogBox eine neue D64-Datei.
    Anschliessend habe ich mein Programm weiter oben erfolgreich getestet.




    Attach einer D64 Datei:

    Bestehende Datei "Test.D64" auswählen:



    Neue, leere Datei "Test-NEU.D64" erstellen und auswählen:

  • Bevor ich Dein letztes Posting genauer analysiere, hier eine gerade eben gewonnen Erkenntnis: mein BASIC Programm (siehe) oben funktioniert auch nicht auf meinem C64 mit SD2IEC. Das heißt, die Befehlsfolge scheint falsch zu sein. Das Buch hat doch hoffentlich keinen Fehler in der Hinsicht. Dann habe ich natürlich keine Chance.


    Melde mich gleich wieder.


    jomodore

  • Habe den Fehler gefunden: Die Sekundäradresse 15 darf nicht für das Schreiben und Lesen verwendet werden, sondern nur für Status-Auslesen und Kommandos senden (z.B. löschen der Datei).
    Ausserdem musst du die Variable A$ mit etwas füttern, damit auch was in die Datei geschrieben wird.


    Brainfuck Source Code
    1. 10 open 1,8,2,"wertetabelle,s,w"
    2. 15 a$="testdaten"
    3. 20 print#1,a$
    4. 30 close 1
    5. 40 open1,8,2,"wertetabelle,s,r"
    6. 45 f$=""
    7. 50 input#1,f$
    8. 60 close1
    9. 70 printf$
    10. 80 end


    Besser ist es, die Datei vorher zu löschen, weil die Überschreibfunktion kaputt ist:

  • Bin ziemlich außer Atem, weil ich Dein Programm mit einem winzigen Fehler eingetippt hatte. Es funktionierte einfach nicht. Bis ich den Fehler gefunden hatte, dauerte es 10 qualvolle Minuten. So was Blödes: Tippfehler


    Habe jetzt das unterste Programm von Dir benutzt. Das klappt tadellos. Mir sind ein paar kleine Details unklar (z.B. warum F$ vorher mit "" füllen?), aber das spielt jetzt keine Rolle. Hauptsache es läuft.


    Aber Dein Satz: "weil die Überschreibfunktion kaputt ist", kann ich nicht deuten. Was meinst Du mit "kaputt". Etwa ein Bug im BASIC des C64? Oder im VICE? Oder ist das nur bei Dir am Gerät so?


    Jetzt kann ich wenigstens in BASIC auf dem C64 eine Datei auf die SD-Karte schreiben. Im VICE schaffe ich es noch nicht. Aber das muss ich mir genauer ansehen. Mit den d64 Images kenne ich mich nicht aus. Muss das erst mal begreifen.


    Auf jeden Fall schon mal vielen Dank für Deine Unterstützung. Mein Ziel ist es, ohne den Cevi im kalten Keller immer benutzen zu müssen, ein BASIC-Programm weiter zu entwickeln auf dem Mac (im warmen Zimmer). Und am Ende dann das PRG auf den C64 wieder übertragen.


    jomodore

  • Bin ziemlich außer Atem, weil ich Dein Programm mit einem winzigen Fehler eingetippt hatte. Es funktionierte einfach nicht. Bis ich den Fehler gefunden hatte, dauerte es 10 qualvolle Minuten. So was Blödes: Tippfehler

    Lösung: Copy/Paste aus dem Edit-Menü nehmen. Es gibt keinen nachvollziehbaren Grund zum Abtippen.

    Mir sind ein paar kleine Details unklar (z.B. warum F$ vorher mit "" füllen?)

    Weil INPUT, wenn die tatsächliche Eingabe ein Leerstring ist, die angegebene Variable gar nicht verändert und dann der vorige Wert darin verbleibt. In diesem Minibeispiel ist es in der Tat überflüssig, weil F$ vorher gar nicht vorkam.

    Aber Dein Satz: "weil die Überschreibfunktion kaputt ist", kann ich nicht deuten. Was meinst Du mit "kaputt". Etwa ein Bug im BASIC des C64?

    Nein, ein Bug im Laufwerks-DOS. Die Funktionalität heißt "Save-with-Replace" und kann Dateien zerstören, also bitte nicht benutzen.

    Oder im VICE?

    Geh mal davon aus, keinen (!) Unterschied zwischen VICE und echter Hardware mehr feststellen zu können. Es gibt zwar noch welche, aber um die zu finden, muss man schon etwas tiefer in der Materie stecken.

  • Der Mac hat ja das Meiste schon beantwortet.
    Wie schon gesagt, markierst Du den Code hier und fügst den im VICE im C64 ein. Kein Tippen nötig.


    Mit den d64 Images kenne ich mich nicht aus. Muss das erst mal begreifen.

    Dir ist wohl bekannt, dass eine 5.25" Diskette beim C64 170 KByte speichern kann.
    Wenn man diese Disketten in einen Emulator verwenden möchte, braucht man dazu eine "virtuelle Diskette", also eine Dateistruktur, welche den Inhalt der echten Diskette abbildet. Das nennt man eben Image (Abbild).
    Es ist gut, sich die Englischen Begriffe zu merken, weil damit oft klarer ist was gemeint ist und man auch so gezielter im Internet und auch im C64 Wiki suchen kann.


    Dieses Image muss in einem standardisierten Format definiert sein, das von verschiedenen Emulatoren und Tools auf Windows/Mac/Linux verarbeitet werden kann. DirMaster auf Windows ist z.B. so ein Tool.
    Auf dem C64 ist das häufigste Format das D64, siehe auch hier.


    Im Emulator, hier VICE, legst Du Deine "virtuelle Diskette", also das D64 Image davon ein, in dem Du dieses im virtuellen Laufwerk 8 (oder 9...11) anhängen (attach) tuest. Siehe Bilder weiter oben.
    Du entnimmst diese "Diskette" in dem Du wieder in VICE "Detach Disk Image" Laufwerk 8 im Menu auswählst.



    Das Schreiben innerhalb dieser D64 Images passiert im Emulator wie am echten C64 mit dem Diskettenlaufwerk: Dein Testprogramm würde auf der echten Diskette eine SEQ Datei mit dem Namen "WERTETABELLE" schreiben.
    Der Emulator schreibt genauso eine Datei, aber innerhalb der D64 Datei. Stell Dir das als eine Art "ZIP"-Datei vor, wo man Dateien drin abspeichern kann. Das ist jetzt stark vereinfacht, aber zum Verständnis sollte das genügen.


    Diese D64 Images kannst Du ja auch auf dem SD2IEC verwenden. Es gibt auch Tools, mit denen man diese Dateien auf echten Disketten zurückschreiben kann.
    Ebenso kann man aus echten Disketten ein D64 Image erstellen, sofern diese nicht kopiergeschützt sind.
    Für beides braucht man aber extra Hardware, das aber hier nur als Bemerkung.

  • Vielen Dank Euch beiden für die ausführlichen Einblicke in diese Emulationstechnik beim C64.


    Jetzt sehe ich doch wieder Licht am Ende des Tunnels. Obwohl mein Englisch ganz passabel ist, sind die Menubegriffe doch nicht so einfach konsumierbar. Man muss den Vorgang technisch durchschauen. Alles andere führt in den Wahnsinn. Dem war ich in den letzten beiden Tagen schon mehrmals nahe - wie schon so oft in diesem Hobby. Aber es ist für einen Nicht-IT-ler dennoch immer wieder spannend, wie Computertechnik im Detail abläuft. Und am Cevi kann man - pars pro toto - vieles erlernen.


    Ich werde mein Glück mit Euren Tipps versuchen. Und falls ich mal wieder hänge, weiß ich ja, wo ich einen Schub nach vorne kriegen kann. Hier. :search:


    Schönes Wochenende -


    jomodore


    PS: Der verlinkte WIKI-Artikel über OPEN war sehr hilfreich. Gut geschrieben.

  • Sorry, mein Fehler. Hatte es so verstanden, dass Du per PRINT #1 an den (virtuellen) Drucker senden wolltest.
    <Edit>Hier ein Beispiel, wie man in BASIC mit PRINT# in ein File schreibt und mit INPUT# den Wert wieder rausliest.
    Hab's soeben mit VICE getestet und mit DirMaster überprüft: In dem im VICE angehängten Diskette (D64 Datei, ich habe eine neue, leere mit VICE erstellt)
    wir die Datei auch tatsächlich erstellt.



    Danke für die Ergänzung. Jetzt erst gesehehn.


    jomodore

  • Habe jetzt 2 Stunden lang versucht, ein Sequentielles Datenfile mit VICE (Mac) zu schreiben und zu lesen. Das funktioniert nur mit einer einzigen Variablen. Sobald ich mehr Variablen (3 Zahlen und ein Wort), also 4, nutze, kommt dauernd eine Error-Meldung, dass in der INPUT# Zeile ein Fehler sei. Aber außer :


    INPUT#2, A, B, C, D$ steht da nichts.


    Die Kanalnummer ist richtig, Kanal wurde zuvor mit OPEN 2,8,2,"Datenfile,S,R" geöffnet.


    Wie gesagt: es geht nur mit einer einzigen Variablen.


    Stehe auf dem Schlauch.


    jomodore