-
31. Data: 2024-07-05 12:13:16
Temat: Re: Procesor NMOS i karta CF
Od: "J.F" <j...@p...onet.pl>
On Wed, 3 Jul 2024 08:10:31 +0200, Atlantis wrote:
> Dodałem do programu printy debugowe, które informują o wejściu w
> poszczególne procedury BIOS-a oraz zrzucają zawartość poszczególnych
> parametrów odpowiedzialnych za operacje dyskowe, które są w nich ustawianie.
>
> Z szybkiej analizy tych logów wynika, że przy starcie systemu:
> 1. Cyklicznie są wołane procedury SETDMA, SELDSK, SETTRK, SECTRN, SETSEC
> i READ.
To chyba normalne - potrzebne do czytania danych.
> 2. Parametr TRACK ma na początku wartość 0x0000, a potem jest
> sukcesywnie podbijany o jeden w zakresie od 0x0020 do 0x003F.
Chyba też normalne - czyta katalog, a potem plik.
> 3. Parametr SECTOR przyjmuje wartości od 0 do 3, przechodząc jeden cykl
> na jedno podbicie parametru TRACK.
To też w miare normalne - czytasz kolejne sektory.
Tylko ... nie za mało? 4 sektory na ścieżce? Sektory po 128 czy 512B
Moze implementacji na karcie CF tak najprosciej.
> 4. Parametr DMA przyjmuje albo adres bufora DISK_BUFFER (0x0080) albo
> DIRBUF.
> 5. Odbywają się sukcesywne odczyty z karty CF, a wartość LBA jest
> liczona poprawnie (adres początku partycji + parametr TRACK).
>
> Printy debugowe mogą być włączane i wyłączane dyrektywą budowania
> warunkowego. I tutaj jest jedna rzecz, która mnie zastanawia - kod
> zachowuje się inaczej po dodaniu tych printów.
>
> Jeśli je włączę, system wchodzi w procedurę BOOT, zaczyna czytać kartę i
> zrzuca powyżej wymienione logi. Potem wyświetla prompt i zawiesza się -
> klawiatura przestaje reagować.
>
> Jeśli logi WYŁĄCZĘ system się uruchamia, czyta kartę (nie mam oczywiście
> logów, ale widzę świecenie diody aktywności) po czym wyświetla prompt i
> pozwala mi wypisywać polecenia.
Nie pamietam ... ale gdzie masz ustawiony wskaźnik stosu?
Byc może z logiem zużywa parę bajtów więcej i zajeżdza cos poniżej ?
Juz nie pamietam, ale czy shell (CMD ?) nie ładował się do góry
pamięci?
Ewentualnie - czytane dane zajeżdzają stos.
> Zwykle wtedy dzieje się jedna z dwóch
> rzeczy:
> - System zawiesza się po wykonaniu komendy DIR.
> - System zwraca niepełna zawartość dysku po wpisaniu komendy DIR, ale
> pozwala na wpisywanie kolejnych komend.
To już chyba moze być objaw gubienia bajtów z sektorów.
J.