Format MasterDOS
From Atariki
Wersja z dnia 16:03, 8 paź 2008 KMK (Dyskusja | wkład) (wklejenie tu) ← Previous diff |
Aktualna wersja KMK (Dyskusja | wkład) (dr. red.) |
||
Linia 1: | Linia 1: | ||
- | System plików pomysłu [[Fox]]a zastosowany w [[MasterDOS]]ie. | + | System plików pomysłu [[Fox]]a zastosowany w [[MasterDOS]]-ie. |
+ | |||
+ | Obsługiwane są tylko dyskietki 360 KB. Po sformatowaniu dyskietki z systemem plików MasterDOS jest na niej 1419 wolnych sektorów po 256 bajtów. | ||
- | Obsługiwane są tylko dyskietki 360 kB. Po sformatowaniu dyskietki z systemem plików MasterDOS jest 1419 wolnych sektorów po pełne 256 bajtów. | ||
Struktura systemu plików: | Struktura systemu plików: | ||
- | * sektory 1-3 - boot sectors | + | |
+ | * sektory 1-3 - sektory odczytu wstępnego | ||
* sektory 4-9 - tabela sektorów | * sektory 4-9 - tabela sektorów | ||
* sektory 10-21 - katalog | * sektory 10-21 - katalog | ||
* sektory 22-1440 - przeznaczone na pliki | * sektory 22-1440 - przeznaczone na pliki | ||
- | == Boot sectors == | + | == Sektory odczytu wstępnego == |
+ | |||
+ | W tych sektorach znajdują się części [[DOS]]-a, między innymi odpowiedzialne za jego wczytanie. | ||
+ | |||
+ | W odróżnieniu od innych DOS-ów Atari, w tych sektorach zapisane jest po 256 bajtów (a nie tylko początkowe 128). Algorytm wczytania DOS-a jest następujący: | ||
- | W tych sektorach znajdują się fragmenty DOSa, między innymi odpowiedzialne za jego wczytanie. | ||
- | W odróżnieniu od innych DOSów Atari, w tych sektorach zapisane jest po 256 bajtów (a nie tylko początkowe 128). | ||
- | Algorytm wczytania DOSa jest następujący: | ||
* wczytywane jest początkowe 128 bajtów sektora 1 i uruchamiany kod w nich zawarty | * wczytywane jest początkowe 128 bajtów sektora 1 i uruchamiany kod w nich zawarty | ||
* kod ten wczytuje sektory 1-3 (całe, po 256 bajtów) | * kod ten wczytuje sektory 1-3 (całe, po 256 bajtów) | ||
Linia 20: | Linia 23: | ||
== Tabela sektorów == | == Tabela sektorów == | ||
- | Tabela sektorów zawiera informacje o położeniu plików i wolnych sektorów na całej dyskietce. | + | Tabela sektorów zawiera informacje o położeniu plików i wolnych sektorów na całej dyskietce. Tabela zajmuje 6 sektorów, czyli 1536 bajtów i jest wczytywana zawsze w całości w obszar pamięci $0800-$0DFF. |
- | Tabela zajmuje 6 sektorów, czyli 1536 bajtów i jest wczytywana zawsze w całości w obszar pamięci $0800-$0dff. | + | |
Struktura tabeli: | Struktura tabeli: | ||
+ | |||
* bajty 0-4 zawierają napis "MSDOS" w ASCII | * bajty 0-4 zawierają napis "MSDOS" w ASCII | ||
* bajty 5-21 zawierają 255, odpowiadając sektorom zajętym przez tabelę sektorów i katalog | * bajty 5-21 zawierają 255, odpowiadając sektorom zajętym przez tabelę sektorów i katalog | ||
* bajty 22-1440 zawierają informacje o poszczególnych sektorach dostępnych dla plików | * bajty 22-1440 zawierają informacje o poszczególnych sektorach dostępnych dla plików | ||
- | * bajty 1441-1535 zawierają 255 lub 254 (w zależności od wersji MasterDOSa), dodatkowo MasterDOS 1.5 pozwala na zapisanie etykiety dysku w bajtach 1441-1478, zakończonej znakiem EOL (155) | + | * bajty 1441-1535 zawierają 255 lub 254 (w zależności od wersji MasterDOS-a), dodatkowo MasterDOS 1.5 pozwala na zapisanie etykiety dysku w bajtach 1441-1478, zakończonej znakiem EOL (155) |
Informacja o sektorach dostępnych dla plików jest następująca: | Informacja o sektorach dostępnych dla plików jest następująca: | ||
+ | |||
* bajt o wartości 0 - sektor jest wolny | * bajt o wartości 0 - sektor jest wolny | ||
* bajt o wartości 1-252 - sektor należy do pliku wpisanego w katalogu na danej pozycji | * bajt o wartości 1-252 - sektor należy do pliku wpisanego w katalogu na danej pozycji | ||
Linia 34: | Linia 39: | ||
Pliki są zapisywane zawsze w kolejności rosnących sektorów. | Pliki są zapisywane zawsze w kolejności rosnących sektorów. | ||
- | Usunięcie pliku (w tym związane z nadpisaniem istniejącego pliku) nie wymaga odczytania wszystkich | + | |
- | sektorów należących do pliku, w związku z czym jest dużo szybsze, niż w przypadku systemu plików Atari DOS. | + | Usunięcie pliku (w tym związane z nadpisaniem istniejącego pliku) nie wymaga odczytania wszystkich sektorów należących do pliku, w związku z czym jest dużo szybsze, niż w przypadku systemu plików Atari DOS. |
== Katalog == | == Katalog == | ||
- | Każdy wpis w katalogu zajmuje 12 bajtów. Sektor katalogu zawiera 21 takich wpisów, | + | Każdy wpis w katalogu zajmuje 12 bajtów. Sektor katalogu zawiera 21 takich wpisów, co daje 252 bajty - ostatnie 4 bajty zawierają wartości 255, a w ostatnim sektorze katalogu (sektor 21 na dyskietce) - 254. 12 sektorów katalogu pozwala na wpisanie 252 plików (dla porównania standardowy format Atari DOS ma ograniczenie do 64 plików w katalogu). |
- | co daje 252 bajty - ostatnie 4 bajty zawierają 255, a w ostatnim sektorze katalogu (sektor 21 na dyskietce) 254. | + | |
- | 12 sektorów katalogu pozwala na wpisanie 252 plików (dla porównania standardowy format Atari DOS | + | |
- | ma ograniczenie do 64 plików w katalogu). | + | |
Struktura wpisu: | Struktura wpisu: | ||
+ | |||
* bajty 0-7 - bity 0-6 zawierają podstawową nazwę pliku (kody ASCII), bity 7 kodują 8 najmniej znaczących bitów długości pliku (pierwszy bajt zawiera bit 7, drugi bit 6 itd.) | * bajty 0-7 - bity 0-6 zawierają podstawową nazwę pliku (kody ASCII), bity 7 kodują 8 najmniej znaczących bitów długości pliku (pierwszy bajt zawiera bit 7, drugi bit 6 itd.) | ||
* bajty 8-10 - zawierają rozszerzenie nazwy pliku (kody ASCII) | * bajty 8-10 - zawierają rozszerzenie nazwy pliku (kody ASCII) | ||
- | * bajt 11 - 0 oznacza brak pliku (wpis nieużywany jeśli bajt 0 równy 0 lub plik usunięty w przeciwnym przypadku), 255 oznacza plik w katalogu głównym dysku | + | * bajt 11 - 0 oznacza brak pliku (wpis nieużywany, jeśli bajt 0 równy 0 lub plik usunięty w przeciwnym przypadku), 255 oznacza plik w katalogu głównym dysku |
Podstawowa nazwa krótsza od 8 znaków i rozszerzenie krótsze od 3 znaków są dopełniane spacjami. | Podstawowa nazwa krótsza od 8 znaków i rozszerzenie krótsze od 3 znaków są dopełniane spacjami. | ||
- | Struktura katalogu przewidywała możliwość używania podkatalogów. | + | Struktura katalogu przewidywała możliwość używania podkatalogów. Informacje o wszystkich plikach i katalogach byłyby składowane niezmiennie w sektorach 10-21. Podkatalog byłby rozróżniany od pliku przez ustawienie bitu 7 w bajcie 8 wpisu w katalogu. Znając numer wpisu podkatalogu w katalogu (liczba od 1 do 252), można znaleźć odpowiadające mu wpisy (pliki lub podkatalogi) przez sprawdzenie bajtu 11 (wartość od 1 do 252 oznaczałaby wpis należący do określonego podkatalogu). |
- | Informacje o wszystkich plikach i katalogach byłyby składowane niezmiennie w sektorach 10-21. | + | |
- | Podkatalog byłby rozróżniany od pliku przez ustawienie bitu 7 w bajcie 8 wpisu w katalogu. | + | |
- | Znając numer wpisu podkatalogu w katalogu (liczba od 1 do 252), można znaleźć odpowiadające mu wpisy | + | |
- | (pliki lub podkatalogi) przez sprawdzenie bajtu 11 | + | |
- | (wartość od 1 do 252 oznaczałaby wpis należący do określonego podkatalogu). | + | |
Obsługa podkatalogów nie została jednak nigdy zaimplementowana w MasterDOS. | Obsługa podkatalogów nie została jednak nigdy zaimplementowana w MasterDOS. | ||
[[Kategoria:Atari 8-bit]] | [[Kategoria:Atari 8-bit]] |
Aktualna wersja
System plików pomysłu Foxa zastosowany w MasterDOS-ie.
Obsługiwane są tylko dyskietki 360 KB. Po sformatowaniu dyskietki z systemem plików MasterDOS jest na niej 1419 wolnych sektorów po 256 bajtów.
Struktura systemu plików:
- sektory 1-3 - sektory odczytu wstępnego
- sektory 4-9 - tabela sektorów
- sektory 10-21 - katalog
- sektory 22-1440 - przeznaczone na pliki
Sektory odczytu wstępnego
W tych sektorach znajdują się części DOS-a, między innymi odpowiedzialne za jego wczytanie.
W odróżnieniu od innych DOS-ów Atari, w tych sektorach zapisane jest po 256 bajtów (a nie tylko początkowe 128). Algorytm wczytania DOS-a jest następujący:
- wczytywane jest początkowe 128 bajtów sektora 1 i uruchamiany kod w nich zawarty
- kod ten wczytuje sektory 1-3 (całe, po 256 bajtów)
- odczytywana jest tabela sektorów oraz odszukiwany plik MSDOS.SYS w katalogu
- plik MSDOS.SYS jest wczytywany i uruchamiany
Tabela sektorów
Tabela sektorów zawiera informacje o położeniu plików i wolnych sektorów na całej dyskietce. Tabela zajmuje 6 sektorów, czyli 1536 bajtów i jest wczytywana zawsze w całości w obszar pamięci $0800-$0DFF.
Struktura tabeli:
- bajty 0-4 zawierają napis "MSDOS" w ASCII
- bajty 5-21 zawierają 255, odpowiadając sektorom zajętym przez tabelę sektorów i katalog
- bajty 22-1440 zawierają informacje o poszczególnych sektorach dostępnych dla plików
- bajty 1441-1535 zawierają 255 lub 254 (w zależności od wersji MasterDOS-a), dodatkowo MasterDOS 1.5 pozwala na zapisanie etykiety dysku w bajtach 1441-1478, zakończonej znakiem EOL (155)
Informacja o sektorach dostępnych dla plików jest następująca:
- bajt o wartości 0 - sektor jest wolny
- bajt o wartości 1-252 - sektor należy do pliku wpisanego w katalogu na danej pozycji
- bajt o wartości 253 - sektor uszkodzony
Pliki są zapisywane zawsze w kolejności rosnących sektorów.
Usunięcie pliku (w tym związane z nadpisaniem istniejącego pliku) nie wymaga odczytania wszystkich sektorów należących do pliku, w związku z czym jest dużo szybsze, niż w przypadku systemu plików Atari DOS.
Katalog
Każdy wpis w katalogu zajmuje 12 bajtów. Sektor katalogu zawiera 21 takich wpisów, co daje 252 bajty - ostatnie 4 bajty zawierają wartości 255, a w ostatnim sektorze katalogu (sektor 21 na dyskietce) - 254. 12 sektorów katalogu pozwala na wpisanie 252 plików (dla porównania standardowy format Atari DOS ma ograniczenie do 64 plików w katalogu).
Struktura wpisu:
- bajty 0-7 - bity 0-6 zawierają podstawową nazwę pliku (kody ASCII), bity 7 kodują 8 najmniej znaczących bitów długości pliku (pierwszy bajt zawiera bit 7, drugi bit 6 itd.)
- bajty 8-10 - zawierają rozszerzenie nazwy pliku (kody ASCII)
- bajt 11 - 0 oznacza brak pliku (wpis nieużywany, jeśli bajt 0 równy 0 lub plik usunięty w przeciwnym przypadku), 255 oznacza plik w katalogu głównym dysku
Podstawowa nazwa krótsza od 8 znaków i rozszerzenie krótsze od 3 znaków są dopełniane spacjami.
Struktura katalogu przewidywała możliwość używania podkatalogów. Informacje o wszystkich plikach i katalogach byłyby składowane niezmiennie w sektorach 10-21. Podkatalog byłby rozróżniany od pliku przez ustawienie bitu 7 w bajcie 8 wpisu w katalogu. Znając numer wpisu podkatalogu w katalogu (liczba od 1 do 252), można znaleźć odpowiadające mu wpisy (pliki lub podkatalogi) przez sprawdzenie bajtu 11 (wartość od 1 do 252 oznaczałaby wpis należący do określonego podkatalogu).
Obsługa podkatalogów nie została jednak nigdy zaimplementowana w MasterDOS.