Железные призраки прошлого

Компьютерная история

СтатьиСтатьиСтатьи
Cтарое железо и софт

МузейМузейМузей
Старые компьютеры

ФорумФорумФорум
Полигон призраков

ОбщалкаКонкурсыКонкурсы
Статьи и фото



Искать на сайте:
QWERTY-рование МС7004



Эта статья прислана на конкурс.

Technomancer (автор играет на конкурсе под псевдонимом)

Введение


МС7004 - это клавиатура, которая является аналогом клавиатуры LK201 производства компании DEC. МС7004 использовалась с рядом советских ЭВМ конца 80-х годов, совместимых с архитектурой PDP-11, например, ДВК-3, ДВК-3М, Квант-4С, Электроника-85, и вполне возможно, что ещё на кое-каких машинах. Сама клавиатура построена на микроконтроллере, и связь с ЭВМ осущесвляется через стандартный последовательный порт. Прицип работы кнопок - ёмкостный. Раскладка клавиатуры - JCUKEN, в отличие от аналога LK201 с раскладкой QWERTY.

В чём проблема? Я очень привык к раскладке клавиатуры QWERTY и никогда в жизни не работал с вариантом JCUKEN. Во время ремонта ретрожелезок, совместимых с моей любимой архитектурой PDP-11, расклад JCUKEN меня раздражает больше, чем кучи дохлых микросхем и постоянно возрастающая цена золота. Это потому, что мысли и идеи бегут быстро, а пальцы-то медленные, да еще и раскладка замедляет... Поэтому я решил сделать себе одну клавиатуру МС7004 с раскладкой QWERTY.




Выбор решения


Возможностей решения моей проблемы не очень много. Самое простое, конечно - разрезать дорожки на плате, на которой расположены сенсорные площадки, проводком поменять местами площадки соответствующих кнопок, таким образом поменяв местами буквы. Но такой вариант я даже не рассматривал, так как результат был бы некрасивым, клавиатура была бы безвозвратно испорчена, и я хотел бы как можно меньше вмешиваться в историческую целостность клавиатуры.

Второй вариант - так как клавиатура построена на микроконтроллере с внешней памятью программы, возможно подправить программу контроллера, чтобы коды кнопок поменялись местами. И так как при таком варианте в клавиатуре не придётся делать физические изменения и в любой момент её можно будет вернуть в оригинальное состояние, я выбираю именно этот вариант.




Практическая часть


На плате клавиатуры находится микроконтроллер, КР1816ВЕ35 совместимый с архитектурой Intel 8048, а рядом с ним - память К573РФ2. Здесь и есть единственное место, где нужно включать паяльник - чтобы выпаять память и вместо неё поставить панельку.




Следующий шаг - считываю память клавиатуры (содержимое здесь). Но так как у меня нет опыта в работе с данной архитектурой, я не представляю, где могут храниться коды кнопок. Единственное, что пришло в голову - они должны хранится в памяти в виде таблицы. Поэтому я дизассемблировал бинарный файл назад в программу и стал смотреть, как оно работает. Я использовал дисассемблер DasmX (http://www.atastro.com/software/prog/dasmx.html), который чётко дисассемблировал бинарник в команды Intel 8048.

Дальше самое трудное - по шагу идти вперёд, записывать использованные ячейки памяти и связывать работу программы с работой контроллера в схеме.

Первым делом выясняю адреса прерываний и связанных процессов. Оказывается, что внешнее прерывание INT (адрес 0х03) - это вход последовательного порта (управляющие данные от ЭВМ), а прерывание внутренного таймера (адрес 0х07)также используется для приёма данных от ЭВМ. Обмен данных по последовательному порту чисто программный и полудуплексный.

Продолжая комментировать код программы, я наткнулся на команду "movp3". Это команда, которая напрямую считывает данные из памяти программы. И вот, моё решение нашлось. Команда "movp3" считывает данные из памяти, которые находятся в адресе 0х300 со смещением по содержанию регистра А, то есть, результат команды - это содержимое ячейки, которая на адресе 0x300+А. А дальше уже довольно просто - в той области памяти действительно нашлась таблица с кодами, которые пересылаются в ЭВМ при нажатии кнопок. В этой таблице я поменял местами содержимое ячеек таким образом, чтобы расклад JCUKEN превратился в QWERTY. Ну и в принципе всё. Исправленное зашил назад в память, исправил пару ошибок, физически поменял местами кнопки, и вот, у меня теперь есть МС7004 с раскладом кнопок, который для меня более удобен.




Послесловие


Что интересно, сразу после такого "апгрейда" я заметил, что часто используемые команды в RT-11 у меня уже "зашли в пальцы" и в старой раскладке.

И, к сожалению, несмотря на то, что это всё уже было сделано полгода назад, статью я стал писать в последние дни срока конкурса, и не получилось сделать подробный анализ работы клавиатуры.




Обсудить статью в специально созданной ветке форума. Эта статья прислана на конкурс.

© Текст, фотографии — Technomancer (автор играет на конкурсе под псевдонимом)

© Железные призраки прошлого — 2019 г.

Опубликовано 27.03.2019 г.


Дополнения или поправки на phantom@sannata.ru

 


На главную страницу сайта

На страницу конкурсов



Авторские права и условия копирования материалов