.
Учитывая, что все тесты XXDP теперь проходят - можно считать, что ситуация с работой контроллера RK немного прояснилась.
Из не вполне однозначно описанного в документации выяснилось следующее:
1. Номер цилиндра в заголовке сектора пишется в формате RKDA ( со сдвигом влево ), когда цилиндру 001 соответствует номер 040.
2. Номер привода в старших битах RKDS имеет смысл только при установленном бите SCP в RKCS, во всех остальных случаях там нули.
3. Бит SCP в RKCS сохраняется установленным, пока установлены биты 06 и 07 ( разрешение прерываний и готовность контроллера ).
4. Бит SCP устанавливается в RKCS, только когда при прерывании от POLL-системы процессор уже принял от контроллера адрес вектора.
5. Если прерывание SCP от POLL-системы не было принято процессором, маска SCP не очищена и признак SCP у вызвавшего прерывание привода не сброшен - прерывание SCP будет выставлено снова после приёма процессором следующего прерывания готовности.
6. Номер текущего сектора выбранного привода в RKDS циклически инкрементируется непрерывно ( с частотой 300 Гц ) пока крутится диск - движение головки не влияет.
7. Регистры контроллера доступны для байтовой записи.
Не охвачены тестами XXDP и остались неясными следующие вопросы:
1. Как ведёт себя контроллер при передаче ему нечётного адреса буфера в ОЗУ.
2. Как ведёт себя занятый контроллер при записи в регистр RKCS: а) без установки бита GO; б) с установкой бита GO.
3. Какие команды, кроме сброса, может выполнить контроллер при установленном бите HARD ERROR ( бит 14 ) в RKCS.

