Format AtariDOS 3

From Atariki

Revision as of 03:09, 21 lut 2006; view current revision
←Older revision | Newer revision→
Jump to: navigation, search

Format dyskietki zastosowany w Atari DOS 3.0 i przeznaczony do użycia ze stacją 1050.

Spis treści

Jednostka alokacji

Jednostkę alokacji stanowi osiem sektorów, czyli 1k w SD i ED (DOS 3.0 nie obsługuje nic więcej). Całkowita pojemność dyskietki w SD i ED wynosi więc odpowiednio 90 i 130 jednostek alokacji.

Sektory (nie jednostki alokacji) 1-24 są zarezerwowane do użytku systemu, reszta dyskietki jest przeznaczona na pliki. Użycie sektorów systemowych jest następujące:

  • sektory 1-9 zajmuje DOS
  • sektory 10-15 są puste
  • sektory 16-23 zajmuje katalog
  • sektor 24 zajmuje mapa alokacji plików

Na pliki więc przeznaczone jest 87k w SD lub 127k w ED.

Katalog

Pojedyńczy wpis katalogowy zajmuje 16 bajtów. Ponieważ katalog zajmuje 8 sektorów, na dyskietce można by było umieścić do 64 plików, gdyby nie fakt, że w pierwszym sektorze katalogu pierwszy wpis jest zajęty przez DOS. Dlatego maksymalna liczba plików na dyskietce wynosi 63. Ten wpis systemowy składa się z 14 zer, a dwa ostatnie bajty mają wartość odpowiednio $57 $A5 dla SD i $7F $A5 dla ED - jest to znacznik formatu.

Strukturę pozostałych wpisów katalogu przedstawia tabelka:

OffsetOpis
$00

Bajt statusu:

  • bit 7 = 1 - wpis katalogowy istnieje; jeśli tu jest 1, a w pozostałych bitach 0, to plik jest skasowany.
  • bit 6 = 1 - plik istnieje.
  • bit 5 - niewykorzystany
  • bit 4 - niewykorzystany
  • bit 3 - niewykorzystany
  • bit 2 - niewykorzystany
  • bit 1 = 1 - plik zabezpieczony przed zapisem lub skasowaniem.
  • bit 0 - niewykorzystany

Ogólnie status pliku istniejącego to $C0, zabezpieczonego $C2, a skasowanego $80.

$01-$08

Nazwa pliku dopełniona spacjami.

$09-$0B

Rozszerzenie nazwy pliku dopełnione spacjami.

$0C

Liczba jednostek alokacji zajętych przez plik.

$0D

Numer pierwszej jednostki alokacji zajętej przez plik. Numerowane są od zera.

$0E-$0F

Wielkość pliku w bajtach.

Plik otwarty do zapisu, lecz nie zamknięty, w ogóle nie poajawia się w katalogu. Po zamknięciu natomiast DOS przydziela każdemu plikowi - również takiemu o zerowej długości - co najmniej jedną jednostkę alokacji zaznaczywszy to odpowiednio tak w katalogu jak i mapie dysku.

Mapa alokacji plików

Mapa alokacji plików znajduje się w sektorze nr 24. Każdy jej bajt odpowiada jednej jednostce alokacji obszaru plików, np. bajt o offsecie $00 odpowiada pierwszej jednostce alokacji, która zajmuje sektory 25-32 (i ma numer 0). Bajty te mogą przyjmować następujące wartości:

  • $FD - koniec pliku (ostatnia jednostka alokacji zajęta przez plik)
  • $FE - obszar wolny
  • $FF - obszar zarezerwowany (jednostki alokacji wadliwe, nie istniejące itp.)

Każda inna wartość to numer następnej jednostki alokacji zajętej przez plik.

Przykład

  • Wpis katalogowy pliku FMS.SYS wygląda następująco:
$C0 FMS_____SYS $04 $00 $A6 $0D

Dwa najstarsze bity statusu ustawione na 1 informują, że na tej pozycji katalogu jest wpis oraz że związany z nim plik nie jest skasowany. Plik ten zajmuje na dyskietce $04 jednostki alokacji począwszy od jednostki o numerze $00. Długość pliku to 3494 bajty ($0DA6).

  • W mapie alokacji plików jednostka alokacji nr 0 to bajt o takimże offsecie ($00). Widzimy tam, co następuje:
Offsety:  $00 $01 $02 $03
Wartości: $01 $02 $03 $FD

Plik zajmuje jednostki alokacji o kolejnych numerach 0, 1, 2 i 3. Ilość bajtów znajdujących się w ostatnim sektorze (422) może być łatwo wyliczona z całkowitej wielkości pliku podanej w katalogu.

Ogólnie format DOS 3.0 przypomina w założeniach format AtariDOS 4.

Personal tools