Artykuły

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

    Tu miłego dokończenia serialu - tasiemca o dosach koniec bliski. Owa część ma formatu opis dyskietek większych od Double oraz nowy formatu propozycję!.

    PS. tekst tłumaczony translatorem z qiuck assemblera na polski... ;)

    Aby było jasno - większe dyski niż Double obsługuje prócz Sparty tylko My_Dos oraz plugin ATR (...ukryta kryptoreklama). Cały problem to informacje zawarte we VTOC, przypominam:

    VTOC zaczyna się na sektorze 360 ($168) i cofa się ku początku dyskietki (prócz Medium dla Dos 2.5 !!!). Dla wszystkich dosów pierwsze 10 bajtów sektora 360 oznacza:

    	  0.  status (dla Dos 2.5) oraz liczba użytych sektorów na VTOC (dla reszty dosów) 
    	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 sektora 360 ($168). Dla medium potrzeba 130 bajtów. Więc Dos II i MyDos wykorzystuje dla kontynuacji VTOC sektor 359 ($167).

    Przy Medium sektor 359 ($167) posiada rozpiskę wolnych sektorów 944-1009 dla Dos II i 944-1027 dla MyDos. Należy pamiętać, ze sektor 0 nie istnieje (we VTOC bajt 10 bit 1 zawsze skasowany).

    Jak odczytywać format 360 i 720KB (oraz inne)? Wszystko znajduje się w pierwszym bajcie VTOC. Najpierw małe wzorki i tabelka...

    Sektor 128b      n=(f128 -2)*2       f128 =(n/2)+2 
    Sektor 256b      m= f256 -2          f256 = m+2

    Gdzie "f" jest pierwszym bajtem VTOC, "n" i "m" ilością sektorów wykorzystanych na VTOC

    f n sektor 128 m sektor 256b długość VTOC
    1 - - - - -
    2 1 Single 1 Double 128 lub 256
    3 2 Medium 1 260 i 360kB 256
    4 4 360kB 2 720kB 512
    5 6 720kB 3 1440kB 768
    6 8 ? 4 ? 1024
    7 10 ? 5 ? 1280
    8 12 1440kB 6 ? 1792

    Dodam tylko, że format 260kB to rozwinięcie Medium dla sektorów 256b.

    DosII / My_Dos sektor 128b sektor 256b
    all free f all free f
    260kB - - - 1023/1040 1010/1028 3
    360kB 2880 2865/2865 4 1440 1427/1428 3
    720kB 5760 5742/5743 5 2880 2866/2867 4
    1140kB 11520 11486/11497 8 5760 5745/5746 5

    Gdzie "all" to ilość wszystkich sektorów dyskietki, "free" to oczywiście "free sectors" dla pustej dyskietki.

    Bez wątpienia ww. tabele można rozwijać byle "f" nie przekroczyło wartości 255, ofkoz. Dla 16MB (wszystkich sektorów 65535) pierwszy bajt VTOC równa się f=23. A co jak przekroczymy tą barierę? Powstanie nowy format do 126,5MB i to bez utraty standardu!

    I na pewno Atr utworzony pod pluginem o wielkości do 126,5 MB będzie w pełni kompatybilny z dyskietką DOS II w jego pierwszych 180KB, z partycją My DOS do 16 MB. Resztę widzi oczywiście tylko plugin...

    1. BOOT SECTOR jest identyczny z DOS II

    2. VTOC (sektor 360, $168) ma identyczne znaczenie, ale:

    # bajtu - opis: 
      0.  ilość sektorów przeznaczonych na VTOC minus 2 (standard My DOS!!!) 
    1-2.  lo hi ilość wszystkich sektorów tzw. FREE SECTORS 
    3-4.  lo hi ilość obecnie FREE SECTORS 
      5.  zabezpiecznie dyskietki (??????) 
    6-7.  niewykorzystane 
      8.  Ahi ilość wszystkich sektorów tzw. FREE SECTORS 
      9.  Fhi ilość obecnie FREE SECTORS 
     10.  tabela bitowa VTOC

    Wyjaśnienia wymaga bajt 8 i 9:

    ilość wszystkich sektorów=.....lo+ 256*hi+ 65536*Ahi 
    	ilość obecnie FREE=............lo+ 256*hi+ 65536*Fhi

    3. Długość sektora tylko 256b!!!!

    4. DIR (katalog) główny w sektorach 360-368 ($169-$170) ma identyczne znaczenie jak w DOS II czy My DOS. Jest osiem sektorów 256b, każdy sektor wykorzystywany:

    W pierwszej połówce na:

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

    w drugiej połówce sektora mieszczą się dodatkowe dane o:

      0.  niewykorzystane 
    1-2.  Llo-Lhi: ilość sektorów zajętych przez plik 
    3-4.  Slo-Shi: numer pierwszego sektora zajętego przez plik 
    5-9.  niewykorzystane 
     10.  dzień   1-31 
     11.  miesiąc 1-12 
     12.  rok     0-255 (gdzie rok 2003 zapisany jest jako 103) 
     13.  godzina 0-23 
     14.  minuta  0-59 
     15.  sekunda 0-59

    Wyjaśnienia wymaga bajt 1-4 obydwu połówek:

    ilość sektorów zajętych przez plik=...............lo+ 256*hi+ 65536*Llo 
    numer pierwszego sektora zajętego przez plik=.....lo+ 256*hi+ 65536*Slo

    5. Linki sektorów do sektora 65535 mają identyczne znaczenie jak w DOS II czy MY_DOS, czyli:

    #bajtu   -  znaczenie 
    253-254  -  lo -hi nr następnego sektora 
    255      -  ilość bajtów w sektorze, może być wartość: 1-253

    sektory od 65535 do końca mają linki zbudowane z:

    #bajtu   -  znaczenie 
    253-254  -  lo-hi nr następnego sektora 
    255      -  ilość bajtów w sektorze, może być wartość: 1-252 
    252      -  Nhi nr następnego sektora 

    gdzie nr następnego sektora: lo +256*hi +65536*Nhi

    Tu wykorzystuje możliwość nie zapełniania całego sektora danymi, co jest dopuszczalne w każdej wersji DOS 2, DOS II i My DOS... Jakie miało to dotychczas zastosowanie (zabezpieczenie przed kopiowaniem plikowym dyskietki) nie wiem, ale teraz można to wykorzystać...

    Oczywiście koniec pliku rozpoznawany jest po zerach w lo i hi. W bajcie 252 (czyli Nhi) może być wtedy dowolna wartość. Ponieważ sektor 65536 ($10000) nie jest wykorzystywany, ma we VTOC bit skasowany (podobnie jak sektor 720 $2D0).

    6. Niewykorzystane sektory (zawsze jako zajęte) to:

    0	  - bo nie istnieje 
    1-3	  - boot 
    368	  - VTOC który biegnie w DÓŁ	 
    369	  - początek głównego katalogu 
    720	  - zgodność z DOS II 
    65536 - aby ułatwić procedurę rozpoznawania końca pliku

    7. Trochę statystyki dla 126,5 MB

    Wszystkich sektorów:      518 063 
    Wolnych sektorów:         517 797 
    Długość ATR:          132 623 760 b

    Przykład VTOC dla ATR 126,5 MB

                 0,  1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f
    00>        ff,a5,e6,a5,e6, 0, 0, 0, 7, 7, f,ff,ff,ff,ff,ff,
    10>        ff,ff,ff,ff,ff,ff,ff,f0, 0, 0, 0, 0, 0, 0, 0, 0,   -tu zaczyna mapa bitowa
    20-2f>     0							 między 108 a 360 sektorem
    30>        0, 0, 0, 0, 0, 0, 0, 0, 7f,ff,ff,ff,ff,ff,ff,ff,   -tu jest katalog
    40-5f>     ff
    60>        ff,ff,ff,ff,7f,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,   -sektor 720 zajęty
    70-1fff>   ff
    2000>      ff,ff,ff,ff,ff,ff,ff,ff,ff,ff,7f,ff,ff,ff,ff,ff,   -sektor 65536 zajęty
    2010-fcff> ff
    fd00>      0

    Mapa bitowa zajmuje 253 sektory (od 108 do 360) czyli:

    253 * 256b = 64768 b * 8bit       =  (sektory po 256b) 
               = 518144 - (10 * 8bit) =  (pierwszy sektor ma 10 bajtów na dane) 
               = 518064 - 1           =  (sektor zerowy) 
               = 518063                  sektory do wykorzystania (na dane, katalogi i VTOC)

    Przykład wpisu do katalogu:

    plik           SPARTA_PLUGIN.TXT 
    zapisany jako  SPARUGIN TXT 
    długość        1131b 
    sektory        5	 
    first sector   4	 
    czas           2003-12-17  20:37:12  
    
    42 05 00 04 00 53 50 41 52 55 47 49 4E 54 58 54  - pierwsza połówka wpisu 
    00 00 00 00 00 00 00 00 00 00 11 0C 67 14 25 0C  - i druga

    Komentarze gości atari.area

    Momencik, uaktualniam...  

    Nie jesteś zalogowany. Tylko zarejestrowani i zalogowani użytkownicy mog± dodawać komentarze.

Lotharek.pl
Retronics
Grawitacja 2024
Lost Party 2024
Silly Venture 2024 SE

Szukaj

Wyszukiwarka przeszukuje zasoby atari.area, atariki oraz forum.

Twoliner

Momencik, uaktualniam...  .

Pamiętaj, żeby linki do Twolinera dodawać wyłącznie po skróceniu za pomocą serwisu tiny.pl. Jeśli coś Ciebie ominęło - skorzystaj z archiwum.

Network

konto

Nie jesteś zalogowany. Zaloguj się lub załóż konto

forum

Artykuły

Wywiady

Allegro

Jako, że Allegro.pl jest bardzo często odwiedzanym serwisem przez Atarowców, umiejscowiłem poniżej wyszukiwarkę produktów związanych z naszym kochanym Atari. Chcesz coś kupić - wystarczy wpisać w okienko poniżej.


Wystarczy wpisac czego szukamy i po chwili znajdujemy sie juz na Allegro.pl.