ВХ205

Бродил я накануне по просторам глобальной помойки и наткнулся на несколько неплохих фотографий микросхемы К145ВХ205. Смотрю и думаю: что-то знакомое. Оказалось, что это тоже ИК13, под номером 5, на самой схеме так и написано; используется она в арифметическом калькуляторе МК-44 в единственном экземпляре. Ну порезал я фотографии на блоки ПЗУ, набросал быстренько форму, которая выводит блоки столбиками и даёт возможность отмечать перемычки, и перенёс это в массив данных. Картинки, конечно, не безупречны, но из разных источников, так что неясные моменты удалось устранить. Но тут возникла проблема: было почти неясно, в каком виде и порядке записаны эти данные, чтобы их прочитать и собрать в числовые массивы, состоящие собственно из команд/синхропрограмм/микрокоманд. Феликс Лазарев не особенно озаботился комментариями на этот счёт, так что пришлось потратить время, чтобы сопоставить те крохи информации, что удалось найти, и соответствие кода уже распознанных ПЗУ с числовыми массивами (пришлось и ИК1302 прощёлкать для сравнения) и опытным путём получить результаты. Дело тут в том, что коды чисел размазаны по плоскости, как волновая функция частицы по Вселенной, причём чуть ли не хаотичным образом.

Для наглядности: синхропрограммы - это 128 строк по 9 шестибитных полей; матрица ПЗУ синхропрограмм - 96 строк по 72 бита. Эти строки разбиваются на 3 блока, в каждом из которых будет часть конкретной синхропрограммы, причём нумерация строк второго и третьего блока идёт в обратном порядке; биты трёх первых полей синхропрограммы в порядке [1, 0, 2] идут с шагом 12 в одной строке, отступив в зависимости от того, к какому из 4-х блоков по 32 синхропрограммы относится её номер, соответственно [1, 0, 3, 2]; номер самой этой строки ПЗУ берётся как место в этой четвёрке; биты следующих трёх полей берутся аналогичным образом из второй трети ПЗУ, так же и последних трёх - из третьей. Теперь биты каждого поля нужно взять в порядке [4, 0, 5, 1, 3, 2] и инвертировать (т. е. наличие диода тут обозначает 0). С командами примерно то же, хотя и несколько проще: команд 256, а блок ПЗУ представляет собой 64 строки по 92 бита, в одной строке записываются четыре команды, каждый четвёртый бит относится к одной и той же. Команда состоит из двух 7-битных полей, одного 8-битного и дополнительного бита, а в её представлении идут сперва первые биты трёх полей, потом вторые и т. д., после седьмых - восьмой бит третьего поля и дополнительный. Эти четыре команды из строки имеют идентичные номера в блоках по 64 штуки, а сами эти номера определяются довольно хаотичным массивом.

С микрокомандами ещё интереснее: тут инвертированы оказались только определённые столбцы, которые я попытался выявить в предположении, что нулевая микрокоманда находится внизу (она совпадала у ИК1302, 03 и 06) и полученные нули будут действительно нулями. Были некоторые вопросы, но в целом угадал. Я для надёжности посчитал количество перемычек в каждом блоке ПЗУ и сравнил с тем, что мы имеем в числах. В двух предыдущих случаях всё совпадало, однако в микрокомандах - нет, пришлось искать дополнительные закономерности: например, две единицы (после инверсии) вокруг нуля в конкретной позиции обозначают единицу в ней и два нуля вокруг. Порядок микрокоманд вообще не особо подчиняется какой-либо строгой закономерности, а соответствие битов - разброс в чистом виде. Это, конечно, можно было бы прояснить, досконально изучив слои микросхемы и соответствующие соединения, но у меня, понятное дело, такой возможности не было.

Таким образом, у нас теперь есть код ПЗУ ВХ205 (запихал в эмулятор; кому интересны подробности, вот инструменты с алгоритмами прямого и обратного преобразования на JS: http://mk-61.moy.su/vkh205.rar ). Он рабочий, удалось набирать числа и посчитать корень, осталось разобраться с тем, что и когда ему нужно скармливать и в каком порядке. У калькулятора есть два дополнительных переключателя: один включает накопление в третьем регистре, второй устанавливает режим с фиксированной запятой для 2-х и для 4-х разрядов. Электрическая схема калькулятора: https://img.radiokot.ru/files/125496/1d0089bz9v.jpg . Ну и подключить к эмулятору. Кто-то хочет принять участие в общем деле?

А чем МК-44 так хорош?

Гораздо интересней развить эмулятор МК-61 до 16 регистров и 112 шагов, включив в кольцо ещё одну ИК13. Возможно, даже добавив несколько кодов операций кроме тех, что с регистром f.

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

Дело хозяйское, конечно. Но непрограммируемые МК, на мой взгляд, унылы.

Цель эмуляции ещё и продление жизни устройств. Если МК61S даст ПМК в железе, интересно развивать его функции при сохранении большинства особенностей этой архитектуры.

В сравнении с ПМК, конечно, унылы, но это "живое" устройство, выпущенное нашей промышленностью, которое можно потрогать и пощупать, а не симулякр абстрактного "расширенного МК-61".