Format AtariDOS XE

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 23:20, 30 sie 2009
KMK (Dyskusja | wkład)
(Uwagi)
← Previous diff
Wersja z dnia 13:37, 6 paź 2009
KMK (Dyskusja | wkład)
(Cechy ogólne)
Next diff →
Linia 9: Linia 9:
* Struktura katalogowa: hierarchiczna * Struktura katalogowa: hierarchiczna
* Maksymalna liczba plików w katalogu: 1280 * Maksymalna liczba plików w katalogu: 1280
 +* Wielkość wpisu w katalogu: 49 bajtów
* Nazwa pliku: 8+3 * Nazwa pliku: 8+3
* Metoda linkowania plików: indywidualne mapy plików * Metoda linkowania plików: indywidualne mapy plików

Wersja z dnia 13:37, 6 paź 2009

Format dyskietki zastosowany w DOS XE, przeznaczony głównie dla stacji dysków XF551, ale też 810 i 1050.

Spis treści

Cechy ogólne

  • Dopuszczalne wielkości sektorów: 128 i 256 bajtów
  • Maksymalna pojemność filesystemu: 65535 klastrów (15,62 MB)
  • Maksymalna wielkość pliku: 366,21 kB (albo 7,81 MB?)
  • Maksymalna liczba plików na dysku: 65536
  • Struktura katalogowa: hierarchiczna
  • Maksymalna liczba plików w katalogu: 1280
  • Wielkość wpisu w katalogu: 49 bajtów
  • Nazwa pliku: 8+3
  • Metoda linkowania plików: indywidualne mapy plików
  • Metoda alokacji sektorów: mapa bitowa

Jednostka alokacji

Jednostkę alokacji stanowi "klaster" o wielkości 256 bajtów, czyli dwa sektory fizyczne w SD i ED, a jeden w DD. Przełożenie sektorów fizycznych na klastry jest dość osobliwe, liczy się bowiem w nim nieistniejący sektor nr 0. I tak, w DD sektor nr 0 stanowi klaster nr 0, sektor nr 1 - klaster nr 1 itd. W SD i ED klaster nr 0 stanowią sektory 0 i 1, klaster nr 1 - sektory 2 i 3, klaster nr 2 - sektory 4 i 5, i tak dalej.

Boot

Pierwsze trzy sektory (fizyczne) dysku zajmuje program ładujący DOS. Oprócz tego w bajtach $09-$0F sektora (nie klastra) nr 1 zapisana jest konfiguracja DOS-u, a w bajtach $10-$2F - informacje o dysku.

Konfiguracja DOS

OffsetOpis
$09

Liczba określająca, ile plików można otworzyć jednocześnie. Standardowo 3, maksymalnie 7.

$0A

Mapa bitowa aktywnych napędów:

 Nr bitu: 7 6 5 4 3 2 1 0
Nr dysku: 8 7 6 5 4 3 2 1

Bit ustawiony oznacza napęd aktywny.

Informacja o dysku

OffsetOpis
$10-$15

Kod zastosowanej gęstości (czy też typu dysku) w postaci ciągu ASCII. Ciąg ten ma do sześciu znaków, jeśli jest ich mniej, dopełniony jest zerami. Kody te są następujące:

  • AT810 - gęstość pojedyńcza (SD)
  • AT1050 - gęstość średnia (ED)
  • XF551 - gęstość podwójna dwustronna (DSDD)
  • 130RAM - ramdysk
  • SSDD - gęstość podwójna (DD)
$18-$19

Całkowita liczba klastrów na dyskietce.

$1A-$1B

Maksymalna (początkowa) liczba wolnych klastrów na dyskietce.

$1D

Numer pierwszego klastra katalogu głównego.

$22

Komenda SIO odczytu sektora, $52 ("R") dla standardu, lub $D2 ("R" w inwersji) dla trybu przyspieszonej transmisji XF551.

$23

Komenda SIO zapisu sektora, $57 ("W") dla standardu, lub $D7 ("W" w inwersji) dla trybu przyspieszonej transmisji XF551.

$24

Wartość rejestru AUDF3/4 układu Pokey wybierająca szybkość przesyłania komend. Dla transmisji standardowej jest tu zero, dla przyspieszonej $28 (= 19200 bps).

$25

