Описание портов контроллера жесткого диска
50H Регистр данных. Чтение(запись) данных в(из) буфер сектора контроллера
51H Запись: Write Precompensation register. Turn on write precompensation.
Чтение: Регистр ошибок. Содержит признаки последней ошибки.
╓7┬6┬5┬4┬3┬2┬1┬0╖
║ │ │0│ │0│ │ │ ║
╙╥┴╥┴─┴╥┴─┴╥┴╥┴╥╜ бит
║ ║ ║ ║ ║ ╚═ 0: адресный маркер данных не найден
║ ║ ║ ║ ╚═══ 1: ошибка на дорожке 0
║ ║ ║ ╚═════ 2: команда отвергнута
║ ║ ╚═════════ 4: ID сектора не найден
║ ╚═════════════ 6: ошибка ECC: некорректируемая ошибка данных
╚═══════════════ 7: плохой блок
52H Счетчик числа секторов для операции чтения/записи
53H Текущий/начальный номер логического сектора для чтения/записи
54H Цилиндр, старшие (биты 0-1 - это биты 8-9 10-битового номера цилиндра)
55H Цилиндр, младшие (биты 0-7 10-битового номера цилиндра)
56H Биты определяют устройство и головку для операции чтения/записи
57H Запись: регистр команды (См. Tech Ref о подробностях)
1xH = сброс на цилиндр 0 (x = step rate)
7xH = искать до цилиндра (x = step rate)
2xH = сектор чтения (x = retry and ECC-read)
3xH = сектор записи (x = retry and ECC-read)
50H = форматировать дорожку
4xH = чтение для верификации (x = retry)
90H = диагностика
91H = уст.параметры (число головок, секторов) для выбр.устр.
Чтение: регистр статуса
╓7┬6┬5┬4┬3┬2┬1┬0╖
║ │ │ │ │ │ │ │ ║
╙╥┴╥┴╥┴╥┴╥┴╥┴╥┴╥╜ бит
║ ║ ║ ║ ║ ║ ║ ╚═ 0: 1=предыдущая команда закончилась с ошибкой
║ ║ ║ ║ ║ ║ ╚═══ 1: уст. в 1 при обнаружении индексного отверстия
║ ║ ║ ║ ║ ╚═════ 2: данные исправлены. Была ошибка, но ECC исправил.
║ ║ ║ ║ ╚═══════ 3: запрос данных. Буфер ждет данных (занято)
║ ║ ║ ╚═════════ 4: поиск завершен
║ ║ ╚═══════════ 5: сбой записи
║ ╚═════════════ 6: устройство готово к операции (если бит 4=1)
╚═══════════════ 7: занято. 1=работает команда (другие биты неверны)
58H Регистр данных. Чтение(запись) данных в(из) буфер сектора контроллера
5fH Системный сброс (лучше не пользоваться, сходство с 57Н без обнуления
микросхем жесткого диска).