описание портов HDD [2/3]
ZXNet эхоконференция «real.speccy»
От Valerij Kozhevnikov (500:95/162. → Кому All 07.04.1998
Hello, Roman!
Регистр ошибок #F6AF (in) определяет состояное HDD после
выполнения операции. Состояное этого регистра действительно:
- после выполнения команды, если установлен бит "Error" в ре-
гистре состояния.
- после выполнения команды "диагностика" или после выполнения
внутренней диагностики HDD по системному сбросу.
В диагностическом режиме коды регистра ошибок определяют
следующее:
#01 нет ошибки
#02 ошибка микроконтроллера
#03 ошибка буферного ОЗУ
#04 ошибка аппаратуры ECC
#05 ошибка микропроцессора
#8x готовь гроб, копай могилу нахрен.
Значения битов регистра ошибок после выполнения команды:
┌───────┬───────┬──────┬───────┬──────┬───────┬──────┬──────┐
│ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │
├───────┼───────┼──────┼───────┼──────┼───────┼──────┼──────┤
│ BBK │ UNC │ 0 │ IDNF │ 0 │ ABRT │ T0NF │ AMNF │
└───────┴───────┴──────┴───────┴──────┴───────┴──────┴──────┘
bit 0 - Data Adress Mark Not Found
- устанавливается во время выполнения команды "чтение секто-
ра", если адресный маркер данных сектора не найден после пра-
вильного нахождения идентификатора этого сектора.
bit 1 - Track 0 Not Found
- устанавливается только в команде "рекалибровка", если после
2048 шагов не обнаружена дорожка 0.
bit 2 - Aborted Command
- устанавливается при получении из HDD состояния "Write fa-
ult", "Not seek complete", "Drive not ready" или когда была
загружена недействительная команда. Причина ошибки может быть
определена из регистров состояния и ошибки.
bit 3 - not used (=0)
bit 4 - ID Not Found
- требуемые цилиндр, головка, сектор не могут быть обнаружены
или же произошла ошибка ECC в поле идентификатора.
bit 5 - not used (=0)
bit 6 - Uncorrect Data
- ошибка ECC в поле данных. Устанавливается в случае некор-
ректируемой ошибки.
bit 7 - Bad Mark Block
- в идентификаторе обнаружена метка дефектного сектора.
Регистр предкомпенсации #F6AF (out) использовался для ука-
зания номера цилиндра с которого необходимо выполнить предком-
пенсацию. В современных моделях предкомпенсацией управляет сам
накопитель, поэтому данный регистр может использоваться для
других целей.
Регистр счетчика секторов #EEAF содержит количество секто-
ров для операций чтения/записи. Значение этого регистра
уменьшается на 1 при обработке каждого сектора. Передача 1
сектора происходит при значении 1, при значении 0 - 256 секто-
ров. Если при выполнении мультисекторной передачи произошла
ошибка записи или чтения очередного сектора, то передача прек-
ращается, и в регистре счетчика секторов находится кол-во сек-
торов, которое осталось после обнаружения ошибки. При успешном
завершении команды содержит 0.
Регистр номера сектора #E6AF содержит стартовый номер сек-
тора для операций чтения-записи. После обработки каждого сек-
тора содержимое инкрементируется. После завершения команды со-
держит номер последнего обработанного сектора или номер секто-
ра в котором произошла ошибка.
Регистры младшего #DEAF и старшего #D6AF байтов номера ци-
линдра определяют цилиндр, для которого будет выполняться дан-
ная команда.
Регистр накопителя/головки #CEAF (in/out) имеет вид:
┌───────┬───────┬──────┬───────┬──────┬───────┬──────┬──────┐
│ 7 │ 6 │ 5 │ 4 │ 3 │ 2 │ 1 │ 0 │
├───────┼───────┼──────┼───────┼──────┼───────┼──────┼──────┤
│ 1 │ 0 │ 1 │ DRV │ HS3 │ HS2 │ HS1 │ HS0 │
└───────┴───────┴──────┴───────┴──────┴───────┴──────┴──────┘
bit 0-3 - двоичный код выбранной головки
bit 4 - выбор HDD, 0 - накопитель 0
1 - накопитель 1
bit 5,6 - размер сектора:
00 резерв
01 резерв
10 512 байт/сектор.
11 резерв
bit 7 - резерв
Jason.
Powered by ScorpionZS256turbo+/SMUC/HDD'IDE130Mb/FDD'800/
/CMOS/Covox/ATkbd/Mouse/CDOS...