Хабрахабр

Внедрение в архитектуру советских программируемых калькуляторов «Электроника МК-52»

В этой статье я хочу рассказать об архитектуре советских программируемых микрокалькуляторов на примере калькулятора «Электроника МК-52» и как можно внедриться в его архитектуру.

Причиной этому была не только доступная цена в 65 рублей за МК-54, 85 рублей за МК-61 или 115 рублей за МК-52, но и развитой язык программирования. Советские калькуляторы семейства "Электроника Б3-34" («Электроника МК-56», «Электроника МК-61» и «Электроника МК-52») были особенно популярны в СССР. Огромное количество книг было посвящено программированию на этих машинках и публикацией готовых алгоритмов. Это семейство калькуляторов стало де-факто стандартным для многочисленных пользователей. Даже в военно-морском флоте СССР калькулятор «Электроника МК-52» с блоком расширения памяти БРП «Астро» какое-то время был стандартным средством для навигационных расчетов. Электроника МК-52 даже летала в космос на корабле Союз ТМ-7, где предполагалось его использование в качестве резервного на случай неисправности спускаемого навигационного оборудования.


Микрокалькулятор МК-52 относится ко второму поколению советских программируемых микрокалькуляторов.

Базовая модель Б3-21 разработана в 1975-м и массово производилась с 1977 года. Первым поколением было семейство Б3-21 (включая МК-46, МК-64 и МС 1103). У нее был рабочий стек на два числа (Б3-21, как и семейство Б3-34 — калькуляторы с RPN — обратной польской (или бесскобочной) записью — где сначала в стек вводятся числа, а потом нажимается кнопка операции).

В этот стек можно записать по кругу число, а потом извлекать. В дополнение к рабочему стеку имелся дополнительный кольцевой стек на 6 чисел. Количество шагов программы у Б3-21 — 60. И еще семь регистров памяти с номерами 2-8 (в МК-46, МК-64 и МС 1103 — восемь) — обычные регистры памяти для хранения чисел. Последние модели — настольные калькуляторы с блоками для контроля параметров от внешних устройств. В моделях МК-46, МК-64 и МС 1103 — 66. За счет установки этой микросхемы появлялся дополнительный регистр памяти с номером 9 и еще шесть шагов программы. В МК-46 имелась только возможность получать цифровые коды, а в МК-64 и МС 1103 устанавливалась кассета с аналогово-цифровым преобразователем, и дополнительная микросхема К145ИК1801, которая организовывала взаимодействие. Аналогично, кстати, в МК-61 и МК-52 ставилась микросхема К745ИК1306, которая кроме дополнительных функций добавляла еще один регистр и еще семь шагов программы, но об этом дальше. Управление считыванием происходило через регистр номер 9 путем ввода кода команды.

Первые экземпляры стоили 120 рублей, но завод довольно быстро снизил цену до 85 рублей и так и продавал модель где-то до 1985 года. Где-то в 1980-м году появляется второе поколение программируемых микрокалькуляторов в лице «Электроники Б3-34». Если интересно, то можно посмотреть на моём сайте изменение цен по годам — я стараюсь собирать такую информацию по мере возможности. Вообще ценообразование калькуляторов — предмет разговоров для отдельной статьи: где-то цены снижались по мере выпуска, где-то повышались. Через несколько лет появилась микросхема К745ИК1306 с дополнительными функциями, и выпустили новые модели МК-61 в корпусе, аналогичному МК-54, и горизонтальный МК-52 с внутренней EEPROM К1601РР1 на 512 шагов (уникальная вещь, других в мире калькуляторов с EEPROM я не встречал: у них либо низкопотреблящее CMOS ОЗУ, либо более современные Flash) и двумя разъемами для подключения устройств: первый использовался для подключения внешних модулей памяти «Блоков расширения памяти БРП», а второй был технологическим и туда ничего не подключалось (завод объяснял как технологический разъем для тестирования во время производства). Калькулятор Б3-34 сменили аналогичные по функциям, но более компактный МК-54, настольный МК-56.

Вид сзади:

