26 Ostatnio edytowany przez pajero (2010-04-13 00:11:44)

Bootują się na pewno dobrze?

Przemieszczenie DUP.SYS nie wpłynie na jego próbę odczytu. To przecież zwykły plik.

Natomiast przemieszczenie DOS.SYS - a owszem.
Każdy dos ma "ukryte" miejsce przechowywania LINKU do następnych sektorów po boot-cie, czyli 1-3.
Dla czystej dyskietki jest to sektor 4. Ale w momencie inicjowania dyskietki zapisanej plikami funkcją "H" ten link będzie wskazywał na pierwszy wolny sektor - tam gdzie trafi DOS.SYS po 384 bajcie.

W MyDos są to bajty $0f i $10  (Lo/Hi LINK) pierwszego sektora.

Zapodaj mi Twój ATR, albo choć wciśnij F3 w ATRze na wpisie "Info plugin  (FREE)"
Zobacz co podaje:
- FLink Dos= $xxxx
i porównaj czy na pewno kontynuacja tego LINKu $xxxx jest dobra po sortowaniu?

27 Ostatnio edytowany przez drac030 (2010-04-13 01:53:48)

atra już sformatowałem, poprawiwszy uprzednio ręcznie pozycję DUP.SYS w katalogu - dlatego, że to, jak się okazało, była moja jedyna dobra kopia MyDOS-a 4.50, więc musiałem ją odzyskać :/

DOS.SYS się będzie bootował dobrze mimo przesortowania, bo w bootsektorach jest zapisany numer pierwszego sektora zajętego przez ten plik, a na to sortowanie katalogu nie wpływa. Jak DOS.SYS się zaczynał od sektora nr 4, albo 550, to po sorcie nadal się będzie zaczynał od 4 (albo 550). Kod bootsektora nie odczytuje katalogu, więc nie ma pojęcia, jaki "powinien" być numer pliku DOS.SYS. Nie zauważa zatem, że się on nie zgadza.

DUP.SYS natomiast - tak samo jak każdy zwykły plik - się nie odczyta, bo numer pozycji w katalogu przestanie się zgadzać z numerem zapisanym przy tworzeniu tego pliku.

Taka sytuacja:

Nr Nazwa
0  DOS.SYS
1  DUP.SYS

DUP.SYS jest drugi w katalogu więc ma nr 1 (licząc od zera). A więc, w każdym sektorze pliku DUP.SYS każde pierwsze 6 bitów linku sektorowego (bajt 125 sektora SD/ED albo 253 DD) będzie miało wartość $01, bo taki jest numer tego pliku (a numerem pliku jest pozycja jego wpisu w katalogu).

Teraz, załóżmy że katalog przesortujemy i po sortowaniu mamy taką sytuację:

Nr Nazwa
0  DUP.SYS
1  DOS.SYS

DOS.SYS się odczyta przy boocie, bo bootloader nie czyta katalogu, więc w nosie ma, czy pozycja w katalogu i numer pliku się zgadzają. Natomiast DOS.SYS po uruchomieniu próbuje otworzyć DUP.SYS jako normalny plik. Ten plik ma w katalogu nr 0 (bo jest na pierwszej pozycji) ale w sektorach danych (w pierwszych 6 bitach linku) ma zapisany nr 1. Więc następuje mismatch, błąd nr 164, plik nie daje się odczytać.

Przemieszczenie pliku w katalogu jak najbardziej "wpływa". Bo: nr_wpisu_w_katalogu = nr_pliku, a nr_pliku jest zapisany w sektorach danych pliku i musi się zgadzać z nr_wpisu_w_katalogu, bo inaczej DOS zgłasza błąd 164.

KMK
? HEX$(6670358)

28

Prog tylko miesza w kolejności wpisów w katalogu, a nie tasuje samych sektorów. Czyli Bootowanie uda się.

Co do reszty. Masz całkowitą rację. Dla Dos 2 bez aktualizacji wszystkich linków dla każdego wpisu sortowanie tylko zrobi bajzel i błąd 164. A to oznacza odczyt/zapis całej dyskietki.

W załączniku moje zbiory My-Dosów....

Post's attachments

MY DOS my-dos.zip 920.91 kb, liczba pobrań: 8 (od 2010-04-13) 

Tylko zalogowani mogą pobierać załączniki.