Может в цикле TEST добавить счетчик и, если слишком долго в нем сидим, то выйти из цикла и прочитать регистр ошибок? Вобще-то регистр ошибок в любом случае неплохо читать, хотя бы чтобы убедиться, что на "нормальных" винтах в нем нормальные значения.
Еще можно для очень старых винтов попробовать альтернативный код команды 21h (хотя это вряд ли хоть как-то скажется).
---------- Post added at 20:02 ---------- Previous post was at 19:49 ----------
Еще можно попробовать более "жестко" задать значение для старшего регистра цилиндра. Например после IN 56h добавить ORI 0A0h (или 0E0h для LBA). Бит выбора устройства тоже можно попробовать задать принудительно.




Ответить с цитированием