Количество регистров для хранения чисел увеличилось с 8/9 до 14/15. По сравнению с микрокалькуляторами первого поколения, усовершенствование было существенным. Появился регистр последнего значения регистра X перед выполнением последней арифметической операции — BX (операционные регистры X, Y, Z, T с регистром Last X наши подсмотрели, скорее всего, у калькуляторов Hewlett Packard с аналогичными регистрами, впрочем, на этом тождественность с HP и заканчивается). Операционный стек с двух регистров увеличился еще на два регистра — X, Y, Z, T. Любой регистр памяти может использоваться в качестве индексного как для сохранения/извлечения чисел, так и косвенных переходов на программы и подпрограммы, в том числе с условием. Область программы с 60/66 шагов увеличилась с 98 шагов (у Б3-34, МК-54, МК-56, МС 1104) до 105 шагов (у МК-61 и МК-52).
В программе можно использовать автоматические циклы по регистрам L0-L3, тогда идет уменьшение соответствующего регистра на 1, сравнение с нулем и ветвление по адресу.
Очень сильно улучшило калькуляторы второго поколения внедрение косвенной адресации. При этом значение регистра косвенного перехода будет автоматически уменьшено (регистры 0-3), увеличено (регистры 4-6) или оставлено без изменений.
Все эти автоматические действия с регистрами очень экономят программную область и позволяют упростить программирование.

Я только вкратце рассказал о возможностях этих машинок для тех, кто не работал с ними. Говорить о работе с МК-52 можно долго.

Семейство калькуляторов Б3-21 и Б3-34 — разработка Киевского НИИ Микроприборов (НИИМП). Разговор об архитектуре я бы хотел начать с истории. Двум предприятиям было поставлено задание — сделать к 24-му съезду КПСС в 1971 году калькуляторы на больших интегральных схемах — киевскому НИИМП и ленинградской «Светлане». Первые калькуляторы под названием "Электроника 4-71" у них появились в 1971 году. Модель 4-71 была сделана на микропрограммном управлении, как первые калькуляторы семейства «Искра», с логикой на автоматах Мура в сотрудничестве с ленинградским ГСКТБ. В итоге у нас примерно в одно и то же время появились две модели калькуляторов — упомянутая «Электроника 4-71» и "Электроника 24-71" (улавливаете название моделей?). Автоматы — это конечно хорошо, но на них далеко не уедешь в плане совершенствования. То есть при нажатии кнопки происходит защелкивание нужных триггеров (в зависимости от назначения кнопки), которые формируют прохождение соответствующих микрокоманд. Сохраните себе тот сайт по ссылке, пока он живой — там очень много интересного рассказано о НИИМП. Даже калькуляторы Искра-114 от ГСКТБ в 1974 году уже имели ПЗУ К5ЯП011001 (предположительно, первые в СССР микросхемы масочного ПЗУ) с «прошивкой».
И вот, в 1973 году у НИИМП появляется микроконтроллерное ядро собственной разработки. Калькуляторов нашего производства в те годы не хватало, и их завозили из-за рубежа, как с соцстран, так и с капстран. Первый микрокалькулятор "Электроника Б3-09" на микросхеме К145ИК2А вышел «первым блином» и не прижился, зато его модификации "Электроника Б3-09М", Б3-14М и Б3-14 пошли «на ура», выпускались сотнями тысяч штук в год и решили проблему калькуляторного дефицита. Можно посмотреть, начиная с 9:15, какие калькуляторы стоят на столах — в основном, транзисторные ГДРовские «Soemron 220» и болгарские «Элка 50» первой модификации. Помните фильм «Служебный роман» 1977-го года?

Более крупные фотографии можно видеть на сайте «Радиокартинки»: К145ИК2, К145ИК501, К145ИК502П.

Как можно заметить, чипы простого калькулятора с четырьмя арифметическими операциями К145ИК2 практически совпадают с чипами программируемого калькулятора «Б3-21» (К145ИК501, 502 и 503). Это кристаллы микросхем К145ИК2, ИК501 и ИК502. Номер прошивки показан на отдельном слое после названия. Последние отличаются только «прошивкой».

А это уже более совершенный кристалл микросхемы К145ИК1302, который стоит в программируемых калькуляторах семейства «Электроника Б3-34», в том числе и «Электроника МК-52», о котором эта статья.