Wartość rejestru AUDF3/4 układu Pokey wybierająca szybkość przesyłania danych. Dla transmisji standardowej jest tu zero, dla przyspieszonej $10 (= 38400 bps).

$26

Komenda SIO formatowania w gęstości, w jakiej aktualnie jest dyskietka: $21 ("!") dla przeplotu standardowego, $A1 ("!" w inwersji) dla przeplotu turbo XF551. Jeśli dysk nie wymaga fizycznego formatowania (bo jest np. ramdyskiem), jest tu $00.

$28-$2F

Blok PERCOM dla tej gęstości, pierwsze 8 bajtów.

Pozostałe wartości tej części bootsektora DOS XE czekają na swego odkrywcę. Ważne jest, że - inaczej niż np. w formacie SpartaDOS-u - zawartość bootsektora nie jest zmieniana przy normalnej pracy z filesystemem, wszystkie tego typu zmienne przechowuje VTOC.

VTOC

VTOC znajduje się w klastrze nr 4 (sektor fizyczny nr 4 w DD, albo sektory 8-9 w SD i ED). Pierwsze 10 bajtów zajmuje informacja o dysku zorganizowana następująco:

OffsetOpis
$00-$01Wartość $0101. Prawdopodobnie znacznik formatu.
$02-$03Całkowita liczba klastrów na dysku, zwiększona o 1.
$04-$05Aktualna liczba wolnych klastrów na dysku.
$06-$07Liczba plików i podkatalogów na dysku (czyli numer sekwencyjny dysku, zwiększany o 1 za kazdym razem, gdy tworzony jest plik lub katalog). Początkowo $00.
$08-$09Numer losowy dysku.

Numer sekwencyjny i losowy w połączeniu z innymi danymi pozwala DOS-owi stwierdzić, kiedy dyskietka w stacji została wymieniona.

Mapa bitowa

Dalszą część VTOC zajmuje mapa bitowa całego dysku, w której bit ustawiony oznacza klaster wolny, a bit skasowany - zajęty. Bit 7 każdego bajtu mapy oznacza klaster o niższym numerze, kolejne bity przyporządkowane sa do klastrów o kolejno rosnących numerach. Zerowy klaster jest w mapie pominięty, a zatem bit 7 pierwszego bajtu mapy bitowej (bajtu nr $0A VTOC) ma przyporządkowany klaster nr 1, bit 6 - nr 2, bit 5 nr 3 itd.

Początkowo pierwszym wolnym klastrem dysku jest klaster nr 6 - pierwszy bajt mapy bitowej ma wartość %00000111 (jednostki 1-5 zajęte, 6-8 wolne).

Katalogi

Katalog główny zaczyna się bezpośrednio za VTOC i początkowo zajmuje tylko jeden klaster, którego numer jest w bajcie $1D bootsektora.

Pojedyńczy wpis katalogowy ma długość 49 bajtów (!) i jest zorganizowany jak następuje:

OffsetOpis
$00

Bajt statusu:

  • bit 7 = 1 - plik skasowany;
  • bit 6 = 1 - plik istnieje; w plikach zamkniętych bity 6 i 7 mają zawsze przeciwne stany
  • bit 5 - niewykorzystany
  • bit 4 - niewykorzystany
  • bit 3 - niewykorzystany
  • bit 2 = 1 - plik jest otwarty do zapisu; jednocześnie ustawiane są na 1 bity 7 i 6
  • bit 1 = 1 - plik jest zabezpieczony
  • bit 0 = 1 - plik jest podkatalogiem
$01-$08

Nazwa pliku dopełniona spacjami.

$09-$0B

Rozszerzenie nazwy pliku dopełnione spacjami.

$0C-$0D

Liczba klastrów danych zajmowanych przez plik. Dla katalogu zawsze $0000.

$0E

Liczba bajtów danych w ostatnim klastrze pliku. Dla katalogu zawsze $00.

$0F-$10

Numer pliku lub katalogu. Jest to numer kolejny pliku (lub katalogu) zakładanego w ogóle na dysku, a nie tylko w konkretnym katalogu.

$11-$12

Numer losowy dysku (ten sam, co we VTOC).

$13-$14
  • Katalog: numer pierwszego klastra danych katalogu;
  • Plik: numer pierwszego klastra mapy pliku.
$15-$2A
  • Katalog: 22 zera.
  • Plik: numery kolejnych jedenastu klastrów mapy pliku, po dwa bajty na numer.
