Format OS/A Plus 4
From Atariki
Wersja z dnia 00:27, 4 paź 2006 KMK (Dyskusja | wkład) ← Previous diff |
Aktualna wersja KMK (Dyskusja | wkład) (→Katalog) |
||
Linia 1: | Linia 1: | ||
- | [[Formaty systemów plików|Format dyskietki]] używany przez [[OS/A Plus|OS/A+ v.4.1]]. Jako jedyny na ośmiobitowym Atari pozwala na nadawanie plikom długich nazw, ponad standardowe 8+3. | + | [[Formaty systemów plików|Format dyskietki]] zaimplementowany w [[OS/A Plus|OS/A+ v.4.1]]. Jest to w zasadzie implementacja formatu DOS-u 3.3 używanego na [http://en.wikipedia.org/wiki/Apple_II Apple II]. Format OS/A+ v.4.1 jako jedyny na ośmiobitowym Atari pozwala na nadawanie plikom długich nazw, ponad standardowe 8+3. |
== Cechy ogólne == | == Cechy ogólne == | ||
- | * Dopuszczalne wielkości sektorów: 256 bajtów | + | * Dopuszczalne wielkości sektorów: 128, 256 i 512 bajtów |
- | * Maksymalna pojemność filesystemu: 65535 sektorów (16 MB) | + | * Maksymalna pojemność filesystemu: 65535 sektorów (16 i 32 MB) |
- | * Maksymalna wielkość pliku: 16 MB | + | * Maksymalna wielkość pliku: 65536 sektorów (16 i 32 MB) |
- | * Maksymalna liczba plików na dysku: 105 | + | * Maksymalna liczba plików na dysku: nieograniczona |
* Struktura katalogowa: jednopoziomowa | * Struktura katalogowa: jednopoziomowa | ||
- | * Maksymalna liczba plików w katalogu: 105 | + | * Maksymalna liczba plików w katalogu: nieograniczona |
+ | * Wielkość wpisu w katalogu: 35 bajtów | ||
* Nazwa pliku: do 30 znaków | * Nazwa pliku: do 30 znaków | ||
* Metoda linkowania plików: indywidualne mapy plików | * Metoda linkowania plików: indywidualne mapy plików | ||
Linia 15: | Linia 16: | ||
== Struktura ogólna == | == Struktura ogólna == | ||
- | Obsługiwana jest wyłącznie gęstość podwójna ([[DD]]). Jednostką alokacji jest pojedyńczy sektor fizyczny o wielkości 256 bajtów. Sektor nr 360 ($168) jest zajęty na [[VTOC]], w sektorach 361-375 ($0169-$0177) znajduje się normalnie katalog dyskietki. W sektorach 1-2 jest program ładujący DOS, a sektory 3-7 są zarezerwowane. Początkowa pojemność dyskietki DD to 697 wolnych sektorów z ogólnej liczby 720. | + | Obsługiwana jest gęstość pojedyńcza ([[SD]]) i podwójna ([[DD]]). Jednostką alokacji jest pojedyńczy sektor fizyczny o wielkości 256 lub 512 bajtów, albo (gdy sektor ma 128 bajtów) klaster o wielkości 256 bajtów. W dalszej części tekstu ta jednostka alokacji nazywana będzie "sektorem". |
- | == VTOC == | + | Sektor nr 360 ($168) jest zajęty na [[VTOC]], w sektorach 361-375 ($0169-$0177) znajduje się normalnie katalog dyskietki. W sektorach 1-2 jest program ładujący DOS, a sektory 3-7 są zarezerwowane. Początkowa pojemność dyskietki DD to 697 wolnych sektorów z ogólnej liczby 720. |
- | Pierwszy bajt VTOC zajmuje numer wersji formatu dyskietki, jest to $02. Dwa dalsze bajty to zapisany w konwencji starszy/młodszy (!) numer pierwszego sektora katalogu (a więc VTOC może teoretycznie zająć ponad 1 sektor). Dalej idzie 36 zer, następnie bajt o nieznanym znaczeniu i wartości $7A (może znacznik formatu), dalej znowu 15 zer, a potem $01. | + | Na Apple II DOS do adresowania pliku używa dwubajtowych wartości opisujących fizyczne położenie sektora na dyskietce: pierwszy bajt jest numerem ścieżki, drugi numerem sektora na ścieżce. Na Atari używa się numerów sektorów logicznych, np. na dyskietce [[DD]] z zakresu od 1 do 720, bez względu na strukturę dyskietki (dyskietka może mieć 40 ścieżek po 18 sektorów, 20 po 36 lub 80 po 9 - dla DOS-u liczy się tylko sektor logiczny, np. nr 500, i obojętne jest, na której ścieżce wypada). |
- | Od bajtu 56 ($38) rozciąga się mapa bitowa dyskietki. Każdy bajt opisuje stan ośmiu kolejnych sektorów, przy czym bit ustawiony oznacza sektor wolny, a bit skasowany - sektor zajęty. Bity przypisywane są od lewej do prawej sektorom o rosnących numerach, a więc jeśli bit 7 bajtu opisuje stan sektora numer 'n', to bit 6 odpowiada za sektor 'n+1', bit 5 za 'n+2' itd. | + | Niemniej format Apple II DOS wymaga zapisywania adresów sektorów w wyżej wspomnianej postaci numeru ścieżki i numeru sektora na ścieżkę. W OS/A+ v.4.1 przyjęto więc, iż "ścieżka logiczna" dyskietki Atari liczy 256 sektorów. Ma to ten skutek, że w miejscach, gdzie w Apple II mamy adresy fizyczne sektorów, na Atari są ich adresy logiczne, jedynie zapisane w nietypowej kolejności: najpierw starszy bajt, potem młodszy. |
- | Pierwszy bajt mapy opisuje stan sektorów o numerach od 0 do 7 (pomimo że sektor 0 nie istnieje). Na pustej dyskietce jego wartość to $00, co oznacza, że z grupy sektorów 0-7 wszystkie są zajęte. Ostatni sektor dyskietki DD ma przypisany bit 7 bajtu nr 146 VTOC i jest oznaczony jako wolny. | + | == VTOC == |
+ | |||
+ | <table border = 1 cellpadding = 5> | ||
+ | <tr><td><b>Offset</b></td><td><b>Opis</b></td></tr> | ||
+ | <tr><td>$00</td><td> | ||
+ | <p>Bajt "nieużywany" o wartości $02.</p></td></tr> | ||
+ | <tr><td>$01-$02</td><td> | ||
+ | <p>Zapisany w konwencji starszy/młodszy (!) numer pierwszego sektora katalogu.</p></td></tr> | ||
+ | <tr><td>$03</td><td><p>Numer wersji DOS-u użytego do sformatowania tego dysku (na Atari zawsze $00).</p></td></tr> | ||
+ | <tr><td>$04-$05</td><td><p>Słowo zarezerwowane o wartości $0000.</p></td></tr> | ||
+ | <tr><td>$06</td><td><p>Numer dyskietki (na Apple II z zakresu 1-254, na Atari zawsze 0).</p></td></tr> | ||
+ | <tr><td>$07-$26</td><td><p>32 bajty zarezerwowane o wartości $00.</p></td></tr> | ||
+ | <tr><td>$27</td><td><p>Liczba wpisów w jednym sektorze mapy plików: 122 dla sektorów 256-bajtowych i 244 dla sektorów 512-bajtowych (taką liczbę - $F4 - podaje oryginalna dokumentacja, jednak może to być błąd typograficzny, być może powinno być $FA, czyli 250).</p></td></tr> | ||
+ | <tr><td>$28-$2F</td><td><p>8 bajtów zarezerwowanych o wartości $00.</p></td></tr> | ||
+ | <tr><td>$30</td><td><p>Apple II: numer ostatniej ścieżki gdzie są zajęte sektory. Atari: nieużywane, zawsze 0.</p></td></tr> | ||
+ | <tr><td>$31</td><td><p>Apple II: kierunek alokacji ścieżek (1 lub -1). Atari: nieużywane, zawsze 0.</p></td></tr> | ||
+ | <tr><td>$32-$33</td><td><p>2 bajty zarezerwowane o wartości $00.</p></td></tr> | ||
+ | <tr><td>$34</td><td><p>Liczba ścieżek na dyskietce (na Apple II 35, na Atari 0).</p></td></tr> | ||
+ | <tr><td>$35</td><td><p>Liczba sektorów na ścieżkę (na Apple II 13 lub 16, na Atari 0).</p></td></tr> | ||
+ | <tr><td>$36-$37</td><td><p>Wielkość sektora w bajtach (młodszy/starszy).</p></td></tr> | ||
+ | <tr><td>$38-...</td><td><p>Mapa bitowa dyskietki. Każdy bajt opisuje stan ośmiu kolejnych sektorów, przy czym bit ustawiony oznacza sektor wolny, a bit skasowany - sektor zajęty. Bity przypisywane są od lewej do prawej sektorom o rosnących numerach, a więc jeśli bit 7 bajtu opisuje stan sektora numer 'n', to bit 6 odpowiada za sektor 'n+1', bit 5 za 'n+2' itd.</p><p>Pierwszy bajt mapy opisuje stan sektorów o numerach od 0 do 7 (pomimo że sektor 0 nie istnieje). Na pustej dyskietce jego wartość to $00, co oznacza, że z grupy sektorów 0-7 wszystkie są zajęte. Ostatni sektor dyskietki DD ma przypisany bit 7 bajtu nr 146 VTOC i jest oznaczony jako wolny. | ||
+ | </p></td></tr> | ||
+ | </table> | ||
== Katalog == | == Katalog == | ||
- | Katalog zajmuje piętnaście sektorów począwszy od sektora, którego numer zapisany jest w drugim i trzecim bajcie VTOC. Normalnie pierwszym sektorem katalogu jest sektor 361 ($0169). Pierwsze 11 bajtów każdego sektora katalogu rezerwuje DOS na swoje potrzeby: offset 1-2 to numer następnego sektora katalogu zapisany w konwencji starszy/młodszy (podobnie jak we VTOC) - w ostatnim sektorze katalogu jest tu zero. Znaczenie pozostałych bajtów jest nieznane - mają one zawsze wartość $00 poza tym. | + | Katalog zajmuje piętnaście sektorów począwszy od sektora, którego numer zapisany jest w drugim i trzecim bajcie VTOC. Normalnie pierwszym sektorem katalogu jest sektor 361 ($0169). Pierwsze 11 bajtów każdego sektora katalogu rezerwuje DOS na swoje potrzeby: |
- | Za tym nagłówkiem sektora katalogu zaczynają się wpisy plików. Pojedyńczy wpis ma 35 bajtów długości, w jednym sektorze mieści się ich siedem. Strukturę wpisu przedstawia tabelka: | + | <table border = 1 cellpadding = 5> |
+ | <tr><td><b>Offset</b></td><td><b>Opis</b></td></tr> | ||
+ | <tr><td>$00</td><td> | ||
+ | <p>Bajt zarezerwowany o wartości $00.</p></td></tr> | ||
+ | <tr><td>$01-$02</td><td> | ||
+ | <p>Numer następnego sektora katalogu (starszy/młodszy!).</p></td></tr> | ||
+ | <tr><td>$03-$0A</td><td><p>Bajty zarezerwowane.</p></td></tr> | ||
+ | </table> | ||
+ | |||
+ | Za tym nagłówkiem sektora katalogu zaczynają się wpisy plików. Pojedyńczy wpis ma 35 bajtów długości, w jednym sektorze 256-bajtowym mieści się ich siedem, a w 512-bajtowym - czternaście. Strukturę wpisu przedstawia tabelka: | ||
<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> | <tr><td>$00-$01</td><td> | ||
- | <p>Numer pierwszego sektora mapy sektorów pliku (starszy/młodszy). Jeśli plik jest skasowany, oba bajty są wyzerowane (uniemożliwia to odzyskanie skasowanego zbioru).</p> | + | <p>Numer pierwszego sektora mapy sektorów pliku (starszy/młodszy). Jeśli plik jest skasowany, oba bajty są wyzerowane (uniemożliwia to odzyskanie skasowanego zbioru).</p></td></tr> |
- | </tr></td> | + | |
<tr><td>$02</td><td> | <tr><td>$02</td><td> | ||
- | <p>Bajt statusu:</p> | + | <p>Status (typ) pliku:</p> |
* bit 7 = 1 - plik zabezpieczony | * bit 7 = 1 - plik zabezpieczony | ||
- | <p>Pozostałe bity są zawsze wyzerowane.</p> | + | * bity 4-6 - ''file blocking factor'', z zakresu od 0 do 7. |
+ | * bity 0-3 - typ pliku: na Atari zawsze $00. | ||
+ | <p>Na Atari typ pliku jest zawsze $00, natomiast na Apple II rozróżnia się następujące typy:</p> | ||
+ | * $00 - plik tekstowy | ||
+ | * $01 - plik INTEGER BASIC | ||
+ | * $02 - plik AppleSoft BASIC | ||
+ | * $04 - plik binarny | ||
</td></tr> | </td></tr> | ||
<tr><td>$03-$20</td><td> | <tr><td>$03-$20</td><td> | ||
- | <p>Nazwa pliku. Wszystkie znaki mają ustawiony bit 7 (inverse video). Spacje są niedopuszczalne.</p> | + | <p>Nazwa pliku dosunięta w lewo i dopełniona spacjami do 30 znaków. Wszystkie znaki nazwy (całe 30 bajtów) mają ustawiony bit 7 ([[inverse video]]). Spacje, przecinki, znaki EOL i zera nie mogą występować w nazwach plików.</p> |
</td></tr> | </td></tr> | ||
- | <tr><td>$21-$22</td><td><p>Wielkość pliku w sektorach (młodszy/starszy). Dokładna wielkość pliku ani liczba bajtów w ostatnim sektorze danych pliku '''nie jest nigdzie zapisana''' (!).</p></td></tr> | + | <tr><td>$21-$22</td><td><p>Wielkość pliku w sektorach (młodszy/starszy). Dokładna wielkość pliku ani liczba bajtów w ostatnim sektorze danych pliku '''nie jest nigdzie zapisana''' (!), a wobec tego odnalezienie końca pliku przed końcem sektora jest niemożliwe w OS/A+ 4.1.</p> |
+ | <p>Na Apple II używa się do tego celu metody odpowiedniej dla typu pliku wykazanego w katalogu - pliki tekstowe zawierają znacznik EOF w postaci sekwencji znaków ASCII o wartościach $8D i $00 (ten pierwszy to EOL w Apple), natomiast pozostałe typy plików mają długość zapisaną w nagłówku.</p></td></tr> | ||
</table> | </table> | ||
== Mapy plików == | == Mapy plików == | ||
- | Podobnie jak w [[format SpartaDOS|systemie plików SpartaDOS]] i [[format DOS XE|DOS XE]] ciągłość plików uzyskana jest przy użyciu map sektorów. Pierwszy sektor mapy wskazywany jest przez wpis katalogowy pliku. W tym sektorze pierwsze 12 bajtów jest zajęte przez DOS, z czego dwa bajty o numerach 1 i 2 zawierają numer następnego sektora mapy zapisany w konwencji starszy/młodszy, przy czym ostatni sektor mapy ma tu zero. Pozostałe 10 bajtów jest zawsze wyzerowane i nie wiadomo do czego służy. | + | Podobnie jak w [[format SpartaDOS|systemie plików SpartaDOS]] i [[format AtariDOS XE|DOS XE]] ciągłość plików zapewniają mapy sektorów. Pierwszy sektor mapy wskazywany jest przez wpis katalogowy pliku. W tym sektorze pierwsze 12 bajtów jest zajęte przez DOS: |
+ | |||
+ | <table border = 1 cellpadding = 5> | ||
+ | <tr><td><b>Offset</b></td><td><b>Opis</b></td></tr> | ||
+ | <tr><td>$00</td><td><p>Bajt zarezerwowany o wartości $00.</p></td></tr> | ||
+ | <tr><td>$01-$02</td><td><p>Numer następnego sektora mapy (starszy/młodszy!).</p></td></tr> | ||
+ | <tr><td>$03-$04</td><td><p>Bajty zarezerwowane o wartości $00</p></td></tr> | ||
+ | <tr><td>$05-$06</td><td><p>Numer (logiczny) pierwszego sektora pliku zapisanego w tym sektorze mapy (na Atari zawsze $0000).</p></td></tr> | ||
+ | <tr><td>$07-$0B</td><td><p>Bajty zarezerwowane o wartości $00</p></td></tr> | ||
+ | </table> | ||
+ | |||
+ | Od bajtu o offsecie $0C idą kolejno dwubajtowe numery ''bloków'' pliku zapisane w konwencji starszy/młodszy. O tym, czym jest blok, decyduje zapisany w katalogu (zob. wyżej) ''file blocking factor''. Jeśli jest on równy zero, wtedy blok jest równy sektorowi fizycznemu dysku. Jeśli jest równy jeden, blok stanowi osiem fizycznych sektorów dysku, a jeśli 2 - szesnaście takowych. | ||
- | Od bajtu o offsecie $0C idą kolejno dwubajtowe numery sektorów pliku zapisane w konwencji starszy/młodszy. | + | ==Uwagi== |
+ | Odrębność metod linkowania plików i katalogów, a także fakt używania sektora lub klastra 256-bajtowego jako najmniejszej jednostki alokacji, może wskazywać na pokrewieństwo z późniejszym i doskonalszym [[format AtariDOS XE|filesystemem DOS-u XE]]. | ||
==Zobacz też== | ==Zobacz też== | ||
* [[Formaty systemów plików]] | * [[Formaty systemów plików]] | ||
+ | * [http://atariwiki.strotmann.de/xwiki/bin/view/APG/OSSAPlus4 Fragment instrukcji OS/A+ poświęcony systemowi plików w wersji 4] | ||
[[Kategoria:Atari 8-bit]] | [[Kategoria:Atari 8-bit]] |
Aktualna wersja
Format dyskietki zaimplementowany w OS/A+ v.4.1. Jest to w zasadzie implementacja formatu DOS-u 3.3 używanego na Apple II. Format OS/A+ v.4.1 jako jedyny na ośmiobitowym Atari pozwala na nadawanie plikom długich nazw, ponad standardowe 8+3.
Spis treści |
Cechy ogólne
- Dopuszczalne wielkości sektorów: 128, 256 i 512 bajtów
- Maksymalna pojemność filesystemu: 65535 sektorów (16 i 32 MB)
- Maksymalna wielkość pliku: 65536 sektorów (16 i 32 MB)
- Maksymalna liczba plików na dysku: nieograniczona
- Struktura katalogowa: jednopoziomowa
- Maksymalna liczba plików w katalogu: nieograniczona
- Wielkość wpisu w katalogu: 35 bajtów
- Nazwa pliku: do 30 znaków
- Metoda linkowania plików: indywidualne mapy plików
- Metoda alokacji sektorów: mapa bitowa
Struktura ogólna
Obsługiwana jest gęstość pojedyńcza (SD) i podwójna (DD). Jednostką alokacji jest pojedyńczy sektor fizyczny o wielkości 256 lub 512 bajtów, albo (gdy sektor ma 128 bajtów) klaster o wielkości 256 bajtów. W dalszej części tekstu ta jednostka alokacji nazywana będzie "sektorem".
Sektor nr 360 ($168) jest zajęty na VTOC, w sektorach 361-375 ($0169-$0177) znajduje się normalnie katalog dyskietki. W sektorach 1-2 jest program ładujący DOS, a sektory 3-7 są zarezerwowane. Początkowa pojemność dyskietki DD to 697 wolnych sektorów z ogólnej liczby 720.
Na Apple II DOS do adresowania pliku używa dwubajtowych wartości opisujących fizyczne położenie sektora na dyskietce: pierwszy bajt jest numerem ścieżki, drugi numerem sektora na ścieżce. Na Atari używa się numerów sektorów logicznych, np. na dyskietce DD z zakresu od 1 do 720, bez względu na strukturę dyskietki (dyskietka może mieć 40 ścieżek po 18 sektorów, 20 po 36 lub 80 po 9 - dla DOS-u liczy się tylko sektor logiczny, np. nr 500, i obojętne jest, na której ścieżce wypada).
Niemniej format Apple II DOS wymaga zapisywania adresów sektorów w wyżej wspomnianej postaci numeru ścieżki i numeru sektora na ścieżkę. W OS/A+ v.4.1 przyjęto więc, iż "ścieżka logiczna" dyskietki Atari liczy 256 sektorów. Ma to ten skutek, że w miejscach, gdzie w Apple II mamy adresy fizyczne sektorów, na Atari są ich adresy logiczne, jedynie zapisane w nietypowej kolejności: najpierw starszy bajt, potem młodszy.
VTOC
Offset | Opis |
$00 |
Bajt "nieużywany" o wartości $02. |
$01-$02 |
Zapisany w konwencji starszy/młodszy (!) numer pierwszego sektora katalogu. |
$03 | Numer wersji DOS-u użytego do sformatowania tego dysku (na Atari zawsze $00). |
$04-$05 | Słowo zarezerwowane o wartości $0000. |
$06 | Numer dyskietki (na Apple II z zakresu 1-254, na Atari zawsze 0). |
$07-$26 | 32 bajty zarezerwowane o wartości $00. |
$27 | Liczba wpisów w jednym sektorze mapy plików: 122 dla sektorów 256-bajtowych i 244 dla sektorów 512-bajtowych (taką liczbę - $F4 - podaje oryginalna dokumentacja, jednak może to być błąd typograficzny, być może powinno być $FA, czyli 250). |
$28-$2F | 8 bajtów zarezerwowanych o wartości $00. |
$30 | Apple II: numer ostatniej ścieżki gdzie są zajęte sektory. Atari: nieużywane, zawsze 0. |
$31 | Apple II: kierunek alokacji ścieżek (1 lub -1). Atari: nieużywane, zawsze 0. |
$32-$33 | 2 bajty zarezerwowane o wartości $00. |
$34 | Liczba ścieżek na dyskietce (na Apple II 35, na Atari 0). |
$35 | Liczba sektorów na ścieżkę (na Apple II 13 lub 16, na Atari 0). |
$36-$37 | Wielkość sektora w bajtach (młodszy/starszy). |
$38-... | Mapa bitowa dyskietki. Każdy bajt opisuje stan ośmiu kolejnych sektorów, przy czym bit ustawiony oznacza sektor wolny, a bit skasowany - sektor zajęty. Bity przypisywane są od lewej do prawej sektorom o rosnących numerach, a więc jeśli bit 7 bajtu opisuje stan sektora numer 'n', to bit 6 odpowiada za sektor 'n+1', bit 5 za 'n+2' itd. Pierwszy bajt mapy opisuje stan sektorów o numerach od 0 do 7 (pomimo że sektor 0 nie istnieje). Na pustej dyskietce jego wartość to $00, co oznacza, że z grupy sektorów 0-7 wszystkie są zajęte. Ostatni sektor dyskietki DD ma przypisany bit 7 bajtu nr 146 VTOC i jest oznaczony jako wolny. |
Katalog
Katalog zajmuje piętnaście sektorów począwszy od sektora, którego numer zapisany jest w drugim i trzecim bajcie VTOC. Normalnie pierwszym sektorem katalogu jest sektor 361 ($0169). Pierwsze 11 bajtów każdego sektora katalogu rezerwuje DOS na swoje potrzeby:
Offset | Opis |
$00 |
Bajt zarezerwowany o wartości $00. |
$01-$02 |
Numer następnego sektora katalogu (starszy/młodszy!). |
$03-$0A | Bajty zarezerwowane. |
Za tym nagłówkiem sektora katalogu zaczynają się wpisy plików. Pojedyńczy wpis ma 35 bajtów długości, w jednym sektorze 256-bajtowym mieści się ich siedem, a w 512-bajtowym - czternaście. Strukturę wpisu przedstawia tabelka:
Offset | Opis |
$00-$01 |
Numer pierwszego sektora mapy sektorów pliku (starszy/młodszy). Jeśli plik jest skasowany, oba bajty są wyzerowane (uniemożliwia to odzyskanie skasowanego zbioru). |
$02 |
Status (typ) pliku:
Na Atari typ pliku jest zawsze $00, natomiast na Apple II rozróżnia się następujące typy:
|
$03-$20 |
Nazwa pliku dosunięta w lewo i dopełniona spacjami do 30 znaków. Wszystkie znaki nazwy (całe 30 bajtów) mają ustawiony bit 7 (inverse video). Spacje, przecinki, znaki EOL i zera nie mogą występować w nazwach plików. |
$21-$22 | Wielkość pliku w sektorach (młodszy/starszy). Dokładna wielkość pliku ani liczba bajtów w ostatnim sektorze danych pliku nie jest nigdzie zapisana (!), a wobec tego odnalezienie końca pliku przed końcem sektora jest niemożliwe w OS/A+ 4.1. Na Apple II używa się do tego celu metody odpowiedniej dla typu pliku wykazanego w katalogu - pliki tekstowe zawierają znacznik EOF w postaci sekwencji znaków ASCII o wartościach $8D i $00 (ten pierwszy to EOL w Apple), natomiast pozostałe typy plików mają długość zapisaną w nagłówku. |
Mapy plików
Podobnie jak w systemie plików SpartaDOS i DOS XE ciągłość plików zapewniają mapy sektorów. Pierwszy sektor mapy wskazywany jest przez wpis katalogowy pliku. W tym sektorze pierwsze 12 bajtów jest zajęte przez DOS:
Offset | Opis |
$00 | Bajt zarezerwowany o wartości $00. |
$01-$02 | Numer następnego sektora mapy (starszy/młodszy!). |
$03-$04 | Bajty zarezerwowane o wartości $00 |
$05-$06 | Numer (logiczny) pierwszego sektora pliku zapisanego w tym sektorze mapy (na Atari zawsze $0000). |
$07-$0B | Bajty zarezerwowane o wartości $00 |
Od bajtu o offsecie $0C idą kolejno dwubajtowe numery bloków pliku zapisane w konwencji starszy/młodszy. O tym, czym jest blok, decyduje zapisany w katalogu (zob. wyżej) file blocking factor. Jeśli jest on równy zero, wtedy blok jest równy sektorowi fizycznemu dysku. Jeśli jest równy jeden, blok stanowi osiem fizycznych sektorów dysku, a jeśli 2 - szesnaście takowych.
Uwagi
Odrębność metod linkowania plików i katalogów, a także fakt używania sektora lub klastra 256-bajtowego jako najmniejszej jednostki alokacji, może wskazywać na pokrewieństwo z późniejszym i doskonalszym filesystemem DOS-u XE.