Достаточно номера блока. WCNT не требуется - просто ни в одной операционке не будет поддерживаться, а BUFF и так хорошо работает. Ну и чтобы сама команда задания блока обнуляла старшую часть для совместимости.
Вид для печати
Чтобы контроллер включил быстрое позиционирование, на винчестере надо не то одеть, не то снять джампер DS3, при установленном DS0. Смысл - заземлить линию DS3. Линия DS0 со стороны контроллера всегда заземлена, ибо контроллер всегда работает с накопителем номер ноль и с другими не может. А контакт, который в интерфейсе ST412/506 называется DS3, в контроллере DW используется, как сигнал "быстрый диск". Обычно он "подтянут" к +5В, а, напялив джампер, мы его заземляем.
- - - Добавлено - - -
Команда задания младших битов номера блока.
Как выяснилось - надо ещё и две дополнительных команды для получения размера, потому что обычная команда округляет старшие размеры до 0xFFFF.
В итоге добавились такие команды:
- - - Добавлено - - -Код:#define HD_GetUnitSizeLo 017
#define HD_SetBlockNumHi 022
#define HD_GetUnitSizeHi 027
В следующем релизе эмулятор DW будет использовать быстрое позиционирование для дисков > 5Мб.
Учитывая, что этот бит должен быть установлен в записываемом в CSR байте команды - можно переделать команду HD_GetUnitSizeLo на код 047 и тогда мы приходим к тому, что "стоячий" бит 040 в CSR означает, что к выбранному приводу подключен большой образ, причём стоять он может постоянно - по чтению и записи CSR развязан. Сейчас заметил, что при переходе на новую версию контроллера в младшем байте CSR стал виден код предыдущей команды - это неправильно. В младшем байте CSR должны быть видны только биты признаков.
Как включить окошко лога для HD? Чтоб не копаться по конфигам... Нашел почему без пинка RSX не запускается сосле загрузкиm осталось понять когда условие возникает. Ну и попутно - может сразу бегло взглянуть - не может ли где выдаться код ошибки 277 (IE.OFL) при выполнении команды 1 там где диск есть :)