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

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

Autor: Pajero / MadTeam

Druga część artka o dosach będzie czysto teoretyczna. Chciałbym przybliżyć założenia na temat dosa obsługującego dyski twarde poprzez EIDE. Aby nie komplikować życia koderom założenia powinny ułatwiać a nie zaciemniać kod.

Ze względu na brak oprogramowania do HD nowy dos powinien jak najbliżej nawiązywać do standardu Dos II. To pozwoli napisać proste emulatory. Ponadto, należy być w założeniach dalekosiężnym wybiegając w przyszłość, aby nie zamknąć rozwoju nowego dosu!

Założenia:

Dyski EIDE posiadają bufor minimum 512b. To wyklucza zastosowanie bezpośrednie standardu Dos II. Dlatego też możemy zrezygnować z adresowania 2-bajtowym na rzecz 4-bajtowego.

Sektory:

$0001-$0003  boot
$0004-$0167  wolne.
$0168        VTOC główny
$0169-$0170  katalog główny
$0171-$0FFF  wolne
$1000-       VTOC HD 
dalej wolne....

BOOT sektory są znane nam wszystkim, pierwszy sektor będzie miał w pierwszy bajcie literę "H".

Dysk twardy powinien dać się boot?ować oraz musimy mieć możliwość jednoznacznego rozpoznania HD.

VTOC główny pozostaje dla kompatybilności z Dos II (wykorzystywane 128 z 512!)

       0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
00    03  00  00  00  00  00  10  00  01  00  00  00  00  00  00  00 
10    00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00 
20    00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
30    00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
40    00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
50    00  00  00  00  00  00  00  00  00  00  00  00  00  00  00  00
60    00  00  00  00  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
bajt: 0 oznaczenie dosu = 3 1-2 zawsze = 0 3-4 zawsze = 0 5-7 numer pierwszego sektora dla VTOC HD 8-9 ilość sektorów przeznaczonych na VTOC HD

Pozostawienie VTOC w sektorze $168 pozwala obsługiwać HD przez programy nie przystosowane do tego celu. Wszystkie sektory są dla nich zajęte - co uniemożliwia zapis, jednak pozwoli wyświetlić katalog!

Katalog główny oraz podkatalogi wykorzystują dwa bloki 128 bajtowe z 512b sektora.

bajty:
000-127  katalog A
128-255  puste
256-383  katalog B
384-511  puste

Katalogi posiadają 8 wpisów po 16b każdy. Katalog B jest uzupełnieniem katalogu A.

katalog A, bajty:
0          status
1          - plik uszkodzony
2          - plik
4          - wolny
8          - wolny
16         - katalog
32         - zabezpieczony
64         - plik      
128        - skasowany

1-4        długość pliku określona w sektorach
5-15       name.ext pliku
katalog B, bajty:
0           status m.in. bajtów 5-15
= 64        zapis tylko daty  dd:m:rr
= 128       zapis tylko czasu  gg:mm:ss
= 192       zapis daty i czasu  dd:m:rr gg:mm:ss
= 1-63      w pierwszym sektorze pliku ile bajtów zajmuje długa nazwa pliku

1-4         numer pierwszego sektora pliku
5-6         dzień utworzenia pliku
7           miesiąc
8-9         rok
10-11       godzina
12-13       minuta
14-15       sekunda

Bajty 5-15 katalogu B zawierają datę i czas utworzenia pliku w formacie atascii, aby przyspieszyć wyświetlanie katalogu. Jednak, co do ich zastosowania nie jestem do końca pewny...

Uważam, że podział katalogu na dwie części, pierwszej zgodnej z Dos II i drugiej umożliwiającej obsługę HD ułatwi operacje Rename, Lock, Unlock, i wszelkich przeszukiwań nazwy pliku, czy też prostej komendy Dir.

VTOC HD zawiera dane nt. wolnych sektorów na twardzielu.

                 0   1   2   3   4   5   6   7   8   9   A   B   C   D   E   F
000             48  00  00  20  00  00  00  1F  FF  F2  01  00  00  00  00  04 
010             0F  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  zajęte sektory 1-3
020             FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF
030             FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  zajęte 9 sektorów 
040             FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF
050             FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF
060             FF  FF  FF  FF  7f  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  sektor 720 nie używany
070             FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF  FF
080             FF itd
1F0             cd. FF  FF  FF

bajt:
0          litera ?H?
1          wolne
2-5        maksymalna ilość wolnych sektorów
6-9        obecna ilość wolnych sektorów
10-11      ilość sektorów przeznaczonych na VTOC HD
12-15      pierwszy wolny sektor na HD
16-....    bitowy plan wolnych sektorów

Na następne tablice VTOC HD przeznaczone zostaną kolejne sektory dysku.

Ilość sektorów VTOC HD zależy od wielkości dysku twardego!!!!

Bajty 12-15 określają pierwszy sektor wolny przeznaczony do zapisu (na początku równy 4). Dzięki temu możemy uniknąć czasochłonnego przeszukiwania tabeli VTOC HD w celu odnalezienia wolnego sektora. Bajty te są oczywiście aktualizowane po zapisie. Licznik ten może być tylko zwiększany aż do przepełnienia (dzięki czemu skasowany plik nawet dawno temu można zawsze odzyskać), lub też aktualizowany w przypadku kasowania pliku.

LINKI sektorów. Link znajduje się w ostatnich 6 bajtach sektora 512b.

$1FA-1FB  ilość bajtów w sektorze
$1FC-1FF  link do nastepnego sektora (gdy = 0 oznacza ostatni sektor)

Zastosowanie 6 bajtów na link ułatwi emulatorom przekład 512 bajtowe sektory na dwa 256b.

TO TYLE. Jak widzicie na podstawie Dos II można oprzeć prosty i skomplikowany zarazem system obsługi dysku twardego. Jeśli etapowo nastąpi rozwój Dos II poprzez obsługę 1MB, katalogów a potem HD można wywnioskować piękną przyszłość nowego dosu. Tylko kto się tego podejmie???


Komentarze (0)

Brak komentarzy. Bądź pierwszy!

Dodaj komentarz

Musisz się zalogować, aby dodać komentarz.