
Сообщение от
nzeemin
HDD Write 1f6 <-- 0xff00
HDD Write 1f5 <-- 0xff00
HDD Write 1f4 <-- 0xff00
HDD Write 1f3 <-- 0xff01
HDD Write 1f2 <-- 0xff01
HDD Write 1f7 <-- 0x0020
HDD COMMAND 20 (READ MULT): C=0, H=0, SN=1, SC=1
HDD Write 1f2 <-- 0xf522
HDD Write 1f6 <-- 0x0009
HDD Read sector complete
HDD Write 1f7 <-- 0x0091
HDD COMMAND 91 (SET CONFIG): H=9, SC=33
Вот здесь непонятка -- получается что сначала задаются параметры следующей команды, но затем завершается передача сектора, что приводит к декременту sector_count (SC, порт 1F2). В результате команда 91h получает параметр SC=33, что конечно неверно и в дальнейшем приводит к ошибкам позиционирования.
Либо я тут неправильно понимаю логику SC и он должен уменьшаться до завершения передачи данных сектора -- но неясно в какой момент.
Если быть точным, то установка параметров команды 91h происходит сразу же после чтения первых двух байт сектора:
HDD Read 1f7 0xffd0
HDD Read 1f7 0xffd0
HDD Read 1f7 0xff58 ; Снят сигнал BUSY
HDD Read 1f7 0xff58
HDD Read 1f0 0xf5dd ; Прочитаны первые два байта 1-го сектора
HDD Write 1f2 <-- 0xf522 ; Установка параметров команды 91h
HDD Write 1f6 <-- 0x0009
HDD Read 1f0 0x5d4d
HDD Read 1f0 0x5d4d