pik33 napisał/a:Poza tym, z tego co pamiętam, to niezależnie od tego, jaki jest format dyskietki, pierwsze 3 sektory w Atari mają zawsze 128 bajtów w standardowym formacie.
Niestety, mylisz się. W DD te sektory mają (fizycznie) po 256 bajtów.
Analizując ich zawartość powinno dać się określić, jak dalej czytać tę dyskietkę.
I tak i nie. "Analizą zawartości" powinien zająć się DOS. Ale nie stacja dysków. Pomijając już, że większość atarowskich DOS-ów zapisuje tam tylko kod bootloadera (czyli analiza zawartości zda się psu na budę), i przyjmując idealistyczne założenie, że wszystkie dyskietki są w formacie SpartaDOS, nie da się niestety z parametrów zapisanych w sektorze nr 1 odczytać gęstości, gdyż te parametry nie mówią nic o fizycznym formacie dyskietki, tylko o formacie logicznym. Mówiąc prościej, nic nie stoi na przeszkodzie, żeby w sektorze nr 1 dyskietki 720k były zapisane parametry jak dla dyskietki 180k.
@bezrobotny:
Mogę coś przeoczyć, bo kontrolerem WD 1772 (i pokrewnymi) bawiłem się ostatnio około 15 lat temu. Niemniej wydaje mi się, że odróżnienie dyskietki 360k od takiej, która z 360k została przeformatowana na 180k, nie jest możliwe. Z drugiej strony, jeśli logiczny format jest 180k, a fizyczny 360, to nic nie szkodzi, DOS i tak nie zapisze więcej danych niż pozwala informacja zapisana na dyskietce (np. bitmapa), więc stacja spokojnie sobie może myśleć, że to jest 360k, DOS wie swoje w tym przypadku.
Ogólnie algorytm rozpoznawania gęstości polega na próbach odczytu nagłówków sektorów w kolejnych obrotach dyskietki. Kiedyś sobie to rozpisywałem i zdaje się, że w ośmiu obrotach powinno dać się zidentyfikować wszystkie gęstości. Np. jeśli w FM nie czyta się nic, to gęstość jest MFM. Jeśli w MFM odczytasz ze ścieżki 0 sektor nr 26, to to jest gęstość średnia. Jeśli nie, to podwójna. Dalej, jeśli masz podwójną na stronie A, to sprawdzasz odczyt ze strony B. Itd.
KMK
? HEX$(6670358)