Это память микрокоманд, память синхропрограмм и память программ. В центре чипа видны три области (помещены зеленым). В процессоре есть однобитное АЛУ (арифметическо-логическое устройство) с несколькими источниками и приемниками. Желтым помечены кольцевые сдвиговые регистры.
Процессор калькулятора работает на частоте 75-100 кГц.

Каждая микрокоманда говорит — какой набор источников взять для сумматора и куда положить результат.
Всего в микросхеме 68 микрокоманд длиной 27 бит каждая, 128 различных синхропрограмм и 256 ячеек для команд. За четыре микротакта процессор выполняет одну микрокоманду (над одной тетрадой).

Все регистры представляют собой регистры сдвига. Микропроцессор калькулятора (точнее было бы сказать микроконтроллер, потому что внутри него находится и ПЗУ, и ОЗУ, и порты ввода-вывода) работает по последовательному принципу.

Этот распорядок действует на 4 бита, после чего номер такта увеличивается.
Поскольку регистры кольцевые, разработчикам было нужно правильно задать их размер. Внутри процессора всё закольцовано и напоминает парк аттракционов с каруселями, колесом обозрения и идеальным автобусом с посетителями, у которого одна дверь работает на вход, другая на выход, и посетители постепенно перемещаются от начала в конец.
Работник парка (микрокоманда), сверяясь с тетрадочкой (полем микрокоманды), на каждом микротакте извлекает (или нет) из подошедшей ячейки карусели, колеса обозрения или очередного пассажира автобуса (то есть очередного регистра) бит, направляет их на аттракцион «сумматор», где с ними происходят какие-то действия и результат отправляет обратно, так же в зависимости от полей микрокоманды. Чтобы не ждать, пока нужные числа продвинутся по всему кольцу, дополнительно есть несколько 4-х битных и однобитных регистров вроде регистра переноса, доступных в каждом такте. В итоге базовым числом для калькуляторов семейства К145ИК13 стало число 42.
Эту длину (42 тетрады) имеют последовательные регистры — регистры М, R и ST. В кольцевой регистр влезает ровно три числа, что позволяет, например, реализовать регистр памяти и хранение двух чисел при вычислении со скобками, как это реализовано в калькуляторе «Электроника Б3-32» на К145ИК1301. Одно число с 8-разрядной мантиссой и 2-х разрядным порядком занимает 14 тетрад (одна треть от 42).

Разработчики проанализировали алгоритмы и посчитали, что с учетом переносов одна типовая операция с АЛУ над тетрадой требует три такта, а производимые действия довольно однотипны. С числом 42 также жестко работает так называемая «память синхропрограмм», в которых находятся адреса микрокоманд, которые надо выполнять.
Синхропрограммой она называется оттого, что жестко засинхронизирована с размером кольцевого регистра и номером такта 0-41 — одного кольцевого цикла.
В каждой синхропрограмме содержится девять номеров микрокоманд, которые нужно выполнить.
Синхрокоманды устроены довольно интересно. И они сделали так, что микрокоманды в зависимости от номера такта (0-41) аппаратно всегда выполняются в такой последовательности:
0, 1, 2, 3, 4, 5, 3, 4, 5, 3, 4, 5, 3, 4, 5, 3, 4, 5, 3, 4, 5, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 2, 3, 4, 5

Этого хватает, чтобы обработать одно восьмиразрядное число. Желтым цветом я отметил одинаковые участки (микрокоманды 3, 4, 5), которые выполняются семь раз подряд. С одной стороны такие встроенные циклы сокращают емкость необходимого для программы ПЗУ, но с другой стороны представьте, что такая последовательность выполняется всегда и на каждой строке программы.
Поскольку одна тетрада обрабатывается за три такта, данные за это время успевают уехать по кольцу. По сути это готовые микроалгоритмы. В памяти программ в каждом ее поле содержится информация о трех синхропрограммах, которые надо выполнить за один кольцевой цикл. Из-за этой особенности числа в кольцевых регистрах хранятся не в последовательных ячейках, а в каждой третьей, чтобы они как раз подоспели к окончанию циклов 3, 4, 5.
Снизу на рисунке показана область памяти программ. В регистре R ячейки 36 и 39 закреплены за адресом текущей выполняемой программы, они как раз появляются на соответствующих тактах, когда выполнились первые две синхропрограммы, и третья синхропрограмма занимается обработкой этого адреса.
Конечно, внутри микропроцессор работает еще более сложно. Там есть еще нюанс, заключаемый в том, что третья синхропрограмма обычно используется для всяких ветвлений. «Программируемые микрокалькуляторы. Только описание его со всеми нюансами занимает не один десяток страниц книги Трохименко Я.К. Устройство и пользование» (книга гуглится).

