Locomotive BASIC Listings aus DSK-Image auf PC holen

  • 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.

    1. Den CPC Emulator starten
    2. 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
    3. 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
    4. 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)
    5. Das gewünschte BASIC Programm ist nun in den Speicher geladen und es kann mit LIST <Enter> angeschaut werden.
    6. Das BASIC Programm nun mit dem Befehl LIST #8 <Enter> ausdrucken. Je nach Länge des Programms, dauert das ein paar Sekunden.
    7. Den CPC Emulator beenden (das ist wichtig, damit der Ausdruck auch wirklich komplett in die Textdatei geschrieben wird).
    8. Das BASIC Programm Listing ist nun in der im Schritt 2 ausgewählten Textdatei ausgedruckt.


    Screenshots WinCPC


    Screenshots WinAPE
    ___________________________________________________________
    Meine Kreationen: Deviant Art | Toonsup | Flickr | Youtube
    | Twitter
    Avatar: «Psycno Mouse». Copyright 1992 by Saiki

    When in doubt, einfach mal wat Ryk sez.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von syshack ()

  • RKSoft schrieb:

    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:
    :amiga: CPC 464/6128 464/6128+ GX4000, Atari 2600 600XL 800XL/XE Portfolio, C64/II/G/R/SX VC20 TC64, AX81, ZX Spectrum 48k, Amiga 500/600/2000 A2630 A2088 :amiga:
    :syshack: Meine 3D-Drucker Teile auf thingiverse.com/oobdoo/designs :strom:
    Mit wäre das nicht passiert! :prof:
  • oobdoo schrieb:

    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.
    ___________________________________________________________
    Meine Kreationen: Deviant Art | Toonsup | Flickr | Youtube
    | Twitter
    Avatar: «Psycno Mouse». Copyright 1992 by Saiki

    When in doubt, einfach mal wat Ryk sez.
  • 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.
    ___________________________________________________________
    Meine Kreationen: Deviant Art | Toonsup | Flickr | Youtube
    | Twitter
    Avatar: «Psycno Mouse». Copyright 1992 by Saiki

    When in doubt, einfach mal wat Ryk sez.
  • syshack schrieb:


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

    syshack schrieb:

    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.
    :amiga: CPC 464/6128 464/6128+ GX4000, Atari 2600 600XL 800XL/XE Portfolio, C64/II/G/R/SX VC20 TC64, AX81, ZX Spectrum 48k, Amiga 500/600/2000 A2630 A2088 :amiga:
    :syshack: Meine 3D-Drucker Teile auf thingiverse.com/oobdoo/designs :strom:
    Mit wäre das nicht passiert! :prof:
  • oobdoo schrieb:

    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.


    oobdoo schrieb:

    Aber da werde ich mal versuchen über VB.net direkt von einem DSK File zu lesen.
    Guckst du hier: github.com/cpcsdk/cpctools
    ___________________________________________________________
    Meine Kreationen: Deviant Art | Toonsup | Flickr | Youtube
    | Twitter
    Avatar: «Psycno Mouse». Copyright 1992 by Saiki

    When in doubt, einfach mal wat Ryk sez.
  • Kenn ich schon. Das ist in Python geschrieben, was die Sache nicht leichter macht. ||
    :amiga: CPC 464/6128 464/6128+ GX4000, Atari 2600 600XL 800XL/XE Portfolio, C64/II/G/R/SX VC20 TC64, AX81, ZX Spectrum 48k, Amiga 500/600/2000 A2630 A2088 :amiga:
    :syshack: Meine 3D-Drucker Teile auf thingiverse.com/oobdoo/designs :strom:
    Mit wäre das nicht passiert! :prof:
  • Mac Bacon schrieb:

    oobdoo schrieb:

    Kenn ich schon. Das ist in Python geschrieben, was die Sache nicht leichter macht. ||
    Python? Ich seh da nur C++.
    github.com/cpcsdk/cpctools/blo…14321c9f27/pydsk/pydsk.py

    Keine {} und ; kann also nur was besseres sein. :D
    :amiga: CPC 464/6128 464/6128+ GX4000, Atari 2600 600XL 800XL/XE Portfolio, C64/II/G/R/SX VC20 TC64, AX81, ZX Spectrum 48k, Amiga 500/600/2000 A2630 A2088 :amiga:
    :syshack: Meine 3D-Drucker Teile auf thingiverse.com/oobdoo/designs :strom:
    Mit wäre das nicht passiert! :prof:
  • syshack schrieb:

    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.

    syshack schrieb:

    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")
  • ogd schrieb:

    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.

    oobdoo schrieb:

    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)
    ___________________________________________________________
    Meine Kreationen: Deviant Art | Toonsup | Flickr | Youtube
    | Twitter
    Avatar: «Psycno Mouse». Copyright 1992 by Saiki

    When in doubt, einfach mal wat Ryk sez.