Format AtariDOS 3
From Atariki
Wersja z dnia 02:40, 21 lut 2006 KMK (Dyskusja | wkład) (→Mapa alokacji plików) ← 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 24: | Linia 36: | ||
<tr><td>$00</td><td> | <tr><td>$00</td><td> | ||
<p>Bajt statusu:</p> | <p>Bajt statusu:</p> | ||
- | * bit 7 = 1 - wpis katalogowy istniejel 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 = 1 - plik jest otwarty do zapisu | * 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> | ||
- | === Mapa alokacji plików === | + | 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 znajduje się w sektorze nr 24. Każdy jej bajt odpowiada jednej jednostce alokacji obszaru plików, bajt o offsecie $00 odpowiada pierwszej jednostce alokacji, która zajmuje sektory 25-32 (i ma numer 0). Baj tten może przyjmować następujące wartości: | + | == Mapa alokacji plików == |
- | * $FD - koniec pliku (ostatnia jednostka alokacji zajęta przez plik) | + | 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 | * $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:
Offset | Opis |
$00 |
Bajt statusu:
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.