Вот эта архитектура с тремя уровнями обработки — памятью программ с адресами синхропрограмм, памятью синхропрограмм с номерами микрокоманд и памятью микрокоманд с набором источников и приемников является базовой для целого семейства микросхем К145ИК2, К145ИК13xx, К145ИК18xx и К145ИК19xx, только у них разный размер регистров, по-другому сделана адресация и ветвления и сделаны другие доработки и изменения.

Я имею ввиду кольцевые регистры. А самое интересное, что сделали разработчики еще в 1973-м году — вывели мозги процессора наружу для возможности расширения. Но что делать, если возможностей аттракциона не хватает? В первом массовом калькуляторе Б3-09М емкости регистра хватало, и расширение не требовалось. Чтобы не увеличивать размер ПЗУ, а следовательно размер кристалла, уменьшать выход годных кристаллов в процессе производства и прочие сложности, разработчики взяли несколько одинаковых процессоров и сделали общий кольцевой регистр. Можно увеличить его размер или поставить рядом еще один.

Можно обратить внимание на левый верхний угол. Здесь на фотографии слева часть кристалла К145ИК2, а справа К145ИК5. А в К145ИК5 этой перемычки нет, и кольцевой регистр не замыкается.
В 1975-м году появились первые образцы программируемого калькулятора "Электроника Б3-21". Там уже в процессе производства стоит небольшая перемычка, замыкающая две контактные площадки (кольцевой регистр). Они отличаются только прошивкой.
Первый процессор К145ИК502 занимается вводом с клавиатуры и выводом на индикатор, обработкой действий в автоматическом режиме и режиме ввода и выполнения программы. Там можно видеть аж три процессора типа К145ИК5 — К145ИК501, К145ИК502 и К145ИК503. А поскольку требовалась еще ёмкость для хранения программы пользователя и регистров памяти, дополнительно в разрыв того же регистра поставили микросхему К145ИР1, представляющий собой один большой регистр сдвига. К145ИК501 занимается арифметическими операциями, а К145ИК503 — тригонометрическими. И все данные постоянно перемещаются по общему кольцу со скоростью тактового генератора. В итоге появилось три аттракциона с тремя последовательно соединенными автобусами и одной электричкой.

Благодаря Феликсу Лазареву, который смог считать прошивки с этих микроконтроллеров и разобраться в архитектуре, у нас появился эмулятор калькуляторов типа МК-61 и Б3-34, где можно более детально изучить его работу и поиграться с включением и отключением микросхем от общего кольца.

В первом микрокалькуляторе второго поколения "Электроника Б3-34" использовались микросхемы К145ИК1302 (ввод/вывод, режимы работы), К145ИК1303 (математические функции) и два регистра К145ИР2 по 1008 бит каждый.

Суммарно два регистра M и два регистра по 1008 бит образуют кольцо размером в 42*4 + 42*4 + 1008 + 1008 = 2352 бита.

В первой области хранится программа пользователя (98 шагов), во второй области — регистры данных (14 регистров с номерами 0-9, a, b, c, d по 14 тетрад каждый), а третья область — служебная. Всё поле данных разработчики разбили на три одинаковые области по 784 бита (196 тетрад или 98 байт).

У них добавился еще один чип К145ИК1306, где вычисляются операции с градусами и логические операции. Через несколько лет после появления Б3-34 появились две новые модели — МК-61 и МК-52. Кольцо стало выглядеть так:

