Exakte Dateilänge unter CP/M Plus

DOS Plus, CP/M 3 und einige CP/M 2 Nachbauten (speziell DOS+2.5) unterstützen die exakte Dateiläge. Die folgenden aufgelisteten Systemaufrufe unterstützen dies:

BDOS Funktion 15 - Öffnen einer Datei

Aufruf mit DE=Adresse des File Control Blocks, C=15 (0Fh)

Wenn das Byte in FCB+32 (FCB+20h) 255 (0FFh) ist, dann wird dieser Wert nach Auruf der Funktion das Byte im letzten Rekord (Last Record Byte Count) enthalten. Vor dem Zugriff mit sequentieller Ein-/Ausgabe muss das Byte auf 0 gesetzt werden.

BDOS Funktion 17 - Suche nach erster Datei

Aufruf mit DE=Adresse des File Control Blocks, C=17 (11h)

Gibt einen Zeiger auf den Verzeichniseintrag zurück. Das Byte in ENTRY+13 (ENTRY+0Dh) beinhaltet den Last Record Byte Count.

BDOS Funktion 18 - Suche nach nächster Datei

Aufruf mit C=18 (12h)

Gibt einen Zeiger auf den Verzeichniseintrag zurück. Das Byte in ENTRY+13 (ENTRY+0Dh) beinhaltet den Last Record Byte Count.

BDOS Funktion 30 - Setzen eines Dateiattributes

Aufruf mit DE=Adresse des File Control Blocks, C=30 (1Eh)

Um den Last Record Byte Count zu setzen, muss der Wert in FCB+32 (FCB+20h) gespeichert und gleichzeitig Bit 7 in FCB+6 gesetzt werden.

Was bedeutet der Last Record Byte Count?

Aus CP/M Sicht ist dies einfach eine Zahl von 0-255, die verknüpft ist mit der Datei, auf die Programme, aus welchem Grund auch immer, zugreifen. Die Dokumentation legt keine Auswertung dafür fest.

Wenn wir Programme wollen, die in der Lage sind, Dateien mit exakter Länge gemeinsam zu nutzen, dann hätte es besser eine Verständigung darüber geben sollen, was die Zahlen bedeuten. Erfüllen müssen diese:

Unglücklicherweise bleiben immer noch zwei plausible Systeme:


Letzte Änderung: 14.September 2004