Rejestry msc IDE

Z Atariki mirror
Przejdź do nawigacjiPrzejdź do wyszukiwania

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:
  • bit 7 - Bad sector (ATA-1) lub zarezerwowany (ATA-2 i późniejsze)
  • bit 6 - Uncorrectable ECC error
  • bit 5 - Media Changed
  • bit 4 - ID not found
  • bit 3 - Media Change Requested
  • bit 2 - Aborted command
  • bit 1 - Track 0 not found
  • bit 0 - Data address mark not found

W trybie diagnostycznym rejestr ERROR przyjmuje następujące wartości:

ATA-1:

  • $01 - NO ERRORS
  • $02 - Formatter device error
  • $03 - Sector buffer error
  • $04 - ECC circuitry error
  • $05 - Controlling MPU error
  • $8x - Slave drive failed

ATA-2 i późniejsze:

  • $01 - Master passed, slave passed or not present
  • $00, $02-$7F - Master failed, slave passed or not present
  • $81 - Master passed, slave failed
  • $80, $82-$FF - Master failed, slave failed
$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:
  • bit 7 - zarezerwowany, równy 1
  • bit 6 - mode select (0 = CHS, 1 = LBA)
  • bit 5 - zarezerwowany, równy 1
  • bit 4 - drive select (0 = master, 1 = slave)
  • bity 3-0 - numer głowicy
$D10F (W) COMMAND Rejestr do wpisywania komend kontrolera IDE.
$D10F (R) STATUS Rejestr statusu:
  • bit 7 - Busy
  • bit 6 - Ready
  • bit 5 - Write fault (ATA-1), lub Device fault (ATA-2 i późniejsze)
  • bit 4 - Seek complete
  • bit 3 - Data request (DRQ)
  • bit 2 - Data corrected successfully
  • bit 1 - Index pulse
  • bit 0 - Error
$D110 (W) FIXDISK Tzw. fixed disk control register. Używany jest głównie do zresetowania kontrolera.
  • bit 2 - SRST, ustawienie tego bitu na co najmniej 20 ms powoduje reset kontrolera
  • bit 1 - nIEN, Interrupt Enable (nie używany na Atari)
  • bit 0 - powinien być zawsze ustawiany na 0

Pozostałe bity są zarezerwowane.

$D110 (R) ALTSTATUS Cień rejestru STATUS.

Zobacz też