Tajemnice ATARI

DYSKOWE SYSTEMY OPERACYJNE (4)

    Niniejszy odcinek cyklu o Dyskowych Systemach Operacyjnych jest poświęcony wyjaśnieniu struktury pliku dyskowego (ze względu na życzenia Czytelników, którzy proszą o to w listach nadesłanych do redakcji) oraz będzie próbą porównania niektórych DOS-ów (DOS-u 2.5, SpartaDOS-u) wraz z możliwościami ich Command Processorów.

   Plik binarny jest plikiem o specjalnej budowie zawierającym rozmaite dane. Dyskowy plik binarny możemy załadować do pamięci komputera bezpośrednio poprzez wywołanie jego nazwy. Przykładowo, zakładając, że plik o nazwie BATCH.COM jest plikiem binarnym, wpisujemy przy pomocy klawiatury polecenie BATCH.COM i program ten zostaje umieszczony w odpowiednich rejonach pamięci komputera (o ile taki plik istnieje na dyskietce). Aby zrozumieć różnicę pomiędzy plikiem zwykłym, a binarnym rozpatrzmy czysty plik tekstowy zawierający tylko sam tekst. Nie jest możliwe wgranie go do pamięci komputera poprzez wywołanie jego nazwy, musimy do tego celu użyć innego programu ładującego. Można natomiast z tego pliku stworzyć plik binarny poprzez dołączenie do niego kilku bajtów, których umiejscowienie i znaczenie natychmiast wyjaśniam. Otóż na początku pliku dołączamy dwa bajty równe 255 ($ff), które informują program ładujący, że plik ma strukturę pliku binarnego. Jeżeli dwa początkowe bajty są różne od 255 ($ff) program ładujący poinformuje nas, że nie jest możliwe załadowanie tego pliku do pamięci komputera, o ile chcemy go wgrać poprzez wywołanie jego nazwy. Po tych dwóch bajtach umieszczamy cztery kolejne bajty, których znaczenie jest następujące: pierwsze dwa z nich są adresem początku umieszczania danych w pamięci, następne dwa są analogicznie adresem końca umieszczania danych (ich ostatniego bajtu). Te cztery bajty tworzą nagłówek definiujący blok pliku binarnego. Jak łatwo zauważyć, różnica końcowego i początkowego adresu wgrywania pliku tworzy długość pliku binarnego minus jeden.

    Aby lepiej zrozumieć na czym polega budowa pliku binarnego wyjaśniam to na przykładzie. Załóżmy, że na dyskietce utworzyliśmy plik o nazwie COLD.COM zawierający następujące dane: 255 255 68 2 68 2 1 ($ff $ff $44 $02 $44 $02 $01). Wywołanie tego pliku poprzez wydanie komendy COLD.COM sprawi, że po naciśnięciu klawisza RESET rozpocznie się systemowa procedura bootowania systemu (równoznaczne jest to włączeniu komputera do sieci). Wyjaśniam na czym to polega. Otóż bajty $ff $ff (255, 255) informują, że jest to plik binarny, następne 4 bajty wskazują, że będzie załadowany jeden bajt od adresu 580 ($244). Ponieważ bajt ten jest różny od zera, więc spowoduje to ustawienie komórki COLDST, która jest komórką informującą system operacyjny o konieczności wykonania zimnego startu.

   Możliwe jest umieszczenie po jednym bloku pliku kolejnego nagłówka dotyczącego następnej części pliku. Dzięki takiej organizacji możemy do pamięci komputera ładować dane w dowolne lokacje i bloki o rozsądnie dowolnej długości. W kolejnych nagłówkach nie jest wymagane umieszczanie bajtów 255 255 ($ff $ff), wystarczą jedynie cztery bajty dwóch adresów. Taka struktura pliku umożliwia ładowanie do pamięci komputera wszelakiego rodzaju programów użytkowych, komend zewnętrznych oraz gier w postaci pliku dyskowego.

   Tyle na temat struktury pliku binarnego, teraz przejdę do porównania możliwości dwóch DOSów i ich Command Processorów dołączonych przez producenta. Charakterystykę porównawczą przeprowadzę na systemach najbardziej rozpowszechnionych: DOS-ie 2.5 i SpartaDOS-ie. Sparta-DOS posiada niepodważalną przewagę nad DOS-em 2.5 ze względu na możliwość odczytu plików zapisanych w formacie tego drugiego, DOS 2.5 nie potrafi odczytać "dyskietek SpartaDOS-owskich". W przeciwieństwie do DOS-u 2.5 SpartaDOS umie obsługiwać dyskietki sformatowane w trzech podstawowych gęstościach: pojedynczej, rozszerzonej i PODWÓJNEJ. SpartaDOS posiada odmienną organizację dyskietki, co wiąże się z szybszymi na niej operacjami, np. proces zapisu danych. Aby nagrać plik na dysk o nazwie już na nim istniejącej DOS 2.5 musi najpierw przeczytać sektor po sektorze cały zbiór (w celu uaktualnienia VTOC-a), po czym dopiero przystąpić do zapisu. Dla plików długich jest to niezwykle czasochłonne. SpartaDOS posiada w jednym miejscu mapę pliku, po jej odczytaniu już może zapisywać dane. Taka organizacja wiąże się jednakże z wielkim niebezpieczeństwem. W przypadku zmian na dyskietce przez programy działające poza kontrolą DOS-u istnieje realna groźba nieprawidłowego uaktualnienia mapy bitowej dyskietki lub numerów zajętych sektorów. Wyobraźmy sobie sytuację, gdy DOS zapisze przynajmniej jeden sektor nowego pliku w miejsce zajmowane przez inny, istniejący plik. Gdy tak się stanie to Dyskowy System Operacyjny 2.5 powiadomi nas o tym zwracając status numer 164 (natrafiono na złe dowiązanie zbioru), podczas odczytu zniszczonego pliku. SpartaDOS nie posiada takiego zabezpieczenia.

   Obydwa DOS-y zajmują lokacje poniżej adresu 8192 ($2000), ale gro kodu SpartaDOS-u znajduje się w pamięci RAM umieszczonej "pod ROM-em". Wynika stąd, że nie może współpracować z programami korzystającymi z tamtych lokacji. W stosunku do DOS-u 2.5 SpartaDOS posiada bardziej rozbudowany katalog dyskowy, zapisuje w nim jeszcze datę i czas nagrania pliku, licznikiem jego długości nie są sektory, lecz bajty. Moim zdaniem jest to na ten typ komputera wątpliwe udogodnienie. Bardzo pożyteczne jest natomiast wprowadzenie przez SpartaDOS możliwości tworzenia podkatalogów. Być może twórcy DOS-u 2.5 doszli do wniosku, że nie jest to opłacalne ze względu na mały rozmiar pamięci dyskietki.

   Trudno jednoznacznie wypowiedzieć się na temat, który z tych Dyskowych Systemów Operacyjnych jest lepszy. Nie ma co do tego jednak żadnych wątpliwości, gdy porównamy ich Command Processory (dołączone przez producentów), które świadczą o możliwościach DOS-ów. DUP.SYS będący programem do wydawania komend dla DOS-u 2.5 nie nadaje się do użytkowania przez programistę o przeciętnym temperamencie, nie wspominając o tych nerwowych. Jego niewybaczalną wadą jest ciągłe doczytywanie z dyskietki, np. podczas powrotu z Basic-a, Assemblera, itp. (ogólnie z wszystkich programów "nie umiejących" wrócić do Command Processora DOS-u 2.5). Wątpliwości również budzi sposób merytoryczny i estetyczny korzystania z programu DUP.SYS. Większość jego wad eliminuje na przykład program CP.SYS wydrukowany w drugim numerze "Tajemnic Atari". Jest on rezydentnym Command Processorem (czyli takim, który jest cały czas w pamięci komputera i nie koliduje z innymi programami poprzez podniesienie ponad siebie MEMLO) posiadającym podstawowe funkcje najczęściej wykonywane przez użytkownika. Mnie osobiście bardzo brak komendy COPY, ale jej obecność spowodowałaby znaczne podniesienie MEMLO (i tak już dość wysokiego). DOS 2.5 posiada bardzo wygodnie zorganizowaną komendę CAR, która włącza BASIC nawet w razie jego odłączenia (włączenie komputera z wciśniętym klawiszem OPTION). Command Processor SpartaDOS-u ma osobny rozkaz CAR, który powoduje przejście do BASIC-a o ile jest on włączony i rozkazy BASIC ON, BASIC OFF, które umożliwiają włączanie i wyłączanie BASIC-a.

   Podobnie jak w CP.SYS, ukazuje się tzw. prompt oznaczający nazwę urządzenia, na którym będzie wykonywana operacja. Command Processor SpartaDOS-u posiada więcej komend, zarówno wewnętrznych (czyli takich, które rezydują w pamięci), jak i zewnętrznych (czyli doczytywanych z pamięci zewnętrznej). Posiada przede wszystkim wewnętrzną obsługę plików wsadowych (są to pliki zawierające komendy wykonywane automatycznie po wgraniu przez Command Processor). Żaden program obsługujący DOS 2.5 nie potrafi obsługiwać tego typu plików. Najprawdopodobniej w jednym z najbliższych numerów "Tajemnic Atari" zosta- nie wydrukowany listing programu, który będzie tworzył pliki wsadowe możliwe do wykonania pod DOS-em 2.5. Producent SpartaDOS-u dołączył szereg pożytecznych programów, które wywoływane jako komendy zewnętrzne ułatwiają i uprzyjemniają pracę użytkownika. Do takich należą na przykład komendy obsługi czasu i daty, wyświetlanych w górnej linii ekranu. Bardzo wygodnym programikiem jest komenda UNERASE powodująca odzyskanie skasowanego pliku. Co prawda DOS 2.5 posiada komendę zewnętrzną DISKFIX, jednakże jest ona możliwa do wywołania jedynie przez DUP.SYS, działanie procedury odzyskującej plik wiąże się z bardzo czasochłonnym weryfikowaniem całej dyskietki. Reasumując SpartaDOS jest wygodny do obsługiwania, jednak ze względu na brak możliwości korzystania z pamięci RAM "pod ROM-em" traci swe walory (przykładowo nie może współpracować z bardzo popularnym programem XLFriend). DOS 2.5 jest dobrym systemem pod warunkiem, że posiada Command Processor typu CP.SYS.

Leon



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

Pixel 2001