Rejestry KMK/JŻ IDE

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
Wersja z dnia 19:00, 18 sie 2005
KMK (Dyskusja | wkład)
(Lista rejestrów)
← Previous diff
Wersja z dnia 19:07, 18 sie 2005
KMK (Dyskusja | wkład)
(Lista rejestrów)
Next diff →
Linia 19: Linia 19:
<tr><td>$D110</td><td>DATA.HI</td><td>Starszy bajt portu danych.</td></tr> <tr><td>$D110</td><td>DATA.HI</td><td>Starszy bajt portu danych.</td></tr>
-<tr><td>$D111</td><td>ERROR</td><td>Rejestr ERROR.</td></tr>+<tr><td>$D111</td><td>ERROR</td><td><p>Rejestr ERROR. Ustawiany na odpowiednią wartość, gdy bit 0 rejestru STATUS ma wartość 1:</p>
 + 
 +* bit 7 - Bad sector
 +* bit 6 - Uncorrectable ECC error
 +* bit 5 - zarezerwowany
 +* bit 4 - ID not found
 +* bit 3 - zarezerwowany
 +* bit 2 - Aborted command
 +* bit 1 - Track 0 not found
 +* bit 0 - Data address mark not found
 + 
 +<p>W trybie diagnostycznym rejestr ERROR przyjmuje następujące wartości:</p>
 + 
 +* 1 - NO ERRORS
 +* 2 - Formatter device error
 +* 3 - Sector buffer error
 +* 4 - ECC circuitry error
 +* 5 - Controlling MPU error
 + 
 +</td></tr>
<tr><td>$D112</td><td>SCOUNT</td><td>Ilość sektorów do odczytu lub zapisu.</td></tr> <tr><td>$D112</td><td>SCOUNT</td><td>Ilość sektorów do odczytu lub zapisu.</td></tr>
Linia 29: Linia 48:
<tr><td>$D115</td><td>CYL.HI</td><td>Numer cylindra (starszy bajt).</td></tr> <tr><td>$D115</td><td>CYL.HI</td><td>Numer cylindra (starszy bajt).</td></tr>
-<tr><td>$D116</td><td>SDH</td><td>Rejestr SDH:+<tr><td>$D116</td><td>SDH</td><td><p>Rejestr SDH:</p>
 + 
* bit 7 - zarezerwowany * bit 7 - zarezerwowany
* bit 6 - mode select (0 = CHS, 1 = LBA) * bit 6 - mode select (0 = CHS, 1 = LBA)
* bit 5 - zarezerwowany * bit 5 - zarezerwowany
-* bit 4 - drive select (0 master, 1 slave)+* bit 4 - drive select (0 = master, 1 = slave)
* bity 3-0 - numer głowicy * bity 3-0 - numer głowicy
 +
</td></tr> </td></tr>
Linia 47: Linia 68:
</td></tr> </td></tr>
-<tr><td>$D117 (R)</td><td>STATUS</td><td>Rejestr statusu.</td></tr>+<tr><td>$D117 (R)</td><td>STATUS</td><td><p>Rejestr statusu</p>:
 + 
 +* bit 7 - Busy
 +* bit 6 - Ready
 +* bit 5 - zarezerwowany
 +* bit 4 - Seek complete
 +* bit 3 - zarezerwowany
 +* bit 2 - Data corrected successfully
 +* bit 1 - Index pulse
 +* bit 0 - Error
 + 
 +</td></tr>
<tr><td>$D118 (W)</td><td>FIXDISK</td><td>Tzw. fixed disk control register.</td></tr> <tr><td>$D118 (W)</td><td>FIXDISK</td><td>Tzw. fixed disk control register.</td></tr>

Wersja z dnia 19:07, 18 sie 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 (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

AdresEtykietaOpis
$D100DATA.LOMłodszy bajt portu danych.
$D110DATA.HIStarszy bajt portu danych.
$D111ERROR

Rejestr ERROR. Ustawiany na odpowiednią wartość, gdy bit 0 rejestru STATUS ma wartość 1:

  • bit 7 - Bad sector
  • bit 6 - Uncorrectable ECC error
  • bit 5 - zarezerwowany
  • bit 4 - ID not found
  • bit 3 - zarezerwowany
  • 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:

  • 1 - NO ERRORS
  • 2 - Formatter device error
  • 3 - Sector buffer error
  • 4 - ECC circuitry error
  • 5 - Controlling MPU error
$D112SCOUNTIlość sektorów do odczytu lub zapisu.
$D113SNUMNumer sektora na ścieżce, który będzie zapisywany lub odczytywany.
$D114CYL.LONumer cylindra (młodszy bajt).
$D115CYL.HINumer cylindra (starszy bajt).
$D116SDH

Rejestr SDH:

  • bit 7 - zarezerwowany
  • bit 6 - mode select (0 = CHS, 1 = LBA)
  • bit 5 - zarezerwowany
  • bit 4 - drive select (0 = master, 1 = slave)
  • bity 3-0 - numer głowicy
$D117 (W)COMMANDRejestr do wpisywania komend kontrolera IDE. Oprogramowanie interfejsu używa następujących komend:
  • $10 - RECALIBRATE
  • $20 - READ SECTOR
  • $30 - WRITE SECTOR
  • $70 - SEEK
  • $90 - EXECUTE DIAGNOSTICS
  • $91 - SET DRIVE PARAMETERS
  • $EC - IDENTIFY DRIVE
$D117 (R)STATUS

Rejestr statusu

:
  • bit 7 - Busy
  • bit 6 - Ready
  • bit 5 - zarezerwowany
  • bit 4 - Seek complete
  • bit 3 - zarezerwowany
  • bit 2 - Data corrected successfully
  • bit 1 - Index pulse
  • bit 0 - Error
$D118 (W)FIXDISKTzw. fixed disk control register.
$D118 (R)ALTSTATUSCień rejestru STATUS.

Zobacz też:

Personal tools