Format AtariDOS 3

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 02:55, 21 lut 2006
KMK (Dyskusja | wkład)
(Katalog)
← Previous diff
Aktualna wersja
KMK (Dyskusja | wkład)
(Mapa alokacji plików)
Linia 1: Linia 1:
-Format dyskietki zastosowany w [[DOS 3.0|Atari DOS 3.0]] i przeznaczony do użycia ze stacją [[1050]].+[[Formaty systemów plików|Format dyskietki]] zastosowany w [[DOS 3.0]] i przeznaczony do użycia ze stacją [[1050]].
 + 
 +== Cechy ogólne ==
 + 
 +* Dopuszczalne wielkości sektorów: 128 bajtów
 +* Maksymalna pojemność systemu plików: 254 bloki (254 KB)
 +* Maksymalna wielkość pliku: 255 bloków (255 KB)
 +* Maksymalna liczba plików na dysku: 63
 +* Struktura katalogowa: jednopoziomowa
 +* Maksymalna liczba plików w katalogu: 63
 +* Wielkość wpisu w katalogu: 16 bajtów
 +* Nazwa pliku: 8+3
 +* Metoda linkowania plików: globalna mapa alokacji plików
 +* Metoda alokacji sektorów: globalna mapa alokacji plików
== Jednostka alokacji == == 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.+Jednostkę alokacji stanowi "blok" liczący osiem sektorów po 128 bajtó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 bloków.
-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 ('''nie''' bloki) 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 1-15 zajmuje DOS
-* sektory 10-15 są puste+
* sektory 16-23 zajmuje katalog * sektory 16-23 zajmuje katalog
* sektor 24 zajmuje mapa alokacji plików * sektor 24 zajmuje mapa alokacji plików
Linia 14: Linia 26:
Na pliki więc przeznaczone jest 87k w [[SD]] lub 127k w [[ED]]. Na pliki więc przeznaczone jest 87k w [[SD]] lub 127k w [[ED]].
-=== Katalog ===+== 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 każdym sektorze katalogu pierwszy wpis jest zajęty przez DOS. Dlatego maksymalna liczba plików na dyskietce wynosi 56. 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]].+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 (w obu wypadkach pierwsza liczba oznacza całkowitą pojemność obszaru plików dyskietki liczoną w kilobajtach).
Strukturę pozostałych wpisów katalogu przedstawia tabelka: Strukturę pozostałych wpisów katalogu przedstawia tabelka:
Linia 26: Linia 38:
* bit 7 = 1 - wpis katalogowy istnieje; jeśli tu jest 1, a w pozostałych bitach 0, to plik jest skasowany. * 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 6 = 1 - plik istnieje.
-* bit 5 - funkcja nieznana+* bit 5 - niewykorzystany
-* bit 4 - funkcja nieznana+* bit 4 - niewykorzystany
-* bit 3 - funkcja nieznana+* bit 3 - niewykorzystany
-* bit 2 - funkcja nieznana+* bit 2 - niewykorzystany
* bit 1 = 1 - plik zabezpieczony przed zapisem lub skasowaniem. * bit 1 = 1 - plik zabezpieczony przed zapisem lub skasowaniem.
-* bit 0 - funkcja nieznana+* bit 0 = 1 - plik jest otwarty do zapisu
 +<p>Ogólnie status pliku istniejącego to $C0, zabezpieczonego $C2, a skasowanego $80.</p>
</td></tr> </td></tr>
<tr><td>$01-$08</td><td><p>Nazwa pliku dopełniona spacjami.</p></td></tr> <tr><td>$01-$08</td><td><p>Nazwa pliku dopełniona spacjami.</p></td></tr>
<tr><td>$09-$0B</td><td><p>Rozszerzenie nazwy pliku dopełnione spacjami.</p></td></tr> <tr><td>$09-$0B</td><td><p>Rozszerzenie nazwy pliku dopełnione spacjami.</p></td></tr>
-<tr><td>$0C</td><td><p>Liczba jednostek alokacji zajętych przez plik.</p></td></tr>+<tr><td>$0C</td><td><p>Liczba bloków zajętych przez plik. Plik może zatem w teorii zajmować maksymalnie 255 bloków (kilobajtów).</p></td></tr>
-<tr><td>$0D</td><td><p>Numer pierwszej jednostki alokacji zajętej przez plik. Numerowane są od zera.</p></td></tr>+<tr><td>$0D</td><td><p>Numer pierwszego bloku zajętego przez plik. Numerowane są od zera.</p></td></tr>
-<tr><td>$0E-$0F</td><td><p>Wielkość pliku w bajtach.</p></td></tr>+<tr><td>$0E-$0F</td><td><p>Wskaźnik końca pliku w ostatnim bloku. W praktyce jest to 16 najmłodszych bitów całkowitej wielkości pliku liczonej w bajtach.</p></td></tr>
</table> </table>
-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.+Po zamknięciu DOS przydziela każdemu plikowi - również takiemu o zerowej długości - co najmniej jeden blok zaznaczywszy to odpowiednio tak w katalogu jak i mapie dysku.
-=== Mapa alokacji plików ===+== 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:+Mapa alokacji plików ([[VTOC]]) znajduje się w sektorze nr 24. Każdy jej bajt odpowiada jednemu blokowi obszaru plików, np. bajt o offsecie $00 odpowiada blokowi pierwszemu, który 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)+* $80-$FC - wartości zarezerwowane
 +* $FD - koniec pliku (ostatni blok zajęty przez plik)
