DOPEN vs OPEN am C128 und Mega65

Es gibt 12 Antworten in diesem Thema, welches 1.098 mal aufgerufen wurde. Der letzte Beitrag (11. November 2024 um 11:40) ist von JeeK.

  • Mit Basic 7 kommt ja der Befehl DOPEN dazu.

    Provokante Frage gleich zu Beginn: gibts einen Grund, den zu nutzen, anstatt dem "alten" OPEN?

    Warum frage ich das?

    Dateinamen sind ja auf 16 Zeichen beschränkt.

    Gerade bei OPEN/DOPEN will man aber uU anfangs ein "@0:" angeben.

    Und bei DOPEN muss man auch den Dateityp als Teil des Dateinamens angeben.

    Und Basic analysiert da nicht groß, ob ein Teil des Dateinamens nur Meta-Information ist:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Ohne ,P am Ende wird die Datei übrigens als SEQ Datei angelegt.

    Also nochmal zur ursprünglichen Frage: wofür gibts DOPEN, wenns doch garnicht ordentlich nutzbar ist?

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Provokante Frage gleich zu Beginn: gibts einen Grund, den zu nutzen, anstatt dem "alten" OPEN?

    DOPEN einfacher in der Syntax, da man nicht extra noch Diskettenlaufwerksnummern angeben muss. Aber ansonsten spricht nichts dagegen, auch beim MEGA65, weiterhin OPEN zu verwenden. Da gibt es soweit ich es überblicke (zumindest beim BASIC 10) keine Unterschiede in der Behandlung der Datei.

    Man hatte halt damals "etwas mehr Komfort" und einen neuen Befehl, den man präsentieren konnte. ;)

  • Man hatte halt damals "etwas mehr Komfort" und einen neuen Befehl, den man präsentieren konnte. ;)

    Zu Ende denken hätte man es halt sollen.
    Nicht die vollen 16 Zeichen nutzen zu können, macht den Befehl kaputt

    Zumindest am c128 ist das so. Am mega ist die Welt vielleicht noch zu retten :biggrin:

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Ach wie schön, am Mega65 wurde die Welt schon gerettet :biggrin:

    Bitte melde dich an, um diesen Anhang zu sehen.

    Wenn man mehr als 16 Zeichen eingibt, dann wird zwar der Dateiname auf 16 Zeichen reduziert, aber die Datei wird dann mehrere Male geschrieben.

    Zumindest im Emulator

    Bitte melde dich an, um diesen Anhang zu sehen.

    Gibt man bei DOPEN nur genau 16 Zeichen an, wird keine zusätzliche Datei angelegt.

    Dürfte also doch noch einen kleinen Bug geben.

    Weiß jemand, wo ich das melden kann?

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Nicht die vollen 16 Zeichen nutzen zu können, macht den Befehl kaputt

    Das war auch das erste, was mir am Argumentparser für all die Diskettenbefehle aufgefallen ist.

    Es geht schon irgendwie ... da müsste künstliche kurze Zwischennamen verwenden und dann per Rename die Dateien auf den gewünschten Namen umbennen. Also unpraktischer geht es nicht.
    Richtig problematisch wird es bei COPY oder CONCAT, wo die Quellangabe aus eine Liste von Dateien bestehen kann.

    Bei DOPEN nicht so, da DOPEN eigentlich mit 16 Zeichen auskommt, indem der Parser

    1. mit ",D0" oder ",D1" die Drive-Angabe separat zulässt

    2. ein führendes "@" nicht zu den 16 Zeichen zählt.

    Also DOPENBitte melde dich an, um diesen Link zu sehen.,"@SECHZEHN-ZEICHEN",D1

    Wird von DOPEN (bzw. dem Parameterparser) zu "@1:SECHZEN-ZEICHEN".

    Wenn man den D-Parameter weglässt, wird implizit D0 verwendet. Das führt immer zur Angabe von "0:" vor jedem Filenamen bei allen Diskbefehlen.

    Also DOPENBitte melde dich an, um diesen Link zu sehen.,"@SECHZEHN-ZEICHEN" ergibt dann "@0:SECHSZEHN-ZEICHEN".

  • Gibts auch eine Möglichkeit, das ,P außerhalb des Dateinamens anzugeben?

    Ansonsten werden ja immer SEQ Files erstellt, zumindest bei meinen Versuchen

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • Gibts auch eine Möglichkeit, das ,P außerhalb des Dateinamens anzugeben?

    Ansonsten werden ja immer SEQ Files erstellt, zumindest bei meinen Versuchen

    Zitat aus dem 8050 Benutzerhandbuch:

    Zitat

    Mit diesem Befehl lassen sich nur SEQ-Dateien zum Schreiben öffnen. Wegen PRG oder USR Dateien lesen Sie bitte bei OPEN nach.

    Quelle: CBM 8050 Bedienungshandbuch, S.59

    C64C mit 8580, C64 mit 6581 und C64G mit ARMSID,

    C16, VC20, PET3016+32K, 3x1541, 2x1541-II, Pi1541, Philips CM8833-II, 1084S

    Bitte melde dich an, um diesen Link zu sehen.

  • Gibts auch eine Möglichkeit, das ,P außerhalb des Dateinamens anzugeben?

    Ansonsten werden ja immer SEQ Files erstellt, zumindest bei meinen Versuchen

    Zitat aus dem 8050 Benutzerhandbuch:

    Zitat

    Mit diesem Befehl lassen sich nur SEQ-Dateien zum Schreiben öffnen. Wegen PRG oder USR Dateien lesen Sie bitte bei OPEN nach.

    Quelle: CBM 8050 Bedienungshandbuch, S.59

    Interessant. Ich dachte, DOPEN ist erst mit Basic 7 dazugekommen.

    Zumindest hatte ich das dem C64-Wiki Artikel so entnommen:

    Bitte melde dich an, um diesen Link zu sehen.

    Aber wie ich wissen sollte, zählt nicht nur die Basic Version, sondern auch, auf welchem Gerät diese Basic-Version eingesetzt wird.

    Zur Untermauerung deiner Aussage hier der Screenshot aus dem englischen Handbuch.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Aber davon unabhängig: am C128 und am Mega65 kann man direkt an den Dateinamen als Teil des Strings ein ,P anhängen.

    Dann wird eine PRG Datei erzeugt, wie in dem Mega65 Screenshot zu erkennen ist.

    Und entgegen dem @ scheint ,P nicht von der Länge des Dateinamens abgezogen zu werden.

    YouTube Kanäle über Basic, den C128 und den VDC-Chip
    Bitte melde dich an, um diesen Link zu sehen. --- Bitte melde dich an, um diesen Link zu sehen.
    Commodore 8-Bit Projekte
    auf Bitte melde dich an, um diesen Link zu sehen.
    Bitte melde dich an, um diesen Link zu sehen. zu Commodore 8-bit Hardware
    auf printables.com
  • 8R0TK4$T3N 10. November 2024 um 14:31

    Hat den Titel des Themas von „DOPEN vs OPEN“ zu „DOPEN vs OPEN am C128 und Mega65“ geändert.
  • Auch wenn es nicht im Handbuch steht: Es geht mit BASIC 4.0 auch auf dem 8032 und der 8050 (mit VICE emuliert), dass man mit ,P im Dateinamen eine PRG-Datei anlegen kann.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

  • Auch wenn es nicht im Handbuch steht: Es geht mit BASIC 4.0 auch auf dem 8032 und der 8050 (mit VICE emuliert), dass man mit ,P im Dateinamen eine PRG-Datei anlegen kann.

    Ich kanns gerne auch noch mal am 3016 PET mit BASIC 4.0 und 8050 testen, aber da wird es bestimmt genauso sein. Ich vermute, dass DOPEN intern auch einfach zu OPEN weiterspringt...

    C64C mit 8580, C64 mit 6581 und C64G mit ARMSID,

    C16, VC20, PET3016+32K, 3x1541, 2x1541-II, Pi1541, Philips CM8833-II, 1084S

    Bitte melde dich an, um diesen Link zu sehen.

  • Auch wenn es nicht im Handbuch steht: Es geht mit BASIC 4.0 auch auf dem 8032 und der 8050 (mit VICE emuliert), dass man mit ,P im Dateinamen eine PRG-Datei anlegen kann.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Bitte melde dich an, um diesen Anhang zu sehen.

    Ja natürlich. Das Handbuch ist meistens nur eine unvollständige Beschreibung der Implementierung.

    Der Argumentparser bei den Diskettenbefehlen bastelt eine String zusammen, der dann an den OPEN Kernal-Call weitergereich wird. Was in den 16-Zeichen drinnen steht, wird nicht weiter beachtet (solange es die Länge nicht überschreitet), aber dann von OPEN interpretiert. Für ",P" (oder einen anderen Typ - also dann nur noch ",U") ist leider keine separate Option vorgesehen (abgesehen für relative Dateien, die mit ",L<recoredlength>" angesprochen bzw. erzeugt werden können). Aber man braucht den Typ auch nur genau beim Anlegen der Datei. Der Name einer Datei ist exklusiv und eindeutig, d.h. es kann keine gleichnamige PRG- *und* SEQ-Datei geben (mit DOS-Mitteln - mit bösen Dir.-Editor-Mitteln irgendwie schon). Eine bestehende Datei ist dann beim Öffnen mit DOPEN entsprechend vom Typ, wie die Datei angelegt wurde und braucht die Typ-Angabe nicht mehr als Argument.

    D.h. beim Anlegen einer Datei mit DOPEN für SEQ und USR wäre man auf 14 Zeichen beschränkt (oder macht dann nachträglich ein Rename).
    Oder nur beim Erstellen verwendet man OPEN, für die sonstigen Zugriffe sollte dann DOPEN reichen. ;)

  • Ich kanns gerne auch noch mal am 3016 PET mit BASIC 4.0 und 8050 testen, aber da wird es bestimmt genauso sein. Ich vermute, dass DOPEN intern auch einfach zu OPEN weiterspringt...

    Oder man schaut sich den Argument-Parser in der BASIC 7.0 (ist ziemlich gleich dem von BASIC 3.5) und ich nehme an, ohne es jetzt überprüft zu haben, dass der seine Ursprünge schon im BASIC 4.0 hat und dort ziemlich ähnlich, wenn nicht sogar identisch implementiert sein dürfte.

    Siehe Bitte melde dich an, um diesen Link zu sehen.