habrahabr

Эмулятор ПМК или Сказ о том, как мы опять откопали стюардессу

  • суббота, 23 ноября 2024 г. в 00:00:11
https://habr.com/ru/articles/860226/

Если эта картинка не вызвала у вас никаких эмоций, то дальше будет так же не интересно. А всем остальным, добро пожаловать под кат.


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

История, как вы поняли по КДПВ, пойдет о программируемых микрокалькуляторах (ПМК), которые выпускались в СССР.  Выделяют три поколения таких микрокалькуляторов. Первое - Б3-21, второе Б3-34 (МК-54) и третья МК-52/61. На этой же элементной базе выпускались настольные программируемые калькуляторы, с питанием от сети, но сегодня мы ведем речь о мобильных компьютерах того времени - микрокалькуляторах.

Моя коллекция программируемых микрокалькуляторов, родом из СССР
Моя коллекция программируемых микрокалькуляторов, родом из СССР

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

Программируемые микрокалькуляторы, в СССР, с обратной польской нотацией (RPN) успешно выпускались до начала 1990-х годов, после чего, по многочисленным причинам, перестали производиться. На Хабре более десятка хороших статей про эти микрокалькуляторы, желающие легко смогут их найти по названию популярных моделей МК-61 и МК-52. Не указываю ссылки на статьи потому, что боюсь что-то пропустить и обидеть автора интересного материала.

Автор данного текста, познакомился и проникся данными устройствами в 1988 году и на протяжении всего последующего времени, имел в пользовании такие микрокалькуляторы. 

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

Любители ретро-железа не хотели расставаться таким интересным и по своему полезным наследием, в связи с чем предпринимали разные действия, продляющие жизнь этим устройствам.

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

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

Первой “ласточкой”, в попытке создать аппаратный эмулятор советских ПМК, совместимый с “Электроника МК-61”, устройством, о котором сохранилась информация в сети, можно считать “УНИВЕРСАЛЬНОЕ УПРАВЛЯЮЩЕЕ ВЫЧИСЛИТЕЛЬНОЕ УСТРОЙСТВО FRS-100”, от Сергея Фролова. Автор датирует окончание сборки устройства 2003 годом (источник). 

То самое, универсальное устройство
То самое, универсальное устройство

В принципе это был не совсем микрокалькулятор, а полноценный компьютер, но в тоже время умеющий выполнять большинство программ, написанных для советских программируемых микрокалькуляторов. Хоть автор и опубликовал описание устройства, информации о повторах устройства найти не удалось.

Но началом “народного” движения, за восстановление исторического наследия, можно считать инициативу Феликса Лазарева, по исследованию логики работы микросхем 145ИК13хх, на которых и были реализованы последние модели этих микрокалькуляторов (МК-61 и МК-52). Часть документации конечно была найдена в архивах и восстановлена с помощью авторов книг, по программируемым микрокалькуляторам, но вот описание “кишочков” найти не удалось. А ведь в них и крылась вся бездна “тьмы” и “ЕГГОГ”-ов (если вы понимаете, о чем это). 

В феврале 2011 года, на форуме ZX-PK появилось его предложение об участии в проекте, всем желающим. На предложение толпа не набежала, но несколько участников форума подставили плечо и работа по послойному травлению, фотографированию и расшифровке чипов началась.

Начало работ
Начало работ

Чтобы хоть примерно оценить сложность работы, приведу фотографии тех самых микросхем, устройство которых нужно было проанализировать и восстановить логику их работы.

Богатый внутренний мир
Богатый внутренний мир

Сверху “внутренний мир” микрокалькулятора МК-52, снизу МК-61. Тот и другой, были выпущены в 1991 году. Микросхемы раскиданы по печатной плате и залиты компаундом белого цвета. Так что извлечь их из-под него, без повреждений - задача не из простых.

Работа со снимками из под микроскопа, которые были довольно таки-большого объема, для того времени, отнимала много времени. Прежде всего еще и потому, что гигабайты изображений, для обработки, приходилось пересылать почтой на BlueRay дисках. По снимкам необходимо было восстановить содержимое ПЗУ всех микроконтроллеров, используемых в микрокалькуляторе. 

Процесс занял больше года и вот в августе  2012 года, Феликс Лазарев объявил об окончании работ и выложил в открытый доступ код, который полностью эмулировал логику работы микросхем 145ИК13хх. 

Работа велась при помощи металлургического оптического микроскопа с фокальной подсветкой и цифровой камерой. Получившийся код эмулятора  доступен на GitHub под GNU GPL-лицензией. (источник).

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

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

