Я вырос в простой советской семье, которая, как водилось в те времена, жила от одной скромной зарплаты до другой. Я взахлёб прочитывал «Технику Молодежи» и «Юный Техник» с приложением «ЮТ для умелых рук», которые мы выписывали на дом, а для того чтобы разжиться «Моделистом-Конструктором», приходилось раз в месяц наведываться в районную библиотеку. Больше всего меня привлекали заметки про электронно-вычислительные машины и компьютерную технику. Однако о том, чтобы заиметь свой собственный компьютер, не могло быть и речи: даже простенький «ZX Spectrum 48K» стоил для нас совершенно неподъемных денег. Я безуспешно попытался собрать по чертежам и схемам из журнала персоналку «ЮТ-88», но бросил эту затею после того, как родители притащили откуда-то программируемый калькулятор «Электроника МК-54». Ведь на нем можно было писать самые настоящие игры!
Недавно, прибираясь в чулане, я неожиданно нашел это замечательное устройство. Вставил батарейки, включил, работает! Когда-то калькулятор комплектовался дерматиновым чехлом и книжечкой карманного формата с подробными инструкциями по эксплуатации, но эти аксессуары, как и адаптер питания с хитрым двухштырьковым разъемом, оказались безвозвратно потеряны. Осталось только само устройство, сжимая в руках которое, я испытал сильный приступ ностальгии.
На Хабре уже подробно рассказывали о конструкции калькуляторов этой серии, которая с современной точки зрения выглядит довольно примитивной. Но тогда, в 1988 году, «МК-54» казался самым настоящим чудом техники. Советская промышленность начала выпуск этой машины в 1982-м, и вскоре калькулятор появился на полках магазинов по цене 65 рублей — довольно дорого по тем временам (для сравнения, более «продвинутая» трехпроцессорная версия калькулятора, «МК-61», стоила 85 рублей). Тем не менее, это был самый доступный программируемый калькулятор в СССР в середине 80-х, более дешевого варианта попросту не существовало.
«МК-54» был оборудован двумя процессорами на базе бескорпусной микросхемы серии К745: один, помимо основных функций ЦП, отвечал за контроллеры дисплея и клавиатуры, второй играл роль математического сопроцессора. Быстродействие калькулятора при выполнении программ составляло примерно 5 операций в секунду.
Память «МК-54» позволяла хранить 98 шагов программы (по 1 байту каждый), калькулятор располагал 4 операционными регистрами и 14 адресуемыми регистрами памяти. В отличие от своего «старшего брата» «МК-52», этот аппарат не обладал энергонезависимой памятью, поэтому при отключении питания записанная ранее программа сбрасывалась, и ее приходилось вводить заново.
Человек, привыкший к обычным карманным или настольным калькуляторам, и впервые взявший в руки «МК-54», обычно впадал в состояние ступора: как на нем считать? На клавиатуре отсутствует клавиша «=», зато имеется множество странных кнопок вроде «К», «СХ», «БП», «ПП», «В/О», «С/П» и других.
Действительно, простые арифметические действия на этой «Электронике» выполнялись следующим образом: нужно было ввести одно число, затем переместить его в следующий регистр стековой операционной памяти нажатием кнопки «В↑», потом указать второе число, и, наконец, ввести знак операции. Иными словами, классический арифметический пример «2+2=» на «МК-54» выполнялся такой хитроумной последовательностью клавиш: «[2], [В↑], [2], [+]».
Собственно, устройство создавалось в первую очередь не для простых арифметических, а для сложных инженерных расчетов, которые можно было выполнять автоматически — при помощи составленных и записанных в память программ. Но для этого следовало сначала выучить множество новых и незнакомых обычному советскому обывателю понятий: «счетчик команд», «адреса возврата из подпрограмм», «регистры памяти», «операционный стек». Именно так для многих граждан СССР и начался путь в «большое программирование».
Способов применения в народном хозяйстве для «МК-54» существовало великое множество: строительные, сельскохозяйственные и экономические расчеты, навигация, биология и химия, астрономия и инженерное дело. Пожалуй, нет ни одной научно-технической сферы, для которой не придумали бы подходящих программ, способных работать на этой машине. В различных журналах и сборниках время от времени попадались программы для определения биоритмов человека, для подсчета объема ингредиентов при приготовлении кулинарных блюд, для построения наиболее эффективной диеты, учёта узлов и петель в процессе вязки шарфиков и свитеров, и даже для огородников с вычислением оптимальных дат посадки укропа на личных шести сотках. Но лично мне в первую очередь были интересны игры, код и описания которых регулярно публиковались в рубрике «Клуб электронных игр» журнала «Техника молодежи».
Для программирования этого калькулятора (как и у его ближайших сородичей) использовался так называемый язык машинных команд ЯМК-34. Этот язык позволял выполнять математические операции, а также процедуры пересылки данных и управления, чего при реализации большинства прикладных задач оказывалось вполне достаточно. Программа могла выполняться на калькуляторе пошагово — для этого на клавиатуре имелись специальные клавиши с направленными вправо и влево стрелками и обозначением «ШГ», они позволяли отследить ход исполнения команд, оценить содержимое регистров и обнаружить допущенные ошибки.
Безусловно, двенадцатиразрядный вакуумно-люминесцентный индикатор не позволял отображать что-либо, кроме цифр, математических знаков и некоторых символов: Г, L, С, Е, вроде знаменитого сообщения об ошибке «ЕГГОГ», поэтому игры для «МК-54» были весьма своеобразными. Обычно они включали подробное текстовое описание сюжета игры с завязкой, развитием истории и персонажами, иногда к нему добавлялись изображения игрового поля — например, расчерченного на квадратные секции. Калькулятор же играл вспомогательную роль: просчитывал ходы за соперников, выдавал случайные числовые значения, или несколько цифр через десятичный разделитель. Пользователь вводил цифры, характеризующие его ход, и снова запускал программу на выполнение — после чего калькулятор выдавал следующее значение. Цикл повторялся до условной победы или поражения игрока. Помимо классики вроде «Морского боя», «Крестиков-ноликов» и «Шашек» существовали почти настоящие остросюжетные квесты, «экономические стратегии», военные баталии. Были и «динамические» игры вроде бегающей по индикатору «мишени» в виде буквы «О», в которую нужно было «попасть снарядом». Еще были «гонки», и совершенно изумительный «Лунолёт», в котором пользователь задавал условному космическому кораблю тормозящий и разгонный импульсы, следя при этом за остатками топлива и расстоянием до планеты, с целью погасить скорость до нуля и приземлиться на Луну, не разбив корабль.
В первое время я просто вводил команды в калькулятор со страниц «Техники Молодежи», стараясь не наделать ошибок, а самые интересные варианты терпеливо переписывал в тетрадочку. Случались и неприятные сюрпризы, если программа оказывалась длиннее доступной памяти: многие игры писались для калькулятора «МК-61», позволявшего хранить 105 шагов программы, в то время как мой «пятьдесят четвертый» поддерживал только 98. Такие «длинные» цепочки команд приходилось оптимизировать и сокращать, что само по себе представляло отличную головоломку и давало неплохую пищу для ума. Ну, а следующим шагом стало написание собственных игр, сопряженное с придумыванием увлекательного сюжета и сложных игровых алгоритмов. При этом «электронную» часть игры, хоть ты тресни, нужно было уложить в 98 команд, желательно, с запасом. Одну свою игру, помнится, я даже отправил в «Технику Молодёжи», но ее почему-то так и не опубликовали.
Тем не менее, упражнения с калькулятором не прошли даром. Поступив в институт и оказавшись на лекциях в рамках курса «Программирование микроконтроллеров», я с удивлением обнаружил, что преподаваемый там язык Ассемблера чем-то мне смутно знаком. Программы писались без особого труда, в то время как однокурсники постоянно путались в непонятных для них стеках и регистрах. Все-таки опыт работы с «МК-54» прививал определенную логику и соответствующий стиль
Сегодня существует несколько полноценных эмуляторов, позволяющих посмотреть на работу «МК-54», «МК-61» и их сородича «Б3-34» вживую, ввести программу и проследить за ее исполнением. Вот, например, отличный эмулятор «шестьдесят первого» — с ним можно поиграться прямо в браузере. Кроме того, в сети нетрудно обнаружить и подборки игр для калькуляторов этой серии — вот одна из них.
В том числе и из-за того, что в свое время платы с советскими микросхемами серии К145 (ими комплектовался «Б3-34») активно сдавали «на золото», таких калькуляторов в рабочем состоянии сегодня осталось немного. Мой экземпляр, с заводским номером 10658, выпущенный в апреле 85-го — один из хорошо сохранившихся. Осталось только отыскать старую замусоленную тетрадку, в которую я переписывал код игр для этой машины, и можно будет вспомнить давно ушедшую юность, проведя пару вечеров за «Лунолётом» и «Колхозным рынком». Нынешним подросткам подобные развлечения, к сожалению, недоступны.
P. S. Ждем упоминания в комментариях легендарной «Энциклопедии профессора Фортрана» через пять… Четыре… Три…
Автор: CyberPunk