$2B-$2C

Data utworzenia pliku. Zapisane są kolejno dzień, miesiąc i rok niezgodnie z granicami bajtów:

  • bity 0-4 - dzień miesiąca
  • bity 5-8 - miesiąc ($01 - styczeń itd.)
  • bity 9-15 - rok odjąć 1900.
+---------------+---------------+
|   Bajt $2B    |   Bajt $2C    | 
+---------------+---------------+
|7 6 5 4 3 2 1 0|7 6 5 4 3 2 1 0|
+-------------+-+-----+---------+
| rok - 1900  |miesiąc|  dzień  |
+-------------+-------+---------+

Np. $C13D = 1100-0001-0011-1101 = 1100000|1001|11101 = $60|$09|$1D = 96-09-29 (29 września 1996)

$2D-$2E

Data modyfikacji pliku, w takim samym formacie jak powyżej.

$2F-$30

Dwa bajty o nieznanym znaczeniu (oba wyzerowane).

Każdy nowo założony plik dostaje status $C4. Po zamknięciu pliku DOS kasuje bity 7 i 2.

Klastry katalogu

W jednym klastrze znajduje się zawsze całkowita liczba wpisów katalogu, czyli maximum pięć. Jeśli katalog ma więcej wpisów, szósty wpis w całości jest w następnym klastrze tego katalogu itd.

Bajty $F5-$F7 klastra katalogu są nieużywane, a ostatnie 8 bajtów ($F8-$FF) zawiera informacje o katalogu:

OffsetOpis
$F8-$F9

Numer następnego klastra zajętego przez ten katalog ($0000 w ostatnim).

$FA-$FB

Numer pliku - $0000 dla katalogu głównego.

$FC-$FD

Numer losowy dysku (ten sam co we VTOC).

$FE

Numer kolejny klastra katalogu (począwszy od $00).

$FF

Typ klastra ($FF - katalog).

Pliki

Mapa pliku

Mapa pliku składa się z klastrów, których lista znajduje się w bajtach $13-$2A wpisu w katalogu. Pierwszych 250 bajtów przeznaczonych jest na 125 numerów klastrów, w których znajdują się dane pliku. Ostatnie sześć bajtów zawiera dodatkowe informacje:

OffsetOpis
$FA-$FB

Numer pliku.

$FC-$FD

Numer losowy dysku (ten sam co we VTOC).

$FE

Numer kolejny klastra mapy (począwszy od $00).

$FF

Typ klastra ($80 - mapa pliku).

Na listę klastrów mapy przeznaczono w katalogu 24 bajty miejsca. Ponieważ numer klastra ma 16 bitów, zatem mapa pliku może zająć maksymalnie 12 klastrów. 12 klastrów mapy po 125 wpisów klastrów danych po 250 bajtów daje nam w efekcie ograniczenie maksymalnej wielkości pliku na dysku do 1500 klastrów, czyli 375000 bajtów (366,2k). Jeśli DOS nie zmienia jakoś adresowania klastrów powyżej tej długości, to jest ostateczny limit wielkości pliku w tym filesystemie.

Klastry danych

W każdym klastrze danych najwyżej 250 bajtów jest wypełnione danymi. Końcówka, podobnie jak w przypadku katalogów i map, zawiera informacje:

OffsetOpis
$FA-$FB

Numer pliku.

$FC-$FD

Numer losowy dysku (ten sam co we VTOC).

$FE-$FF

Numer kolejny klastra pliku (począwszy od $0000).

Maksymalny numer kolejny klastra pliku to 32767 ($7FFF), a więc starszy bajt tej liczby jest zawsze dodatni, przez co jednocześnie stanowi znacznik typu klastra (<= $7F - klaster danych).

Uwagi

Osobliwością filesystemu są dwie różne metody zapewnienia ciągłości danych w zależności od tego, czy zbiór jest plikiem, czy podkatalogiem: w przypadku pliku używa się map klastrów, natomiast klastry katalogu wskazują na siebie bezpośrednio, bez użycia map. Ta dwoistość jest być może reliktem filesystemu OS/A+ v.4.1 i wskazywać na to, że system plików OS/A+ v.4.1 może być dalekim praszczurem systemu plików DOS XE.

Zobacz też

Personal tools