Rejestry msc IDE
From Atariki
←Older revision | Newer revision→
Procedura dostępu
Poniżej wymienione rejestry nie są dostępne wprost. Stają się dostępne po wybraniu urządzenia odpowiednim dla niego bitem w rejestrze PDVREG ($D1FF). System operacyjny komputera wykonuje to automatycznie przy każdym resecie (celem zainicjowania urządzeń) oraz przy odwołaniach do SIO (celem przeprowadzenia transferu danych). Jednak dostępu do rejestrów mogą potrzebować specjalistyczne programy narzędziowe i diagnostyczne.
- Wyszukiwanie urządzenia odbywa się w pętli, która ma osiem przebiegów.
- Za każdym przebiegiem ustawia się na 1 jeden bit rejestru PDVREG (najpierw bit 0, za następnym przebiegiem bit 1 itd.) kasując pozostałe.
- Po ustawieniu bitu trzeba skontrolować zawartość komórek $D803 i $D80B. Jeśli wartość ich jest równa odpowiednio $80 i $91, to znaczy, że aktywowane zostało jakieś urządzenie.
- Jeśli w komórkach $D804 i $D80C znajduje się wartość $48 ("H"), to aktywowanym urządzeniem jest interfejs msc.
Urządzenie odłącza się przez wpisanie zera do rejestru PDVREG ($D1FF).
Lista rejestrów
Adres | Etykieta | Opis |
$D108 | DATA.LO | Młodszy bajt portu danych. |
$D120 | DATA.HI | Starszy bajt portu danych. |
$D109 (R) | ERROR | Rejestr ERROR. Ustawiany na odpowiednią wartość, gdy bit 0 rejestru STATUS ma wartość 1:
W trybie diagnostycznym rejestr ERROR przyjmuje następujące wartości: ATA-1:
ATA-2 i późniejsze:
|
$D109 (W) | FEATURES | Rejestr używany przez niektóre komendy opcjonalne oraz przez komendę SET FEATURES, która wybiera tryby pracy specyficzne dla danego urządzenia (np. włącza i wyłącza cache itp.) |
$D10A | SCOUNT | Ilość sektorów do odczytu lub zapisu. |
$D10B | SNUM | Numer sektora na ścieżce, który będzie zapisywany lub odczytywany. |
$D10C | CYL.LO | Numer cylindra (młodszy bajt). |
$D10D | CYL.HI | Numer cylindra (starszy bajt). |
$D10E | SDH | Rejestr SDH:
|
$D10F (W) | COMMAND | Rejestr do wpisywania komend kontrolera IDE. |
$D10F (R) | STATUS | Rejestr statusu:
|
$D110 (W) | FIXDISK | Tzw. fixed disk control register. Używany jest głównie do zresetowania kontrolera.
Pozostałe bity są zarezerwowane. |
$D110 (R) | ALTSTATUS | Cień rejestru STATUS. |