Rejestry KMK/JŻ IDE
From Atariki
Wersja z dnia 18:18, 6 kwi 2010 KMK (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 18:20, 6 kwi 2010 KMK (Dyskusja | wkład) (→Zobacz też:) Next diff → |
||
Linia 117: | Linia 117: | ||
</table> | </table> | ||
- | ==Zobacz też:== | + | ==Zobacz też== |
* [[KMK/JŻ IDE]] | * [[KMK/JŻ IDE]] |
Wersja z dnia 18:20, 6 kwi 2010
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 (jak FDISK) 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 $D800-$D802 znajdują się kolejno wartości $28, $07, $70, to aktywowanym urządzeniem jest interfejs KMK/JŻ IDE.
Urządzenie odłącza się przez wpisanie zera do rejestru PDVREG ($D1FF).
Lista rejestrów
Adres | Etykieta | Opis |
$D100 | DATA.HI | Starszy bajt portu danych. |
$D110 | DATA.LO | Młodszy bajt portu danych. |
$D111 (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:
|
$D111 (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.) |
$D112 | SCOUNT | Liczba sektorów do odczytu lub zapisu. 0 oznacza 256 sektorów. |
$D113 | SNUM | W trybie CHS: numer sektora na ścieżce, który będzie zapisywany lub odczytywany. Zakres teoretycznie od 1 do 255, w praktyce od 1 do liczby określonej przez geometrię dysku. W trybie LBA: bity 0-7 28-bitowego numeru sektora LBA. |
$D114 | CYL.LO | W trybie CHS: młodszy bajt numeru cylindra. W trybie LBA: bity 8-15 28-bitowego numeru sektora LBA. |
$D115 | CYL.HI | W trybie CHS: starszy bajt numeru cylindra. W trybie LBA: bity 16-23 28-bitowego numeru sektora LBA. |
$D116 | SDH | Rejestr SDH:
Według pierwotnych założeń bitami 7 i 5 wybierano rozmiar sektora (256, 512, 1024 lub 2048 bajtów). Stąd nazwa rejestru: SDH = Sector size, Device, Head. |
$D117 (W) | COMMAND | Rejestr do wpisywania komend kontrolera IDE. Oprogramowanie interfejsu używa następujących komend:
|
$D117 (R) | STATUS | Rejestr statusu:
Gdy bit 7 (BUSY) jest ustawiony, wszystkie inne bity tego rejestru oraz wartości wszystkich innych rejestrów ATA są nieokreślone. |
$D11E (W) | FIXDISK | Tzw. fixed disk control register. Używany jest głównie do zresetowania kontrolera.
Pozostałe bity są zarezerwowane. |
$D11E (R) | ALTSTATUS | Cień rejestru STATUS. |