Hello, Guest the thread was viewed6k times and contains 59 replies

last post from Mike at the

Kann man mit VICE ein BASIC Listing als TXT-Datei exportieren?

  • Ansonsten z.B. über Endurions C64 Studio das prg importieren und dann dort aus dem Editor rauskopieren

    Ich würde gerne darauf verzichten, zusätzliche Programme zu installieren.

    Die in Post#4 vorgeschlagene Lösung scheint mir recht sinnvoll zu sein. Leider klappt das im Detail noch nicht so richtig bei mir (siehe Post #19).

  • aouina: Vielen Dank. Mit Deinen Einstellungen funktioniert es wunderbar. :thumbsup:

    Es wird eine Textdatei im Homeverzeichnis erzeugt, die den Basic Code enthält.


    Ich habe da nur noch ein kleines Problemchen:

    Wenn ich die Befehle eingegeben habe, dann erscheint kein Basic-Prompt mehr. Also kein READY.

    Was mache ich da falsch?



    Übrigens: Du brauchst doch nicht Sie zu sagen. Wir duzen uns doch alle hier. ^^

  • Du solltest anstelle von "CLOSE1" tatsächlich "PRINT#1:CLOSE1" eingeben. Nach der dauerhaften Ausgabeumlenkung durch CMD holt PRINT# die Ausgabe auf den Bildschirm zurück (nachdem es vorher noch eine Leerzeile zur Datei/zum Drucker gesendet hat). Steht auch so im Handbuch. ;)


    Im übrigen klappt diese Umlenkung auch ohne den Gebrauch des Printer-Devices: dazu mußt Du lediglich - mit Virtual Devices ein und True Drive Emulation aus - ein Verzeichnis als Laufwerk mounten. Dann kannst Du mit OPEN2,8,2,"name.txt,S,W":CMD2:LST und PRINT#2:CLOSE2 direkt in "name.txt" speichern. Allerdings solltest Du auch noch "Write P00" abwählen, sonst kriegst Du eine "*.S00" Datei mit Header, den Du nicht brauchen kannst. Das P00 Zeugs ist IMO ein Überbleibsel aus DOS-Zeiten, als noch keine langen Dateinamen zur Verfügung standen. Das macht heutzutage mehr Ärger als es was bringt.

  • Schonmal in Petcat nachgesehen, wieviele BASIC-Varianten es gibt? Und es gibt noch dutzende weitere Varianten, die Petcat erst gar nicht unterstützt. Woher soll der Emulator wissen, welche Basic-Variante gerade aktiv ist? Klar kann man einfach von Basic V2 ausgehen

    Im Emulator hätte man dafür sogar Möglichkeiten, die ein separates Programm wie petcat nicht hat: Textausgabe umleiten, "list" aufrufen (und anschließend den gesamten Zustand wieder herstellen). Damit bekommt man genau das, was das gerade laufende BASIC für richtig hält.

  • Enter "print#1:close1"

    or

    Click Run/Stop Restore

    Okay. I tried print#1:close1.

    And yes, that works great! Thank you very much for your help. :thumbsup::thumbsup::thumbsup:

    Now I'm able to write my basic programs to a text file using just VICE and don't need any other programs.

    I've been looking for a way to do this for ages. (And yes: I can use Google Translator, too. He he he. :D)

  • (und anschließend den gesamten Zustand wieder rückabwickeln)

    Yep. Dazu muß man aber die Eingabe umlenken und dabei den CLALL-Vektor auf ein RTS umbiegen, damit der Dateideskriptor nicht nach Eingabe der ersten Programmzeile flöten geht. Also:


    Ausgabe in eine Datei: OPEN2,8,2,"name.txt,S,W":CMD2:LIST gefolgt von PRINT#2:CLOSE2

    Eingabe von einer Datei: POKE812,46:OPEN2,8,2,"name.txt,S,R":POKE781,2:SYS65478 gefolgt von POKE812,47:CLOSE2


    Es ist hier beim Einlesen ganz günstig, wenn am Ende der Datei noch das "READY." steht - durch die damit einhergehende Fehlermeldung wird nämlich die Eingabe wieder auf die Tastatur zurückgegeben. Alternativ tut's auch ein SYS 65484 ohne Zeilennummer in der letzten Zeile der Datei.

  • Ich fasse hier noch mal kurz zusammen, wie man mit VICE ein BASIC-Programm in eine Textdatei exportiert. Ohne fremde Hilfsmittel.

    Vielen Dank an aouina für die Tipps und Hinweise.


    1.) In VICE wählt man in der Menüleiste "Settings => Settings...".

    2.) Dann wählt man auf der linken Seite "Periphal Devices => Printer Settings".

    3.) In dem Fenster nimmt man folgende Einstellungen vor:


    Anmerkung: Bevor man "Close" anklickt, sollte man "Save settings on exit" wählen. Dann braucht man die Punkte 1-3 nicht jedesmal abzuarbeiten.


    4.) Im virtuellen C64 lädt man ein BASIC-Programm und gibt dann ein:

    open1,4,7:print#1:cmd1:list

    5.) Nun wartet man bis der blinkende Cursor wieder erscheint.

    6.) Dann gibt man ein:

    print#1:close1

    7.) Der C64 bestätigt das mit READY.


    Bei Linux hat man dann im Homeverzeichnis eine Textdatei namens "print.txt", die den BASIC-Code enthält.

    Bei Windows weiß man nicht. Wahrscheinlich bekommt man da einen Bluescreen-Fehler oder der PC fährt herunter und läßt sich danach nicht mehr einschalten. :D


    Anmerkung1: Jedesmal wenn man die o.g. OPEN- und PRINT-Kommandos eingibt, wird die "print.txt"-Datei um den neuen Inhalt erweitert. Das heißt der neue Inhalt wird hinten angehängt. Wenn man also eine komplett neue Datei erhalten möchte, die nur das aktuelle Basic-Listing enthält, dann muss man die Datei vorher aus dem Home-Verzeichnis löschen.

    Anmerkung2: Ich habe das sowohl mit dem normalen V2 BASIC als auch mit TSB/Simons' Basic getestet. Funktioniert einwandfrei.

  • (Unfug gelöscht)

  • Im Emulator hätte man dafür sogar Möglichkeiten, die ein separates Programm wie petcat nicht hat: Textausgabe umleiten, "list" aufrufen (und anschließend den gesamten Zustand wieder herstellen). Damit bekommt man genau das, was das gerade laufende BASIC für richtig hält.

    Klar geht das irgendwie alles. Braucht halt nur, hm, vielleicht 200 Zeilen zusätzlichen schlecht wartbaren Code und ein paar Tage Entwicklerzeit. Wofür? Um einer handvoll Leuten ein paar Klicks zu sparen.

  • Klappt sehr gut. Genau was ich brauchte.

    Danke

  • Du hast das Snap installiert. Das ist so eine Art "App", die alle unter /snap/ installiert werden. Ich empfehle einfach den vice per "sudo apt install vice" zu installieren. Dann kriegst du alle Emulatoren. Du musst noch die ROMs runterladen und unter ~/.local/share/vice/ ablegen. Die ROMs sind ja nicht frei, und können daher nicht mit ausgeliefert werden.