Rejestry msc IDE

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 19:25, 20 wrz 2005
KMK (Dyskusja | wkład)

← Previous diff
Aktualna wersja
KMK (Dyskusja | wkład)

Linia 1: Linia 1:
-====Procedura dostępu====+==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.+Poniżej wymienione rejestry nie są dostępne wprost. Stają się dostępne po wybraniu urządzenia odpowiednim dla niego bitem w rejestrze [[Rejestry PBI#PDVREG|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. * Wyszukiwanie urządzenia odbywa się w pętli, która ma osiem przebiegów.
Linia 8: Linia 8:
* Jeśli w komórkach $D804 i $D80C znajduje się wartość $48 ("H"), to aktywowanym urządzeniem jest interfejs [[msc]]. * 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).+Urządzenie odłącza się przez wpisanie zera do rejestru [[Rejestry PBI#PDVREG|PDVREG ($D1FF)]].
-====Lista rejestrów====+==Lista rejestrów==
<table border = 1 cellpadding = 5> <table border = 1 cellpadding = 5>
Linia 70: Linia 70:
</td></tr> </td></tr>
-<tr><td>$D10F (W)</td><td>COMMAND</td><td>Rejestr do wpisywania komend kontrolera IDE. Oprogramowanie interfejsu używa następujących komend:+<tr><td>$D10F (W)</td><td>COMMAND</td><td>Rejestr do wpisywania komend kontrolera IDE.
-* $10 - RECALIBRATE+
-* $20 - READ SECTOR+
-* $30 - WRITE SECTOR+
-* $70 - SEEK+
-* $90 - EXECUTE DIAGNOSTICS+
-* $91 - SET DRIVE PARAMETERS+
-* $EC - IDENTIFY DRIVE+
</td></tr> </td></tr>
Linia 107: Linia 100:
</table> </table>
-====Zobacz też:====+==Zobacz też==
- +* [[msc]]
* [[Mapa pamięci]] * [[Mapa pamięci]]
-* [[msc]]+* [[Rejestry KMK/JŻ IDE]]
-[[Kategoria:Atari 8-bit]]+[[Kategoria:Programowanie Atari 8-bit]]

Aktualna wersja

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