Появление этого чипа добавило в кольцо один регистр памяти (14 тетрад), еще семь шагов программы (14 тетрад) и на 14 тетрад увеличилась служебная область.
В МК-52 есть еще микросхема К745ИК1801, которая осуществляет передачу данных из микросхемы EEPROM или сменного блока расширения памяти. Обратите внимание, что в К145ИК1306 есть такой же регистр М, как и в К145ИК1302 и К145ИК1303. Но в нем кольцо регистра не используется.

Разбиение всего кольца данных в калькуляторах типа МК-61 и МК-52 показано на рисунке ниже:

В них интересно то, что для хранения чисел надо 12 тетрад (1 — знак мантиссы, 8 — мантисса, 3 — порядок), а на один регистр выделяется 14 тетрад (чтобы делилось на 42 в процессоре). Как я говорил, всё кольцо разбивается на три области: М1, М2 и М3.
В области М1 находятся регистры памяти 0-9, a, b, c, d, e. Там всё просто — 98 шагов для Б3-34 и 105 шагов (на 14 тетрад больше) для МК-61 и МК-52.
Область М2 самая интересная. В итоге две тетрады на каждый регистр не используются.
В области М3 располагается память программ. В нем кроме регистров X, Y, Z, T, BX, располагается область Ms, канал связи КС и Метка.

Помните, я говорил, что в синхропрограмме есть несколько повторяющихся операций, которые отнимают три такта и приводят к тому, что числа в регистрах хранятся на каждой третьей ячейке? Показанные области не идут друг за другом. Сначала передается первая тетрада области М1, затем первая тетрада области М2 и затем первая тетрада области М3. В данных кольца это и реализовано. И пока за три такта отрабатываются микрокоманды 3, 4, 5 в синхропрограмме, ненужные области пропускаются. Потом идут вторые тетрады и так далее.

Она довольно большая, занимает одну шестую часть области данных кольца. Когда я разбирался с распределением данных в общем кольце, меня очень удрудича область, обозначенная как Ms. При разработке архитектуры разработчики предусматривали возможность сделать «область программ-данных». И эта область не используется в калькуляторе. Причем довольно большая область — 56 программных шагов. Это — такая область, в которую можно записывать или программу, или регистры с данными. Но, повторюсь, в серийных моделях эта область пропала, а так у нас могло бы быть больше регистров памяти или программа длиннее на 56 шагов. В калькуляторах предполагались включить специальные функции в комбинации с кнопкой [К] для обмена (над кнопками 1 и 2, сейчас там пустое место). ic.pics.livejournal.com/avva/111931/119690/119690_original.png Об этой области вскользь упоминалось в журнале «Техника-молодежи», № 7 за 1986 год.

Это последовательность из девяти тетрад, состоящих из единиц. Самый важный элемент синхронизации в данных кольца — так называемая «Метка». В самом начале после включения машинки головной процессор К145ИК1302 инициализирует кольцо и формирует Метку. При появлении кода «Метка» внутренний счетчик у процессоров сбрасывается, и начинается отсчет данных кольца относительно кода Метка. Это — код, состоящий только из единиц. Команды и содержимое регистров подобраны так, что код Метка не может встретиться ни в данных, ни в программе.
Продвинутые пользователи калькуляторов семейства Б3-34 наслышаны о «пустышке» — недокументированной операции, когда на индикаторе отображается только десятичная точка. При появлении чип К745ИК1306 с дополнительным регистром М, количество ячеек увеличилось, и они условно добавились в конец, потому что в архитектуре вся область данных в кольце непрерывна. Когда этот код появляется, внутренний счетчик сбивается, и калькулятор начинает чудить — появляется два кода Метка и вся синхронизация сбивается — калькулятор принимает одну область памяти за другую.
Внутренняя адресация относительна относительно кода Метка. Это был один из самых массовых настольных калькуляторов в нашей стране. В этой архитектуре можно добавить еще один процессор типа К145ИК13, тогда станет больше еще на один регистр памяти, и добавится еще 7 шагов программы (максимально — 112).
Скорее всего аналогичным образом работает внутреннее представление данных и в непрограммируемом калькуляторе "Электроника МК-44", сделанном на том же микропроцессоре К145ИК1305. Я подумал, а что будет, если разорвать выведенное наружу кольцо регистра М и добавить туда памяти? В нем есть три регистра памяти. Процессор «подхватил» появившуюся память, и в калькуляторе стало десять регистров памяти. Эксперимент удался.

