Hallo Besucher, der Thread wurde 3,4k mal aufgerufen und enthält 11 Antworten

letzter Beitrag von syshack am

Locomotive BASIC Listings aus DSK-Image auf PC holen

  • Da ich das jetzt ein paar mal benötigte:
    Hier eine einfache Methode, um .BAS Dateien (BASIC Programme) als Text-Datei auf den PC zu holen. Dazu muss das BASIC Programm auf einer virtuellen CPC Diskette (DSK-Image) vorliegen.
    Ich habe die Beschreibungen möglichst detailliert geschrieben und die Screenshots Schritt-für-Schritt aufgenommen, damit auch Anfänger mit dieser Anleitung klarkommen.


    Man braucht dazu einen CPC Emulator, aber sonst keine Zusatztools.
    Welchen CPC Emulator man nimmt, sollte an sich egal sein. Ich habe hier WinCPC und WinAPE verwendet und die Schritte für beide Emulatoren beschrieben.



    Drucken mit virtuellen Printer in Textdatei
    Bei dieser Methode druckt man ein im BASIC Speicher vorhandenes Listing auf einem (virtuellen) Drucker aus.
    Der Ausdruck besteht aus reinem Text und kann daher in eine Text-Datei des PCs umgeleitet und gespeichert werden.


    <Enter> = Die ENTER oder RETURN Taste drücken.


    • Den CPC Emulator starten
    • Den virtuellen Drucker in eine Textdatei umleiten. Hier kann man einen bestimmten Pfad+Dateinamen auswählen oder das vorgegebene File übernehmen. Letzteres wird im Emulator-Programmverzeichnis gespeichert. Dabei ist aber zu achten, dass eine bestehende Datei nicht überschrieben wird, sondern der Ausdruck von Text innerhalb der Datei unten hinzugefügt wird.

      • WinCPC: über Menu: Emulation --> Printer Ssettings... --> Select/open printer output file... --> Textdatei für Ausdruck auswählen
      • WinAPE: über Menu: Settings --> Other --> Printer --> File --> Textdatei für Ausdruck auswählen
    • Die virtuelle Diskette, also die DSK Datei, in Laufwerk A einlegen mit CTRL+F1 oder über das Menu:

      • WinCPC: CTRL+F1 oder über Menu: File --> Insert disc --> Drive A... --> DSK Datei auswählen
      • WinAPE: CTRL+F1 oder über Menu: File --> Insert Disc Image --> Drive A: --> DSK Datei auswählen
    • Die BASIC Datei mit LOAD"MeinProg.BAS" in den Speicher laden. Gross/Kleinschreibung der Befehle und Dateinamen ist egal.
      Wenn man den Dateinamen "MeinProg.BAS" nicht kennt, kann man mit der Eingabe von CAT <Enter> das Inhaltsverzeichnis (Directory) der Diskette anzeigen (siehe Screenshot)
    • Das gewünschte BASIC Programm ist nun in den Speicher geladen und es kann mit LIST <Enter> angeschaut werden.
    • Das BASIC Programm nun mit dem Befehl LIST #8 <Enter> ausdrucken. Je nach Länge des Programms, dauert das ein paar Sekunden.
    • Den CPC Emulator beenden (das ist wichtig, damit der Ausdruck auch wirklich komplett in die Textdatei geschrieben wird).
    • Das BASIC Programm Listing ist nun in der im Schritt 2 ausgewählten Textdatei ausgedruckt.


    Screenshots WinCPC


    Screenshots WinAPE

  • Thx für die Anleitung. Habe mich daran gehalten und es funktioniert einwandfrei. :)

    Das wäre erst perfekt, wenn er auch zeigt wie man ASM-Daten von einem DSK runter bekommt. :weg:

  • Das wäre erst perfekt, wenn er auch zeigt wie man ASM-Daten von einem DSK runter bekommt.

    Assembler ist doch Dein Metier, Mr. "Man kann nie genug Z80 Bücher zuhause haben!" :bgdev


    Da der Assembler Coder reiner Text sein dürfte, müsstest du nur aus dem Compiler den Source nach gleicher Art mit der Druckfunktion des Programms ausdrucken, dann hast Du den Code auch als Textdatei auf dem PC.
    Eine Druckfunktion müsste im Assembler schon vorhanden sein. DamalsTM hat man ja auch viel die Listings auf Endlospapier ausgedruckt.

  • Ich habe leider festgestellt, dass die oben beschriebene Methode an sich funktioniert, aber lange BASIC Zeilen nur bis zu 132 Zeichen* in die Textdatei ausgedruckt werden und der Rest dann in eine neue Zeile kommt.
    * = typische max. Anzahl Zeichen bei nichtproportionaler Schrift bei einem A4 Querblatt bei einem IBM Printer


    Leider kann man das nirgends einstellen, ich habe zumindest auch nichts in den INI Dateien gefunden.


    Ich muss da wohl den anderen Weg mit einem Hilftool auch beschreiben.
    Schade, weil das Ausdrucken wie es oben beschrieben ist, universeller wäre.


  • Assembler ist doch Dein Metier, Mr. "Man kann nie genug Z80 Bücher zuhause haben!" :bgdev

    Hab ich niemals gesagt. :unschuld:


    Da der Assembler Coder reiner Text sein dürfte, müsstest du nur aus dem Compiler den Source nach gleicher Art mit der Druckfunktion des Programms ausdrucken, dann hast Du den Code auch als Textdatei auf dem PC.
    Eine Druckfunktion müsste im Assembler schon vorhanden sein. DamalsTM hat man ja auch viel die Listings auf Endlospapier ausgedruckt.

    Ich meinte keinen Sourcecode, sondern die binären Daten. Aber da werde ich mal versuchen über VB.net direkt von einem DSK File zu lesen.

  • sondern die binären Daten

    Geht es Dir darum, die binären Dateien aus dem DSK als Datei für den PC holen, um sie z.B. mit HexEditor anzuschauen?
    Kannst Du z.B. mit dem Tool "ManageDsk" oder CPCDiskXP machen.



    Aber da werde ich mal versuchen über VB.net direkt von einem DSK File zu lesen.

    Guckst du hier: https://github.com/cpcsdk/cpctools

  • Ich habe leider festgestellt, dass die oben beschriebene Methode an sich funktioniert, aber lange BASIC Zeilen nur bis zu 132 Zeichen* in die Textdatei ausgedruckt werden und der Rest dann in eine neue Zeile kommt.


    Kannst Du z.B. mit dem Tool "ManageDsk"


    Managedisk kann doch auch BASIC-Dateien detokenisiert exportieren. (Auf die britische Fahne klicken, Button "Read Disk", .DSK-File öffnen, oben .BAS-Datei auswählen, Button "Show File", Option "Listing Mode", Button "Save as")

  • Managedisk kann doch auch BASIC-Dateien detokenisiert exportieren. (Auf die britische Fahne klicken, Button "Read Disk", .DSK-File öffnen, oben .BAS-Datei auswählen, Button "Show File", Option "Listing Mode", Button "Save as")

    Ah danke für den Tipp! Das hat noch den Vorteil, dass der Müll unten nicht angezeigt wird.


    github.com/cpcsdk/cpctools/blo…14321c9f27/pydsk/pydsk.py


    Keine {} und ; kann also nur was besseres sein.

    Das Ganze ist eine Sammlung von verschiedenen Tools/Code RTFM. Das Python Script kann Daten in Sektoren schreiben ist aber kein DSK Filesystem Reader.


    Das iDSK enthält Code in CPP für die Datei-Manipulation in DSK Dateien (leider teilweise in Französisch dokumentiert im Code und manche Variablen/Methoden-Namen, aber das schaffen wir doch):


    Schau Dir mal die folgenden Methoden im ViewFile.cpp an:


    ViewDesass()
    ViewBasic()


    Oder im cpctools\tools\cpcfs\cpcfs.cpp:
    Commands::GetFile(void)
    Commands::PutFile(void)