Tajemnice ATARI

DYSKOWE SYSTEMY OPERACYJNE
część druga

    Zgodnie z obietnicą zawartą w pierwszym odcinku niniejszego cyklu ten artykuł poświęcony jest w całości dyskietce: jej budowie, organizacji wewnętrznej, itp.

   Dyskietka jest krążkiem elastycznym pokrytym cienką warstwą magnetyczną. Krążek ten jest zapakowany w odpowiednią "oprawę" (dyskietki 3.5 cala mają kopertę grubą i sztywną, dyskietki 5.25 cala używane w komputerach ATARI serii XL/XE są zapakowane w miękką oprawę). Koperta ta posiada na brzegu otwór (w dyskietkach 3.5 calowych ujawniający się dopiero po rozpoczęciu operacji wykonywanej przez stację dysków), który umożliwia dokonanie sformatowania dyskietki, a następnie jej użytkowanie (zapisywanie, odczytywanie, kasowanie, zmianę nazwy plików, itp). Po zakupieniu dyskietki nie jest ona przystosowana do współpracy z jakąkolwiek stacją dysków, dlatego też pierwszą czynnością powinno być jej sformatowanie. Operacja ta spowoduje, że obojętna warstwa magnetyczna zostanie przez głowicę stacji dysków odpowiednio namagnesowana. Podczas wszelakich operacji na dyskietce odpowiedni układ mechaniczny stacji dysków powoduje jej obrót ze stałą prędkością. Na dysku elastycznym pojawiają się niewidoczne ścieżki (zwykłe jest ich 40 ($28) złożone z sektorów. Jak łatwo się domyślić są one rozłożone na współśrodkowych okręgach (rys.). W zależności od potrzeb i możliwości dyskietka może być sformatowana z różną ilością sektorów zawierających różną ilość danych. Potocznie jest to nazywane gęstością dyskietki. Najbardziej rozpowszechnione gęstości to 1040 sektorów po 128 bajtów danych (gęstość rozszerzona), 710 sektorów po 128 bajtów danych (gęstość pojedyncza) oraz 710 sektorów po 256 bajtów danych (gęstość podwójna). W gęstości pojedynczej i podwójnej ścieżka zawiera 18 ($12) sektorów, gęstość rozszerzona ma 26 ($la) sektorów na jednej ścieżce. Po prawidłowym zakończeniu operacji formatowania mamy dyskietkę przystosowaną do pracy z daną stacją dysków. Dyskietka może być sformatowany różnym przeplotem sektorów, co umożliwia jej czytanie z różną prędkością. Zjawisko przeplotu polega na odpowiednim rozłożeniu sektorów na ścieżce, co pokazuje rysunek. Po sformatowaniu dyskietki do pracy zabiera się Dyskowy System Operacyjny, który zajmuje kilka sektorów dla własnych potrzeb (jak łatwo się domyślić, pomniejsza to ilość wolnych sektorów przeznaczonych na dane użytkownika). Zajmuje więc początkowe sektory, które przeznaczone są do ładowania systemu operacyjnego (są to tzw. sektory bootowe). Jest ich zazwyczaj trzy, ich liczba może się jednak wahać w granicach od 1 do 256. Jest to typowe działanie każdego DOS-a, czy też innego programu dokonującego operacji formatowania dyskietki, wynika to z systemowej procedury odczytu wstępnego. Posiadacze stacji dysków zastanawiali się zapewne: Jak to się dzieje, że po włączeniu komputera nagle zapala się kontrolka ostrzegająca przed wyjmowaniem dyskietki z napędu (jest dokonywana jakaś operacja). Po dźwięku pip, pip można rozpoznać, iż jest to operacja czytania. Wyjaśniam w skrócie owo owiane mgłą tajemnicy zjawisko. Otóż systemowa procedura odczytu wstępnego (BOOT), po sprawdzeniu, że stacja dysków jest obecna i gotowa do współpracy, rozpoczyna operację czytania dyskietki. Czytany jest sektor numer jeden, którego drugi bajt określa liczbę sektorów bootowych (przeznaczonych do natychmiastowego wgrania). Ich zawartość jest umieszczona od adresu, który jest zapisany w trzecim i czwartym bajcie sektora pierwszego. Po woraniu wszystkich sektorów bootowych jest uruchamiany ten program, który decyduje co system ma robić (czy ma być ładowany właściwy Dyskowy System Operacyjny, czy program ten jest tzw. Loaderem przeznaczonym do ładowania i uruchamiania gier). Organizacja dyskietki dla DOS-a 2.5 firmy Atari Corporation jest następująca: Osiem sektorów o numerach od 361 do 368 ($169-$170) zajmuje katalog dysku (tzw. DIRECTORY). Zawierają one dane dotyczące plików znajdujących się na dyskietce. Należą do nich nazwa i długość (w sektorach) pliku (dane te ukazują się na ekranie po wydaniu komendy DIR lub jej równoważnej) oraz numer pierwszego sektora przez niego zajmowanego. Długość DIRECTORY pozwala na zapisanie na dysku 64 plików, ponieważ dane jednego pliku zajmują 16 bajtów, w sektorze zaś mieści się informacja o ośmiu plikach. Jedno pole DIRECTORY mające długość 16 bajtów zawiera informacje dotyczące jednego pliku o następującej organizacji: pierwszy bajt jest statusem pliku. Oto niektóre znaczenia wartości statusu: 0 ($00) - wolne pole w DIRECTORY, nie ma pliku o danym numerze; 66 ($42) - plik jest aktywny; 67 ($43) - plik jest otwarty do zapisu (gdy z bliżej nieokreślonych przyczyn po zakończeniu operacji zapisu plik posiada taki status, to jest on traktowany jako nieaktywny); 128 ($80) - plik został skasowany. Drugi i trzeci bajt w polu DIRECTORY oznaczają długość pliku liczoną w sektorach, czwarty i piąty bajt oznaczają numer pierwszego sektora zajmowanego przez plik. Bajty od 6 do 16 są zarezerwowane na nazwę pliku (ostatnie trzy to rozszerzenie, np. COM). Nie jest zjawiskiem przypadkowym, że katalog dysku zajmuje sektory właśnie od numeru 361 ($169). Jest to po prostu środek dyskietki dla pojedynczej gęstości i dostęp do nich przez głowicę stacji dysków jest najszybszy, niezależnie od jej położenia (czy znajduje się na sektorze pierwszym czy ostatnim).

Dzięki takiemu rozwiązaniu czas odczytu DIRECTORY jest najkrótszy. Dyskowy System Operacyjny zajmuje dla własnych potrzeb sektor numer 360 ($168), który jest przeznaczony na tzw. VTOC czyli mapę ząjętości dysku (dla rozszerzonej gęstości również sektor o numerze 1024 ($400)). VTOC to informacje zawierające ilość wszystkich sektorów, ilość wolnych sektorów oraz bitową mapę dysku. Stąd DOS czerpie dane wyświetlane później w postaci XXX FREE SECTORS (ilość wolnych sektorów). Każdemu sektorowi przyporządkowany jest jeden bit mapy VTOC-a mówiący o tym, czy jest on aktualnie wolny czy też zajęty przez jakiś plik. Proces nagrywania pliku na dyskietkę polega między innymi na sprawdzeniu w mapie VTOC-a czy sektor jest wolny, jeżeli tak to bit będący statusem sektora jest negowany, co powoduje późniejsze traktowanie tego sektora jako zajętego. Zmniejszana jest też o jeden liczba wolnych sektorów. Ponieważ w rozszerzonej gęstości informacje dotyczące organizacji dysku nie mieszczą się w jednym sektorze, więc sektor 1024 ($400) zawiera drugą część tych informacji (niektóre z nich pokrywają się z zawartością sektora 360 ($168). Powyżej zostało wytłumaczone znaczenie sektorów zajmowanych przez DOS. Jak natomiast są zorganizowane same sektory przeznaczone do przechowywania danych użytkownika? Otóż początkowe bajty (w zależności od gęstości jest ich 125 lub 253)) są zarezerwowane na dane, natomiast ostatnie trzy bajty sektora wykorzystuje dla własnych potrzeb DOS (przypominam, że dotyczy to struktury organizacyjnej DOS-u 8.5). Przyjęto jako standard numerowanie sektorów począwszy od l, natomiast numerowanie bajtów w sektorze zaczynamy od zera (pierwszy bajt ma numer 0). Tak więc 127 ($7t) lub 255 ($ff) bajt sektora zawiera informację dotyczącą ilości aktywnych danych w sektorze. Ponieważ sektor nie musi być w całości wypełniony danymi, więc bajt ten informuje DOS ile danych należy do wgrywanego pliku (wgrywanego, ponieważ informacja ta jest wykorzystywana tylko przy operacji czytania). Pozostałe dwa bajty (w kolejności 125 i 126 ($7d i $7e) lub 253 i 254 ($8d i $8e)) są tzw. "linkiem" czyli nawiązaniem do kolejnego sektora pliku; konkretnie są to informacje o numerze pliku (numer to pozycja pliku w katalogu dysku liczona od zera) oraz numer kolejnego sektora tego pliku. Przedostatni bajt sektora jest resztą z dzielenia numeru następnego sektora przez 256 (młodszy bajt), zaś 125 ($7d) lub 253 ($8d) bajt "jest podzielony" na dwie części: dwa najmniej znaczące bity są wynikiem podzielenia numeru kolejnego sektora przez 256 (starszy bajt), pozostałych sześć bitów tworzy numer pliku.

   Tak wygląda organizacja wewnętrzna dyskietki. Kolejny, trzeci odcinek cyklu poświęconego ujawnianiu tajemnic Dyskowych Systemów Operacyjnych będzie poświęcony praktycznemu wykonywaniu wszelakich operacji dyskowych.

Leon



Powrót na start | Powrót do spisu treści | Powrót na stronę główną

Pixel 2001