Немного отклоняясь в сторону, из фундаментальных исследований, хотелось бы выделить работу Сергея Фролова, по анализу работы магистрали передачи данных в микросхемах серии 145ИКхх. Он разработал аппаратный анализатор кольца передачи данных советских программируемых микрокалькуляторов и эмулятор Блока Расширения Памяти для микрокалькулятора “Электроника МК-52”. Об этом есть очень подробная статья на Хабре (статья).

Первым экземпляром аппаратного эмулятора, о котором удалось найти информацию, можно считать версию от Сергея Вакуленко, на микроконтроллере PIC32, датированную 2014 годом. Этот экземпляр уже использовал наработки Феликса Лазарева, для полноценной эмуляции.

Первый (?) аппаратный эмулятор МК-61
Первый (?) аппаратный эмулятор МК-61

Проект доступен на GitHub (источник). Жаль не удалось найти информацию о том, сколько последователей собрали данное устройство и пользуются ли им до сих пор. 

Очередную попытку создания аппаратного эмулятора, предприняла интернациональная российско-финская команда, в результате работы которой получилось незаконченное, но довольно симпатичное устройство на микроконтроллере MSP430. Проект разрабатывался в течение 2017 года.

Симпатичное устройство, которое не "взлетело"
Симпатичное устройство, которое не "взлетело"

Печатная плата устройства была выполнена в домашних условиях. Ввиду сложности изготовления в домашних условиях ограничились одним экземпляром, который так единственным и остался. Конструкция получилась, на мой взгляд, симпатичная, жаль не развилась в законченный проект.

Несмотря на отрицательный опыт, в 2020 году, той же командой, но уже в сильно поредевшем составе, была предпринята попытка переноса эмулятора на платформу STM32. В результате появился проект MK61S. Проект доступен на GitLab (источник).

МК-61s как его сделали авторы
МК-61s как его сделали авторы

Судьба данного проекта оказалась немного богаче на события, чем у предшественников, было собрано несколько экземпляров и микрокалькулятор даже “засветился” на Chaos Constructions 2021.

МК61S на стенде CC2021
МК61S на стенде CC2021

Проект потихоньку дорабатывался авторами до конца 2022 года. 

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

Как обычно, первый вариант хоть и оказался работающим, но таил в себе некоторые ошибки.

Первый вариант - концепция удалась
Первый вариант - концепция удалась

На печатной плате первой версии даже видно название “Электроника МК-52-New-Mini”, потому как расположение клавиш для него было взято от “МК-52”, с целью экономии места на печатной плате. Но потом было решено, что это все-таки не отдельный проект, а развитие “MK61S” и проект стал называться “MK-61s-Mini”, поскольку имел меньшие размеры.

В качестве основной платформы, был выбран микроконтроллер STM32F401/411, в виде готовой отладочной платы "BlackPill", ну очень не хотелось паять совсем мелкие детали и микросхемы. Причем как на 401, так и на 411 версии микроконтроллера, все работает замечательно, ресурсов хватает. Не смотря на разницу в тактовой частоте у 401 и 411 версиями, производительность, по выполнению программ микрокалькулятора, отличается примерно на 10%, а вот стоимость 401, заметно ниже.

В качестве дисплея был использован, популярный в DIY-среде, LCD 1602. По количеству отображаемых знаков, он в два раза объемнее оригинального дисплея МК-61. Ну и клавиатура была собрана из доступных в любом уголке мира, тактовых кнопок. 

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

Программную часть проекта, для простоты повторения и модификации, перенесли в среду Arduino IDE, из которой можно будет легко скомпилировать проект под любой, имеющийся у собирающего, микроконтроллер.

Второй вариант устройства был уже более отлажен и без проблем справлялся с возложенными на него функциями.

Вторая итерация проекта
Вторая итерация проекта

Во втором варианте в конструкции появился “буззер” и батарейка для часов реального времени. Так же добавился светодиод для визуального привлечения внимания пользователя к  каким-либо событиям. 

Как видно, в конструкции нет особо  мелких SMD компонентов (только несколько резисторов и конденсаторов 1206, без большей части которых можно и обойтись, о чем рассказано в инструкции по сборке) и вся конструкция собирается за пару часов неспешного паяния, простым китайским паяльником. Во второй версии, на плате, еще были отладочные элементы, которые в ходе работы не пригодились.

В этом варианте у нас появилась “клавиатура” в виде накладного шилда. На ней видны технологические вырезы, поскольку на тот момент еще не было общего решения по “толщине” устройства и способам установки некоторых компонентов.

Финальный вариант, носит номер версии ТРИ и лишен “детских болезней” аппаратной части, предыдущих версий проекта. 

Красавец со всех сторон
Красавец со всех сторон

Визуально он мало отличается от предыдущей версии, но внутренние изменения имеются.