Они «общаются» специальному полю, называемому «канал связи» (КС). А как процессоры взаимодействуют между собой? В нашем случае это К145ИК502 для Б3-21 и К145ИК1302 для Б3-34. Как в калькуляторах семейства «Б3-21», так и в калькуляторах семейства «Б3-34» есть один главный процессор. Другие процессоры находятся в режиме ожидания и ждут команд.
«Канал связи» — это две тетрады, в которые главный процессор может поместить число — байт с кодом операции.
Если при работе по программе или в ручном режиме головной процессор не может обработать операцию с каким-то кодом своими силами, то он кладет код операции в регистр КС кольца и начинает ждать.
Ведомые процессоры все время следят за регистром КС в кольце данных. Они инициализируют кольцо при включении, формируют код «метка» и взаимодействуют с оператором, организуя ввод с клавиатуры и вывод на индикатор. д. Как только появляется код операции, который может обработать ведомый процессор, он начинает его обрабатывать, например, выполнять функцию сложения, вычисление синуса и т. После выполнения процессором своих действий, он очищает регистр канала связи, затерев младшую тетраду числом «F». Ведомый процессор самостоятельно извлекает из кольца нужные регистры, когда они приходят к нему по кольцу, производит с ними операции, и результат помещает обратно. Если ни один ведомый процессор не сможет обработать команду по каналу связи, то через определенное время головной процессор сам очистит канал связи и выдаст на индикаторе сообщение об ошибке «ЕГГОГ».
Этим таймаутом пользуются ведомые чипы, если в процессе вычисления произошла ошибка с числом. То есть если в канале связи появилось число 10 (код сложения), то по окончанию счета в регистре КС будет записано число 1F.
Одновременно с выставлением кода операции в канал связи в головном чипе включается специальный счетчик ожидания по типу сторожевого таймера. В этом случае ведомый чип ничего не выставляет в канал связи, а головной процессор через несколько секунд сам выводит сообщение об ошибке. Например, пользователь попытался извлечь корень из отрицательного числа. Он всего лишь выставляет код в канал связи, а его обрабатывают другие процессоры. Оттого в калькуляторах вывод надписи «ЕГГОГ» при подобного рода ошибках занимал так много времени.
Главный процессор может не знать, какие есть в кольце другие процессоры. Можно, например, заменить микросхему К745ИК1306 на другую или сделать свою разработку на основе микроконтроллера, как сделали еще в советские времена в калькуляторе "Электроника МС-1104".

Как я писал выше, в МК-52 есть микросхема электрически стираемой памяти К1601РР1, в которую можно записать до 512 шагов программы. Кроме последовательной шины данных в калькуляторах типа «Электроника МК-52» есть интерфейс с EEPROM и внешними модулями расширения памяти. Что записывать — программную памяти или регистры, определяется переключателем «Д-П» на передней панели. Вместо программной памяти можно сохранить числовые регистры памяти. Можно записать в EEPROM регистры, а записанные данные извлечь в программную область, и наоборот. Одни и те же области в EEPROM могут использоваться как для хранения программы, так и для хранения регистров.

Вид калькулятора со стороны микросхем:

Микросхемы крупно:

Они представляют собой микросхему ПЗУ, где записаны программы.
Всего известны модули:
— БРП «Астро», он же БРП-2 — навигационные программы. Кроме внутренней EEPROM выпускались также сменные модули памяти «БРП» (блоки расширения памяти). То есть обладатели модуля БРП-3 могли открыть корпус, перепаять перемычку и получить модуль БРП-2 «Астро».
Когда я считывал дампы, то в модуле БРП-4 обнаружил дамп от модуля неизвестного назначения. Модуль использовался на кораблях, о чем я писал в начале статьи.
— БРП-3 содержал математические программа
— БРП-4 — математические программы и программы бытового назначения, в том числе игры.
ПЗУ были довольно большого объема, и в один БРП на самом деле влезали программы от двух модулей. Пока нет информации, как использовать эти дампы.

