Где-то чуть больше полугода назад, во время сборки Орион-512, меня удивляло одно обстоятельство - кривой IDE-интерфейс через КР580ВВ55...
Намучавшись с ним вдоволь, решил как-то исправить эту ситуацию.
Да и Error404 меня всётаки допёк...
У Ориона есть одно преимущество - порты ввода/вывода отображены на память, соответственно я решил использовать свойство процессора писать 16-ти битные регистровые пары туда.
Сообразил схемку (IDE.pdf), которая позволяет это делать напрямую с винчестером.
Пример кода записи/чтения на схеме.
Немного поясню как она работает для "программеров":
Как известно процессор пишет регистровые пары в память начиная с младшего байта, поэтому, во время записи, нужно защёлкивать младший байт во временном регистре U2, а уже при записи старшего байта, содержимое регистра выдаётся на шину винта в D7-D0, а D15-D8 передаётся напрямую через шинный формирователь U4.
Во время чтения всё происходит в обратном порядке. D7-D0 читаются напрямую через U1, и в этот момент D15-D8 защёлкивются в регистре U3, а уже потом читаются из него.
В данно схеме есть одно ограничение, писать можно только 16-битные слова, а уже читать и слова и байты.
Есть мысли по доработке данного контроллера, чтобы можно было писать и байты через U1.