В самом простом варианте сборки мы получаем устройство габаритами 99х99х19 мм, с учетом всех выступающих деталей (кнопки, дисплей, крепежные винты-ножки). Устройство потребляет от источника питания 5 вольт, ток около 30 мА. Для питания использован популярный сейчас разъем Type-C, кабель к которому наверняка имеется почти в каждом доме. Питать эмулятор можно как от сетевого зарядного устройства для телефона, так и от повербанка. С учетом потребляемого устройством тока, автономность должна быть неплохой. Но нужно учитывать, что некоторые повербанки такой малый ток не считают нагрузкой и прекращают питать устройство.

"ЕГГОГ" на своем месте
"ЕГГОГ" на своем месте

Поскольку мы использовали программный код симулятора от Феликса Лазарева, все “ЕГГОГ”-и и “ЗГГОГ”-и остались на месте. Устройство ведет себя полностью идентично оригинальному микрокалькулятору “Электроника МК-61”. В ходе работы над проектом, нам регулярно приходилось сравнивать работу нашего устройства с оригиналом. Никакой разницы в результатах работы или вычислений, мы пока не обнаружили.

Имея 2-х строчный дисплей, было логичным, добавить в режим редактирования программы, отображение мнемоники текущей команды. 

Дисплей в режиме программирования
Дисплей в режиме программирования

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

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

Ну и про скорость работы микрокалькулятора хотелось бы сказать, что если раньше ее увеличивали, разгоняя тактовый генератор, то теперь она и так, более чем в 10 раз выше оригинальной. Но, для совместимости с динамическими играми оригинального МК-61, мы добавили в меню пункт, который ограничивает скорость работы ядра, близкой к оригинальному ПМК.

Вишенкой на торте проекта, является возможность, подключиться к устройству терминалом, через последовательный порт. В результате, вы получите вполне ностальгический вариант работы из командной строки с программируемым микрокалькулятором. Новых функций калькулятору терминал не добавил, но вот пользователю, он дает возможность покопаться в “кишочках” устройства. Оценить код в более продвинутом виде, увидеть сразу содержимое всех регистров, как обычных, так и тех, что не были доступны пользователю в оригинальном устройстве. По традиции "мониторов" старых 8-битных компьютеров, можно поместить шестнадцатеричные коды команд, прямо в память устройства и выполнить получившуюся программу на микрокалькуляторе. Мы постарались сделать функциональную систему команд терминала.

Так выглядит в терминале игра “Бесконечная история”
Так выглядит в терминале игра “Бесконечная история”

Кроме того, терминал позволяет выгрузить написанную вами программу в виде шестнадцатеричного дампа и передать ее другому пользователю, который ее также через терминал может загрузить в память микрокалькулятора.

Проект не остановился, а продолжает развиваться и дополняться “фишками”. Ведутся эксперименты с различными вариантами корпусов, в том числе и напечатанные на 3Д-принтере. Конечно же хочется сделать устройство меньше и симпатичнее.

Вариации внешнего вида устройства
Вариации внешнего вида устройства

Немаловажным моментом является стоимость, в которую обойдется сборка такого устройства. Нам хотелось сделать совсем бюджетный вариант, но вышло не так красиво, как мечтали. В итоге, в зависимости от того, где вы будете приобретать комплектующие, вариант покупки всех комплектующих, с микроконтроллером STM32F401 обойдется от $17. Понятно, что за STM32F411 придется доплатить $2-4. Цены на комплектующие брались по предложениям китайских продавцов с популярной площадки, на букву “А”, поскольку для автора это единственный источник радиодеталей.  Не исключен вариант, что у вас прямые руки и имеются запасы радиодеталей, тогда, за один вечер, вы спокойно соберете наш проект на монтажной плате.

Ну и на настоящий момент, это пока “самый массовый” из всех эмуляторов, выполненных в “железе”. Да, количество экземпляров, пока приблизилось к десятку, но надеемся, что конструкция окажется интересна сообществу и будут еще варианты ее изготовления. Один из участников Телеграм-сообщества, уже поддержал проект и предлагает, всем желающим, печатные платы, с доставкой, через Авито. 

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

Произвольная клавиатура в виде наклейки, проверка концепции
Произвольная клавиатура в виде наклейки, проверка концепции

В общем, последние полгода в нашей теплой компании пролетели незаметно и мы “выкопали свою стюардессу”. Кому то она покажется неказистой или не очень элегантной, но какую смогли, такую и откопали.

Проект доступен на GitHub (ссылка).

Там же подробные инструкции по сборке, прошивке и работе с устройством.

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

Телеграм-канал, где происходит основное общение, рекламировать не буду, в проекте на него есть ссылка и желающие смогут присоединиться.