Rejestry msc IDE

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 12:40, 6 gru 2005
KMK (Dyskusja | wkład)
(a tego nie wiemy)
← Previous diff
Wersja z dnia 02:57, 9 gru 2005
KMK (Dyskusja | wkład)

Next diff →
Linia 106: Linia 106:
* [[Rejestry KMK/JŻ IDE]] * [[Rejestry KMK/JŻ IDE]]
-[[Kategoria:Atari 8-bit]]+[[Kategoria:Programowanie Atari 8-bit]]

Wersja z dnia 02:57, 9 gru 2005

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

AdresEtykietaOpis
$D108DATA.LOMłodszy bajt portu danych.
$D120DATA.HIStarszy 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)FEATURESRejestr 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.)
$D10ASCOUNTIlość sektorów do odczytu lub zapisu.
$D10BSNUMNumer sektora na ścieżce, który będzie zapisywany lub odczytywany.
$D10CCYL.LONumer cylindra (młodszy bajt).
$D10DCYL.HINumer cylindra (starszy bajt).
$D10ESDH

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)COMMANDRejestr 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)ALTSTATUSCień rejestru STATUS.

Zobacz też:

Personal tools