Autor Thema: Disk-Label löschen  (Gelesen 4793 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Count

  • Benutzer
  • Beiträge: 238
Disk-Label löschen
« am: Mi 10.07.2024, 16:24:07 »
Hallo zusammen,

gibt es wirklich keine Möglichkeit, unter TOS mit GEMDOS-Funktionen den Diskettennamen zu löschen? Ändern geht ja (ab TOS 1.04) einfach mit Fcreate(name, FA_LABEL) und Fclose(). Ein Löschversuch mit Fdelete(name) liefert aber EFILNF (-33).

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.297

Offline Count

  • Benutzer
  • Beiträge: 238
Re: Disk-Label löschen
« Antwort #2 am: Do 11.07.2024, 11:43:39 »
Also geht es erst mit TOS-Versionen höher als 2.06?

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.297
Re: Disk-Label löschen
« Antwort #3 am: Do 11.07.2024, 15:05:04 »
Nein, alte TOS-Versionen verhalten sich nur anders.

Ohne es jetzt direkt testen zu können, aber folgendes sollte unabhängig vom TOS funktionieren:
(unter der Annahme, das C:\ das aktuelle Verzeichnis ist wenn das Label von C gelöscht werden soll,
ansonsten müssen die Pfadnamen entsprechend zusammengebastelt werden)

DTA dta;
DTA *olddta;
int ret;

olddta = Fgetdta();
Fsetdta(&dta);
ret = 0;
if (Fsfirst("C:\*.*", FA_VOLUME) == 0)
{
    /* altes Label löschen. Alte TOS-Versionen veweigern dies mit -33 */
    ret = Fdelete(dta.d_fname);
    if (ret == -33)
    {
        /* normale Datei mit gleichem Namen anlegen */
        ret = (int)Fcreate(dta.d_fname, 0);
        if (ret > 0)
        {
            Fclose(ret);
            ret = Fdelete(dta.d_fname);
        }
    }
}

Fsetdta(olddta);
return ret;


Danach kann dann ein neues Label angelegt werden, wenn gewünscht.

Offline Count

  • Benutzer
  • Beiträge: 238
Re: Disk-Label löschen
« Antwort #4 am: Fr 12.07.2024, 10:49:20 »
Nein, mit deinem Codeschnipsel funktioniert es leider auch nicht (echte Hardware mit TOS 2.06). Es scheint wirklich so zu sein, dass Dateien mit dem Attribut 0x08 nicht gelöscht werden können. Stattdessen kann man aber eine normale Datei mit dem selben Namen wie das Label anlegen. Diese Datei wird dann auch gelöscht, aber das Label bleibt erhalten.

Offline Thorsten Otto

  • Benutzer
  • Beiträge: 1.297
Re: Disk-Label löschen
« Antwort #5 am: Fr 12.07.2024, 12:41:42 »
Ich kanns bei mir nicht testen im moment, weil die Dateien auf dem HOSTFS von aranym liegen und dort ein volume-label nur simuliert wird, und nicht gelöscht werden kann. Aber das "label" kommando von mupfel macht im Prinzip dasselbe: https://github.com/gereons/gemini/blob/33dd3b2c86f6a3ca67ecf718a04a2ccd1e45880b/MUPFEL/LABEL.C#L56-L118

Offline Count

  • Benutzer
  • Beiträge: 238
Re: Disk-Label löschen
« Antwort #6 am: Fr 12.07.2024, 13:32:32 »
Erstmal danke für deine Mühen. Mit dem label-Kommando in Mupfel ist der Effekt leider der gleiche: Das Label bleibt bestehen.

Ich habe in Steem und Hatari ein paar andere TOS-Versionen probiert. Mit 1.00 und 1.02 lässt sich das Label mit Mupfel löschen, ab 1.04 und auch in EmuTOS 1.01 nicht.

Offline Count

  • Benutzer
  • Beiträge: 238
Re: Disk-Label löschen
« Antwort #7 am: Fr 12.07.2024, 13:53:18 »
In den Release Notes zu TOS 1.04 habe ich die Erklärung gefunden (Seite 40, letzter Absatz zu Attribute Byte):

Zitat
... you can't use Fattrib, Frename, Fopen, or Fdelete on labels or subdirectories.

Auf Seite 48 wird alles ausführlich erklärt.

Rainbow-TOS Release Notes:
https://archive.org/details/rearc_atari-st-e-tt-toolkit-b1-40-rainbow-tos-release-notes-2nd-ed.-1991-03-05
« Letzte Änderung: Fr 12.07.2024, 14:14:44 von Count »