Она так же сидит на калькуляторном кольце, но не отслеживает команды. Микросхема связи с EEPROM или БРП К745ИК1801 довольно самостоятельная. Она только запоминает содержимое регистра X как адрес и длину обращения к ПЗУ или EEPROM по кнопке [А↑], и по кнопке [↑↓] запускает стирание, считывание или запись из, или в область программы или данных.
Применительно к ПЗУ БРП на шину всегда выставляется адрес в параллельном коде, и БРП всегда выдает содержимое ячейки.
Модуль БРП вставляется в соответствующий разъем сзади калькулятора МК-52.

В инструкции и в журналах разработчики поясняли, что этот разъем используется только в технологических целях на этапе производства.
Может быть выпускались какие-нибудь несерийные модификации калькулятора МК-52, но я о них не слышал. Наверняка каждый пользователь МК-52, купив калькулятор, видел сзади корпуса два разъема — большой для БРП и маленький, непонятно для чего. Всё время хотелось разработать какое-нибудь устройство, которое могло сидеть на том разъеме и использовать его в работе.

Чтобы внедриться и что-то записывать в кольцо необходимо было его разорвать. Если обратиться к принципиальной схеме калькулятора, то можно видеть, что на разъем выведены кроме напряжений питания и тактовых сигналов, сигналы с кольца, снятые со входа и выхода микросхемы К745ИК1801. Но оказалось, что выходной сигнал кольца микросхемы К745ИК1801 слабый. Конечно, что-то менять в схеме МК-52 — самый последний вариант. Так я и сделал. Скорее всего он незначительно подтянут на одно из напряжений питания, и его можно довольно свободно перегружать своим сигналом. Микроконтроллер мониторит кольцо МК-52, анализирует его, и может считывать и записывать данные.

Вот принципиальная схема: habrastorage.org/webt/iz/d8/dm/izd8dmuq-h3l18av6dkhgazjg24.png В итоге получилось устройство — модуль «FRS-BRP».

Он на прерываниях от внутреннего генератора частоты калькулятора считывает бит за битом данные, передаваемые по кольцу. Ядро модуля — микроконтроллер STM32F205. Большое количество компараторов необходимо для правильного детектирования логических уровней. Одновременно следит за параллельной шиной для эмуляции блока расширения памяти. Это напряжение вырабатывается от источника питания в 5 вольт. Дело в том, что в калькуляторе используется отрицательное напряжение от 0 до -15 вольт. 3. Плате так же необходимо было использовать эти напряжения, но только не до -15 вольт, а до -5 и до -3. На компараторах всё можно хорошо отфильтровать, их много, но они сейчас очень дешево стоят. В итоге то напряжение, которое в калькуляторе 0 вольт, в плате FRS-SRP стало +5 вольтами, а то, которое -5 вольт стало нулем. Конечно, сам БРП можно эмулировать через засылку данных сразу в кольцо. В основном, компараторы задействованы для декодирования сигналов параллельной шины эмулятора БРП. Но для аутентичности, чтобы пользователь нажимал «те самые» кнопки, которые описаны в инструкции к БРП, решил сделать полноценный эмулятор.