* $FE - obszar wolny * $FE - obszar wolny
-* $FF - obszar zarezerwowany (jednostki alokacji wadliwe, nie istniejące itp.)+* $FF - obszar zarezerwowany (bloki wadliwe, nie istniejące itp.)
 + 
 +Każda inna wartość to numer następnego bloku zajętego 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 bloki począwszy od bloku o numerze $00. Długość pliku to 3494 bajty ($0DA6) i tyleż wynosi "wskaźnik EOF".
 + 
 +* 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 bloki o kolejnych numerach 0, 1, 2 i 3. Liczba bajtów znajdujących się w ostatnim bloku może być łatwo wyliczona ze "wskaźnika EOF" znajdującego się w katalogu.
-Każda inna wartość to numer następnej jednostki alokacji zajętej przez plik.+Ogólnie format DOS 3.0 przypomina w założeniach [[format AtariDOS 4]].
-Ogólnie format DOS 3.0 przypomina w założeniach [[format AtariDOS 4]]. +== Zobacz też ==
 +* [[Formaty systemów plików]]
[[Kategoria:Atari 8-bit]] [[Kategoria:Atari 8-bit]]

Aktualna wersja

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

Spis treści

Cechy ogólne

  • Dopuszczalne wielkości sektorów: 128 bajtów
  • Maksymalna pojemność systemu plików: 254 bloki (254 KB)
  • Maksymalna wielkość pliku: 255 bloków (255 KB)
  • Maksymalna liczba plików na dysku: 63
  • Struktura katalogowa: jednopoziomowa
  • Maksymalna liczba plików w katalogu: 63
  • Wielkość wpisu w katalogu: 16 bajtów
  • Nazwa pliku: 8+3
  • Metoda linkowania plików: globalna mapa alokacji plików
  • Metoda alokacji sektorów: globalna mapa alokacji plików

Jednostka alokacji

Jednostkę alokacji stanowi "blok" liczący osiem sektorów po 128 bajtó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 bloków.

Sektory (nie bloki) 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-15 zajmuje DOS
  • 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 (w obu wypadkach pierwsza liczba oznacza całkowitą pojemność obszaru plików dyskietki liczoną w kilobajtach).

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 = 1 - plik jest otwarty do zapisu

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 bloków zajętych przez plik. Plik może zatem w teorii zajmować maksymalnie 255 bloków (kilobajtów).

$0D

Numer pierwszego bloku zajętego przez plik. Numerowane są od zera.

$0E-$0F

Wskaźnik końca pliku w ostatnim bloku. W praktyce jest to 16 najmłodszych bitów całkowitej wielkości pliku liczonej w bajtach.

Po zamknięciu DOS przydziela każdemu plikowi - również takiemu o zerowej długości - co najmniej jeden blok zaznaczywszy to odpowiednio tak w katalogu jak i mapie dysku.

Mapa alokacji plików

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

  • $80-$FC - wartości zarezerwowane
  • $FD - koniec pliku (ostatni blok zajęty przez plik)
  • $FE - obszar wolny
  • $FF - obszar zarezerwowany (bloki wadliwe, nie istniejące itp.)

Każda inna wartość to numer następnego bloku zajętego 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 bloki począwszy od bloku o numerze $00. Długość pliku to 3494 bajty ($0DA6) i tyleż wynosi "wskaźnik EOF".

  • 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 bloki o kolejnych numerach 0, 1, 2 i 3. Liczba bajtów znajdujących się w ostatnim bloku może być łatwo wyliczona ze "wskaźnika EOF" znajdującego się w katalogu.

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

Zobacz też

Personal tools