atari.area
twoje polskie źródło informacji o Atari

DOSa wy(z)wód konieczny cz. 1

Autor: Pajero / MadTeam

Jak sam tytuł artka wskazuje zajmiemy się najciekawszym wy(z)wodem pod słońcem. Problemem pewnego chłopa o swojskim imieniu Dos. A chorował on na wstydliwą choróbkę zwaną skądinąd "bez standardzie".

Jeśli nie załapałeś dotychczas o czym pisze poniżej, to już tłumaczę Ci łopatologicznie. Miałeś problem z odczytem czy zapisem dyskietki? Twój ATR nie chodzi pod MyDos?em? Dyskietkę w medium czyta tylko Twój dos? Otóż nie ma standardu, mimo obietnic autorów przeróżnych dosów. To dlaczego to wszystko jeszcze "chodzi"? Odpowiedź banalna: programiści atari są najlepsi czyli ofkoz the best!

Tyle dłuuuugiego wstępu. Mam nadzieje, że poniższe dane przydadzą się do stworzenia lepszego dosu (mam na myśli dosu dla "twardzieli" ? HD).

Opiszę jedynie Dos 2.0, Dos 2.5, Dos II, X-Dos, oraz My-Dos i tylko w single, medium i double. No bo tyle dobrze poznałem pisząc plugina dla Windows Commandera.

"Czyj ci on": jak rozpoznać dyskietkę = który dos formatował

Pierwszy sektor i pierwszy bajt prawie na 100% określa pochodzenia nośnika (wartości w hex):

    00   Dos 2....       dla single i medium
    00   Dos II          dla double
    C4   Dos II
    X    X-Dos   (to odmiana Dos II)
    M    MyDos
    S    Sparta Dos  lub  BW-Dos

Jednak nie zawadzi sprawdzić w pierwszym sektorze czy nie ma napisu:

    Error: No DOS     Sparta
    BW-DOS            BW- Dos

Później sprawdzamy także sektor 360 ($168) czyli VTOC i jego pierwszy bajt:

    02   Dos 2...
    03   Dos II lub X-Dos (także MyDos dla medium)

"Kato(logo)wać się chciało": jak czytać wpis katalogu

Główny katalog mieści się zawsze w sektorze 361 ($169) i zajmuje zawsze osiem sektorów nawet dla double. W każdym sektorze mieści się 8 wpisów po 16 bajtów. Przy double dla kompatybilności druga połówka sektora 256 bajtowego jest pusta! Osiem sektorów po osiem wpisów daje 64 pozycje na:

    0       status wpisu
    1-2     ilość sektorów zajętych przez plik
    3-4     numer pierwszego sektora zajętego przez plik
    5-12    osiem znaków nazwy pliku
    13-15   trzy znaki rozszerzenia nazwy pliku

Wyjaśnienia wymaga jeno status wpisu (ustawiony bit oznacza)

    Bity            Dos 2...               Dos II                MyDos
    1               nie-dostępny[1]        nie-zamknięty[2]      nie-zamknięty[2]
    2               plik                   plik                  plik
    4               -                      -                     plik
    8               -                      -                     -
    16              -                      -                     katalog
    32              zabezpieczony          zabezpieczony         zabezpieczony
    64              plik                   plik                  plik
    128             skasowany              skasowany             skasowany

objaśnienia:

[1] nie-dostępny dla Dos 2.0 (zajmuje sektory 721-1010)

[2] nie-zamknięty przy zapisie (plik uszkodzony)

"Wiela wolnych sektorów" dowiecie się z VTOC

VTOC który zaczyna się na sektorze 360 ($168) a kończy na (!!!) 359 ($167) lub 1024 ($400).

To najmniej ciekawy fragment struktur dosów. Problem oczywiście jest z medium. Single i double zawsze zajmuje tylko sektor 360 ($168)!

Dla wszystkich dosów pierwsze 10 bajtów sektora 360 oznacza:

   0        status VTOC
   1-2      maksymalna liczba wolnych sektorów
   3-4      ilość obecnie wolnych sektorów (dla medium Dos 2.5 sektorów 1-719)
   5        zabezpieczenie przed zapisem dysku (?)
   6-9      wolne

Dalsze bajty to bitowa rozspiska wolnych sektorów, bit skasowany oznacza zajętość. Dla 720 sektorów przy single i double wystarczy 90 bajtów. Dla medium potrzeba 130 bajtów i tu zaczynają się ?schody?. Dos 2.5 wykorzystuje sektor 1024 ($400) dla kontynuacji VTOC, a Dos II i MyDos sektor 359 ($167).

Sektor 1024 ($400) dla Dos 2.5 to kopia sektora 360 ($168) od bajtu 16 do 127 z tym, że bajt 123 i 124 ($7A-7B) zawiera ilość wolnych sektorów o numerze 720 ? 1010.

Sektor 359 ($167) dla Dos II i My-Dos ma tylko kontynuacje (to nie kopia) rozpiski wolnych sektorów 944-1009 dla Dos II i 944-1027 dla MyDos.

Należy pamiętać, że sektor 0 nie istnieje (we VTOC bajt 10 bit 1 zawsze skasowany), a w medium sektor 720 dla Dos 2.5 jest nie wykorzystywany (we VTOC bajt 101 bit 8 zawsze skasowany)!