Есть более эффективные средства вычислений. Сейчас мало кто будет использовать калькулятор МК-52 по прямому назначению. Выводит на OLED экранчик содержимого на выбор двух регистров оперативной памяти калькулятора (0-9, A, B, C, D, E) одновременно. Но для энтузиастов, для тех, кто хочет разобраться с его внутренним устройством, кто хочет использовать наработанные программы или тех, кто хочет поиграть в те игры, которые сводили с ума пользователей середины 1980-х годов, этот модуль может пригодиться.
Что умеет этот модуль:
1. Эмулирует (заменяет) модули БРП-АСТРО, БРП-3, БРП-4, БРП-5 в полном соответствии с их инструкцией по эксплуатации (название БРП-5 дано условно, поскольку для найденных данных не был найден соответствующий модуль).
3. В режиме счета по программе, когда основной экран калькулятора моргает, можно нажимая кнопки на модуле просматривать регистры.
2. Позволяет извлекать и записывать в калькулятор один из 130 записанных блоков программы (105 шагов).
5. Позволяет сохранить блок программы (105 шагов) во внутреннюю память модуля с номерами ячеек от 1 до 130.
4. 3, 4 сохраняет и извлекает блоки данных (0-9, A, B, C, D, E) до 130 ячеек.
6. Аналогично с пп. Имеет библиотеку популярных программ («ЛУНОЛЕТ-1», «ЛУНОЛЕТ-2», «ЛУНОЛЕТ-3», «ОС-1», «ОС-2», «АТМОСФЕРА»).
8. Сохраняет и извлекает полную информацию, находящемся в кольце данных (программа, данные и служебная информация) до 50 ячеек.
7. Оказалось, что микросхему К745ИК1303 можно ввести в ступор недокументированной командой, он «уходит в себя», не реагирует на команды в канале связи, и модуль за него обрабатывает математические команды.
9. Позволяет по желанию заблокировать математический процессор К745ИК1303 и эмулировать за него математические функции, которые тот вычисляет, для увеличения быстродействия и точности вычислений. Дополняет функционирование калькулятора путем обработки неиспользуемых в калькуляторе функций с кодами 0x28 (K *) и 0x29 (К /).

Сейчас почти все коды заняты, и с пульта можно ввести только три незадействованные команды — коды 27, 28 и 29. Как я выше писал, по каналу связи передается код операции. Хотя я не знаю, какие команды можно реализовать по причине, что калькулятор по прямому назначению уже не торт, но сам факт обработки увлекает. В принципе, их вполне хватает для каких-нибудь задач.

В модуле реализованы простые команды диалога, можно считать и записывать содержимое данных, программы, служебных областей или кольца целиком. Ну, и конечно — общение с компьютером по USB. Вот скриншот: habrastorage.org/webt/mh/2v/dr/mh2vdrtvnwjlxx1oxcdff0k4yu4.jpeg Его можно сохранить на диск, извлечь, проанализировать, изменить и записать в калькулятор.

Или узнать, что произойдет, если какую-нибудь служебную ячейку записать по-другому. Можно например, в канал связи положить какое-нибудь число и посмотреть, как оно будет обрабатываться другими чипами. Или проверить, возможно ли вывести калькулятор из состояния «тьма», если в регистре X через модуль исправить порядок, скажем с 500 на 0, не выведет ли он его из ступора?

А другие состояния вроде программного счетчика, признака — считает ли калькулятор по программе или выводит на индикатор, и прочее, — эта информация сидит во внутреннем регистре R.
Но разработчики вывели наружу и его. К сожалению, наружу калькулятора выходит только кольцо с данными. То есть при желании можно подключиться к этой шине и более внимательно изучить его внутренности. Если посмотреть на схему того же МК-52, то можно видеть, что там есть «некая перемычка» — она и есть выход и вход регистра «R».

Знаменитая микросхема часов «К145ИК1901» так же имеет выведенные наружу регистры M и R. Такие выведенные регистры есть, наверно, во всех микросхемах семейства К145ИК5, К145ИК13, К145ИК18 и даже К145ИК19. Можете убедиться, взглянув на принципиальную схему.

Я даже в порядке эксперимента подключился к регистрам в часах на К145ИК1901 и снял, где у него находятся данные.

В заключение статьи скажу, что упомянутое семейство микроконтролеров было очень популярным в CCСР, на его базе было выпущено большое количество калькуляторов — модели:
— К145ИК2 — Б3-09, Б3-09М, Б3-14, Б3-14М;
— К145ИК5xx — Б3-05М, Б3-21, МК-46, МК-64, МС-1103, МК-59, Elwro 330;
— К145ИК13xx — Б3-32, МК-44, Б3-34, МК-54, МК-56, МК-52, МК-61, МС-1104.
На микросхемах серии К145ИК18xx и К145ИК19xx — бытовые приборы, из известных — таймеры для микроволновок, часы, реле времени для фотографии, контроллеры лентопротяжек в магнитофонах и прочее.

Надеюсь, было интересно. Вот и всё, что я хотел сказать. Спасибо за внимание.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть