Вроде бы ошибка в UKNCBTL:
Необходимо ещё сбросить бит готовности буфера:
m_status &= ~IDE_STATUS_BUFFER_READY;
Данная прошивка после подачи команды чтения не смотрит бит занятости BUSY, а сразу опрашивает бит готовности буфера.
Алексей, спасибо - вы абсолютно правы.
Поправленная версия - в этом сообщении.