Тема: Совместимость классических клавиатур и Агат-9
Всплыла интересная особенность - оказывается, не все классические клавиатуры (Фг3.038.649) могут работать с системными платами Агат-9 РВИЖ 467444.001.
Как это проявляется: после включения машины клавиатура работает (например, в Мониторе). Однако стоит загрузить с диска ИКП, как уже в его меню обнаруживается, что клавиатура не работает. Стрелки не двигают рамку вокруг дискет, пробел не работает. Работает только "Сброс" и переключение регистров РУС/ЛАТ. Но если в меню нажать "Сброс", то окажется, что в Мониторе клавиатура тоже уже не работает.
Спрашивается, в чем тут дело?
Для начала надо вспомнить, что у клавиатуры есть входной сигнал "Ответ", который формируется системной платой и подается на 3-й контакт разъема. Когда этот сигнал равен "0" - клавиатура может передавать код клавиши из внутреннего регистра в приемный регистр на системной плате. Когда этот сигнал равен "1" - клавиатура ничего передавать не может.
Фактически, это сигнал запрета передачи. В общем-то, избыточный сигнал, потому что для управления схемой приема на системной плате достаточно того, что первым битом всегда идет "0", а всего битов - 8. Видим на линии данных "0" - делаем параллельную загрузку приемного регистра единицами и начинаем прием. Когда в старшем разряде регистра появляется "0" - прием останавливаем. Все может работать без этого сигнала.
В Агат-7 сигнал "Ответ" формируется триггером D83.2.
В девятках ситуация сложнее. У плат ЯБ 3.089.026 есть два варианта. У первого сигнал "Ответ" формируется триггером D77.2, как в семерке. У второго 3-й вывод разъема клавиатуры наглухо запаян на землю, то есть, передача данных клавиатурой всегда разрешена.
У плат РВИЖ 467444.001 тоже два варианта. Первый не совпадает с принципиальной схемой, у него 3-й вывод соединен с землей перемычкой. Второй вариант сделан точно по принципиальной схеме - у него 3-й вывод идет на выход триггера D93.1, который по совместительству выход магнитофона. А еще этот триггер переключается при обращении к адресу $C020, который используется для запрета прерываний.
И вот что в результате происходит со вторым вариантом плат РВИЖ:
1) триггер при включении питания ставится в "0" (непонятно почему, но чаще всего именно в "0")
2) загрузчик ИКП дергает за адрес $C020, чтобы запретить прерывания
3) триггер D93.1 переключается в "1" и запрещает передачу данных клавиатурой - клавиатура перестает работать
4) так как триггер не соединен со схемой сброса, то после сброса он остается в "1" и в Мониторе клавиатура тоже не работает
Непонятно, зачем надо было ломать совместимость. Ну допустим, что разработчики хотели сделать какую-то новую клавиатуру и передавать на нее какие-то данные. Но использовать для этого магнитофонный выход - это очень плохая идея, ведь его состояние никогда нельзя знать наверняка.
Ну и напоследок запутаю всех окончательно: среди классических клавиатур могут встречаться такие, которые будут работать со вторым вариантом плат РВИЖ. У Андрея в музее нашлась одна классическая клавиатура, у которой 3-й вывод оказался не подключен в самой клавиатуре. Также нашлась клавиатура СГАК.467216.002, у которой этот вывод тоже был не подключен. И в теории должна без проблем работать клавиатура "Электроника мс7004а", у которой использование 3-го вывода вообще не предусмотрено.