Jak idzie zauważyć każdy dos ma inną maksymalną ilość wolnych sektorów. Jednak istnieje wartość graniczna liczby wszystkich sektorów. Dla single i double jest to 720, a medium 1040.

           Dos 2    Dos II   MyDos
single      707      707      708
medium     1010     1009     1027
double        -      707      708

Poniżej schematyczny wypis VTOC po sformatowaniu dyskietki dla każdego dosu.

Single Dos 2...

            0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
00         02  C3  02  C3  02  00  00  00  00  00  0F  FF  FF  FF  FF  FF 
10         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 
20         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 
30         FF  FF  FF  FF  FF  FF  FF  00  7F  FF  FF  FF  FF  FF  FF  FF   standardowo zajęte 9 sektorów
40         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF   na VTOC i katalog
50         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 
60         FF  FF  FF  FF  00  00  00  00  00  00  00  00  00  00  00  00 
70         00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00

Single lub Double DosII

            0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
00         03  C3  02  C3  02  00  00  00  00  00  0F  FF  FF  FF  FF  FF 
10         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 
20         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 
30         FF  FF  FF  FF  FF  FF  FF  00  7F  FF  FF  FF  FF  FF  FF  FF 
40         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 
50         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 
60         FF  FF  FF  FF  00  00  00  00  00  00  00  00  00  00  00  00 
70         00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00

Single lub Double MyDos

            0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
00         02  C4  02  C4  02  00  00  00  00  00  0F  FF  FF  FF  FF  FF 
10         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 
20         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 
30         FF  FF  FF  FF  FF  FF  FF  00  7F  FF  FF  FF  FF  FF  FF  FF 
40         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 
50         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 
60         FF  FF  FF  FF  80  00  00  00  00  00  00  00  00  00  00  00   sektor 720 używany 
70         00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00

Medium Dos 2...

                 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
        /   00  02  F2  03  C3  02  00  00  00  00  00  0F  FF  FF  FF  FF  FF 
 360   |    10  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  00  \    
$168   |    20  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  10  |
       |    30  FF  FF  FF  FF  FF  FF  FF  00  7F  FF  FF  FF  FF  FF  FF  FF  20  |  1024
       |    40  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  30  |  $400
       |    50  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  40  |
       |    60  FF  FF  FF  FF  7F  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  50  |  sektor 720
        \   70  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  60  |  nieużywany
            FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  2F  01  00  00  00  00  70     /

Medium DosII Sektor 360 $168

            0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
00         03  F1  03  F1  03  00  00  00  00  00  0F  FF  FF  FF  FF  FF 
10         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 
20         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 
30         FF  FF  FF  FF  FF  FF  fe  00  7F  FF  FF  FF  FF  FF  FF  FF   zajęte 10 sektorów 
40         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF   sektor 359 to druga część
50         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF   VTOC
60         FF  FF  FF  FF  7f  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF   sektor 720 nie używany
70         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF 

Medium DosII Sektor 359 $167

00         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  00  00  00  00  00  00

Medium MyDos Sektor 360 $168

            0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
00         03  03  04  03  04  00  00  00  00  00  0F  FF  FF  FF  FF  FF 
10         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF
20         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  
30         FF  FF  FF  FF  FF  FF  fe  00  7F  FF  FF  FF  FF  FF  FF  FF   sektor 359 to druga część
40         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF   VTOC 
50         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF
60         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF   sektor 720 używany
70         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  

Medium MyDos Sektor 359 $167

00         FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  80  00  00  00   ostatni sektor 1040

"Linki poprowadzą cię" do końca pliku

Ostatnie trzy bajty sektora zawierają LINK prowadzący do następnego sektora na dysku. Oznacza to, że w sektorze może być 125 lub 253b. Zależnie od dosu bajty te mają (!) podobne znaczenie.

bajt:          Dos 2..       Dos II i MyDos 
125-126        [1]           nr następnego sektora
253-254         -            jw. 
127            [2]           ilość bajtów w sektorze, może być wartość: 1-125
255             -            ilość bajtów w sektorze, może być wartość: 1-253

objaśnienia:

[1]        ---125---||---126----       
             7654321076543210
             [#pliku][#sektora]

#pliku:     nr pliku zgodny z pozycją w katalogu (0-63)
#sektora:   nr następnego sektora

[2]        76543210
           S[-ilość-]

S:         status zakończenia pliku = 1 oznacza koniec
-ilość-    ilość bajtów w sektorze, może być wartość: 125 lub 1-124

Aby oznaczyć koniec pliku wstawia się zero jako numer sektora, dodatkowo Dos 2 ustawia bit statusu "S".

"Koniec nastąpi niebawem" artka ofkoz...

Na zakończenie należy napisać, że istnieją dwa inne formaty MyDos?a: 360 i 720kB. Inne wielkości dyskietek powstają także za pośrednictwem tego dosu, ale są mało powszechne.

Wspomnę, że starsze wersje Mydos?a dla dysków większych od double wykorzystują cały sektor 256b na katalog.


Komentarze (0)

Brak komentarzy. Bądź pierwszy!

Dodaj komentarz

Musisz się zalogować, aby dodać komentarz.