Format AtariDOS XE: Różnice pomiędzy wersjami
mNie podano opisu zmian |
Nie podano opisu zmian |
||
| Linia 3: | Linia 3: | ||
== Jednostka alokacji == | == Jednostka alokacji == | ||
Jednostkę alokacji stanowi 256 bajtów, czyli dwa sektory fizyczne w [[SD]] i [[ED]], a jeden w [[DD]]. Przełożenie sektorów fizycznych na | 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 2 - sektory 2 i 3, klaster nr 3 - sektory 4 i 5, i tak dalej. | ||
== Boot == | == Boot == | ||
Pierwsze trzy sektory (fizyczne) dysku zajmuje program ładujący DOS. Oprócz tego w bajtach $09-$2F sektora nr 1 zapisane są informacje o dyskietce i konfiguracja DOS-u. | Pierwsze trzy sektory (fizyczne) dysku zajmuje program ładujący DOS. Oprócz tego w bajtach $09-$2F sektora ('''nie''' klastra) nr 1 zapisane są informacje o dyskietce i konfiguracja DOS-u. | ||
== VTOC == | == VTOC == | ||
VTOC znajduje się w | 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: | ||
<table border = 1 cellpadding = 5> | <table border = 1 cellpadding = 5> | ||
<tr><td><b>Offset</b></td><td><b>Opis</b></td></tr> | <tr><td><b>Offset</b></td><td><b>Opis</b></td></tr> | ||
<tr><td>$00-$01</td><td>Wartość $0101. Prawdopodobnie znacznik formatu.</td></tr> | <tr><td>$00-$01</td><td>Wartość $0101. Prawdopodobnie znacznik formatu.</td></tr> | ||
<tr><td>$02-$03</td><td>Całkowita liczba | <tr><td>$02-$03</td><td>Całkowita liczba klastrów na dysku, zwiększona o 1.</td></tr> | ||
<tr><td>$04-$05</td><td>Aktualna liczba wolnych | <tr><td>$04-$05</td><td>Aktualna liczba wolnych klastrów na dysku.</td></tr> | ||
<tr><td>$06-$07</td><td>Liczba plików i podkatalogów na dysku (czyli numer sekwencyjny dysku, zwiększany o 1 za kazdym razem, gdy tworzony jest plik lub katalog).</td></tr> | <tr><td>$06-$07</td><td>Liczba 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.</td></tr> | ||
<tr><td>$0A-$0B</td><td>Numer losowy dysku.</td></tr> | <tr><td>$0A-$0B</td><td>Numer losowy dysku.</td></tr> | ||
</table> | </table> | ||
| Linia 24: | Linia 24: | ||
Numer sekwencyjny i losowy w połączeniu z innymi danymi pozwala DOS-owi stwierdzić, kiedy dyskietka w stacji została wymieniona. | Numer sekwencyjny i losowy w połączeniu z innymi danymi pozwala DOS-owi stwierdzić, kiedy dyskietka w stacji została wymieniona. | ||
Dalszą część VTOC zajmuje mapa bitowa całego dysku, w której bit ustawiony oznacza | 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 | 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 | Katalog główny zaczyna się bezpośrednio za VTOC i początkowo zajmuje tylko jeden klaster (nr 5). | ||
Pojedyńczy wpis katalogowy ma długość 49 bajtów (!) i jest zorganizowany jak następuje: | Pojedyńczy wpis katalogowy ma długość 49 bajtów (!) i jest zorganizowany jak następuje: | ||
| Linia 39: | Linia 39: | ||
<p>Bajt statusu:</p> | <p>Bajt statusu:</p> | ||
* bit 7 = 1 - plik skasowany; | * bit 7 = 1 - plik skasowany; | ||
* bit 6 = 1 - plik istnieje; | * bit 6 = 1 - plik istnieje; w plikach zamkniętych bity 6 i 7 mają zawsze przeciwne stany | ||
* bit 5 - niewykorzystany | * bit 5 - niewykorzystany | ||
* bit 4 - niewykorzystany | * bit 4 - niewykorzystany | ||
* bit 3 - niewykorzystany | * bit 3 - niewykorzystany | ||
* bit 2 = 1 - plik jest otwarty do zapisu | * 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 1 = 1 - plik jest zabezpieczony | ||
* bit 0 = 1 - plik jest podkatalogiem | * bit 0 = 1 - plik jest podkatalogiem | ||
| Linia 54: | Linia 54: | ||
<tr><td>$0F-$10</td><td><p>Numer piku.</p></td></tr> | <tr><td>$0F-$10</td><td><p>Numer piku.</p></td></tr> | ||
<tr><td>$11-$12</td><td><p>Numer losowy dysku (ten sam, co we VTOC).</p></td></tr> | <tr><td>$11-$12</td><td><p>Numer losowy dysku (ten sam, co we VTOC).</p></td></tr> | ||
<tr><td>$13-$14</td><td><p> | <tr><td>$13-$14</td><td><p>W przypadku katalogu wskazuje to na pierwszy klaster katalogu. W przypadku pliku - pierwszy klaster zajęty przez mapę pliku.</p></td></tr> | ||
<tr><td>$15-$2A</td><td><p>22 bajty o nieustalonym znaczeniu (same zera), być może rezerwa na przyszłość.</p></td></tr> | <tr><td>$15-$2A</td><td><p>22 bajty o nieustalonym znaczeniu (same zera), być może rezerwa na przyszłość.</p></td></tr> | ||
<tr><td>$2B-$2C</td><td><p>Data utworzenia pliku. Zapisane są kolejno rok, miesiąc i dzień niezgodnie z granicami bajtów:</p> | <tr><td>$2B-$2C</td><td><p>Data utworzenia pliku. Zapisane są kolejno rok, miesiąc i dzień niezgodnie z granicami bajtów:</p> | ||
| Linia 65: | Linia 65: | ||
</table> | </table> | ||
Każdy nowo założony plik dostaje status $C4. Po zamknięciu pliku DOS kasuje bity 7 i 2. | |||
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 ($F6-$FF) zawiera informacje o katalogu: | |||
<table border = 1 cellpadding = 5> | <table border = 1 cellpadding = 5> | ||
<tr><td><b>Offset</b></td><td><b> | <tr><td><b>Offset</b></td><td><b>Opis</b></td></tr> | ||
<tr><td>$ | <tr><td>$F8-$F9</td><td> | ||
<p>Numer następnego klastra zajętego przez ten katalog ($0000 w ostatnim).</p></td></tr> | |||
<tr><td>$FA-$FB</td><td><p>Numer pliku - $0000 dla katalogu głównego.</p></td></tr> | |||
</td></tr> | <tr><td>$FC-$FD</td><td><p>Numer losowy dysku (ten sam co we VTOC).</p></td></tr> | ||
<tr><td>$ | <tr><td>$FE</td><td><p>Numer kolejny klastra katalogu (począwszy od $00).</p></td></tr> | ||
<tr><td>$ | <tr><td>$FF</td><td><p>Typ klastra ($FF - katalog).</p></td></tr> | ||
<tr><td>$ | |||
<tr><td>$ | |||
</table> | </table> | ||
== Mapa pliku == | |||
Mapa pliku składa się z klastrów połączonych w listę liniową, podobnie jak w systemie plików [[SpartaDOS]]. Pierwszych 248 bajtów przeznaczonych jest na 124 numery klastrów, w ktrórych znajdują się dane pliku. Ostatnie osiem bajtów zawiera dodatkowe informacje: | |||
<table border = 1 cellpadding = 5> | |||
<tr><td><b>Offset</b></td><td><b>Opis</b></td></tr> | |||
<tr><td>$F8-$F9</td><td> | |||
<p>Numer następnego klastra mapy ($0000 w ostatnim).</p></td></tr> | |||
<tr><td>$FA-$FB</td><td><p>Numer pliku.</p></td></tr> | |||
<tr><td>$FC-$FD</td><td><p>Numer losowy dysku (ten sam co we VTOC).</p></td></tr> | |||
<tr><td>$FE</td><td><p>Numer kolejny klastra mapy (począwszy od $00).</p></td></tr> | |||
<tr><td>$FF</td><td><p>Typ klastra ($80 - mapa pliku).</p></td></tr> | |||
</table> | |||
== 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: | |||
<table border = 1 cellpadding = 5> | |||
<tr><td><b>Offset</b></td><td><b>Opis</b></td></tr> | |||
<tr><td>$FA-$FB</td><td><p>Numer pliku.</p></td></tr> | |||
<tr><td>$FC-$FD</td><td><p>Numer losowy dysku (ten sam co we VTOC).</p></td></tr> | |||
<tr><td>$FE</td><td><p>Numer kolejny klastra pliku (począwszy od $00).</p></td></tr> | |||
<tr><td>$FF</td><td><p>Typ klastra ($00 - klaster danych).</p></td></tr> | |||
</table> | |||
== Zobacz też == | == Zobacz też == | ||
Wersja z 29 wrz 2006, 15:20
Format dyskietki zastosowany w AtariDOS XE, przeznaczony głównie dla stacji dysków XF551, ale też 810 i 1050.
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 2 - sektory 2 i 3, klaster nr 3 - sektory 4 i 5, i tak dalej.
Boot
Pierwsze trzy sektory (fizyczne) dysku zajmuje program ładujący DOS. Oprócz tego w bajtach $09-$2F sektora (nie klastra) nr 1 zapisane są informacje o dyskietce i konfiguracja DOS-u.
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:
| Offset | Opis |
| $00-$01 | Wartość $0101. Prawdopodobnie znacznik formatu. |
| $02-$03 | Całkowita liczba klastrów na dysku, zwiększona o 1. |
| $04-$05 | Aktualna liczba wolnych klastrów na dysku. |
| $06-$07 | Liczba 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. |
| $0A-$0B | Numer losowy dysku. |
Numer sekwencyjny i losowy w połączeniu z innymi danymi pozwala DOS-owi stwierdzić, kiedy dyskietka w stacji została wymieniona.
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 (nr 5).
Pojedyńczy wpis katalogowy ma długość 49 bajtów (!) i jest zorganizowany jak następuje:
| Offset | Opis |
| $00 |
Bajt statusu:
|
| $01-$08 | Nazwa pliku dopełniona spacjami. |
| $09-$0B | Rozszerzenie nazwy pliku dopełnione spacjami. |
| $0C-$0E | Wielkość pliku w bajtach. |
| $0F-$10 | Numer piku. |
| $11-$12 | Numer losowy dysku (ten sam, co we VTOC). |
| $13-$14 | W przypadku katalogu wskazuje to na pierwszy klaster katalogu. W przypadku pliku - pierwszy klaster zajęty przez mapę pliku. |
| $15-$2A | 22 bajty o nieustalonym znaczeniu (same zera), być może rezerwa na przyszłość. |
| $2B-$2C | Data utworzenia pliku. Zapisane są kolejno rok, miesiąc i dzień niezgodnie z granicami bajtów:
|
| $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.
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 ($F6-$FF) zawiera informacje o katalogu:
| Offset | Opis |
| $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). |
Mapa pliku
Mapa pliku składa się z klastrów połączonych w listę liniową, podobnie jak w systemie plików SpartaDOS. Pierwszych 248 bajtów przeznaczonych jest na 124 numery klastrów, w ktrórych znajdują się dane pliku. Ostatnie osiem bajtów zawiera dodatkowe informacje:
| Offset | Opis |
| $F8-$F9 |
Numer następnego klastra mapy ($0000 w ostatnim). |
| $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). |
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:
| Offset | Opis |
| $FA-$FB | Numer pliku. |
| $FC-$FD | Numer losowy dysku (ten sam co we VTOC). |
| $FE | Numer kolejny klastra pliku (począwszy od $00). |
| $FF | Typ klastra ($00 - klaster danych). |