МК-61: подводная лодка Феликса Лазарева

Феликс Лазарев — довольно известный в определённых кругах человек, автор эмулятора «emu145», код которого используется во многих других эмуляторах советских программируемых калькуляторов.

В 2012 году он вместе с другими энтузиастами восстановил содержимое ПЗУ процессоров МК-61, исследуя микросхемы под микроскопом. Эта работа позволила эмулировать калькулятор на уровне его микрокода.

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

К сожалению, самих программ не сохранилось — Феликс много переезжал, все тетради потерялись. Тогда у меня появилась идея: восстановить по его воспоминаниям сюжет и правила какой-нибудь игры, а код написать заново нейросетью.

Выбрали «Подводную лодку», которую Феликс написал примерно в 1985–1986 годах. В вчерашней переписке разобрали управление, расход воздуха, поведение эсминца и устройство экрана. Основной код написал «Сол», затем его оптимизировала и дописала «Астра». Получилось 105 команд «МК-61». Это реконструкция по воспоминаниям автора, а не найденный оригинал. Код добавлен в каталог.

Море занимает восемь позиций: 8 — лодка, Е — эсминец. Справа — воздух. Управление переключателем угловых единиц: Р — погружение, ГРД — удержание глубины, Г — всплытие. На поверхности воздух прибавляется по два за кадр, на трёх глубинах расходуется по 2, 5 и 10. На второй и третьей глубине неподвижная лодка незаметна, но отсидеться там надолго не получится. Задача — выжить.

Несколько скриншотов игрового процесса, думаю любопытно взглянуть будет как вообще играли на таких калькуляторах:

На экране отображаются позиции моря с подводной лодкой (8) и эсминцем (Е), справа показывается запас воздуха.
Старт: лодка на поверхности, море свободно, воздуха 20
На экране отображаются позиции моря с подводной лодкой (8) и эсминцем (Е), а справа — запас воздуха.
Слева появился эсминец. Воздуха уже 22 — пора погружаться
На экране отображено игровое поле с подводной лодкой (8) и эсминцем (Е), справа показан уровень воздуха — 20.
Вторая глубина, воздуха осталось 15. Лодка исчезла с поверхности. Цифру глубины добавили при реконструкции — в оригинале её не было
На экране отображаются позиции моря с подводной лодкой (8) и эсминцем (Е), справа показывается запас воздуха.
Попытка всплыть, пока эсминец ещё рядом, закончилась попаданием. При нулевом запасе воздуха результат тот же

Тут, кстати, есть интересная особенность, про которую я хочу рассказать тем, кто не сталкивался с такими калькуляторами. Все игры для программируемых калькуляторов можно условно разделить на два класса: пошаговые и реального времени.

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

Интересный эксперимент, как по мне, «Астра» себя очень хорошо показала в задаче оптимизации программ «МК-61», не уверен, что человек справился бы лучше.

Комментарии 10

Captain Estella № 1
Посмотрела. Что за расширение .md? И опять же а как играть? Описания игр нет
Евгений Степанищев автор № 2
Markdown, разумеется. У каких игр нет описания?
Captain Estella № 3
Если б я ещё знала что такое markdown… Да нашла описания спасибо. В md
Евгений Степанищев автор № 4
а зачем знать-то? разве прямо на гитхабе нельзя читать?
Captain Estella № 5
Евгений Степанищев, Можно и прямо там. Но всё равно что такое markdown не поняла. )))
Евгений Степанищев автор № 6
Captain Estella, А какая разница?
Alexander Sytar № 9
Евгений, у меня и раньше самооценка по трудности моей работы была невысокой после случая корректировки спутника с поломанным двигателем силой солнечного ветра, а теперь, после информации про отладку микрокода через лупу и вовсе стала равна нулю…
Евгений Степанищев автор № 10
Лучше радоваться тому, что умеешь, а не грустить из-за того что не получается ) Наверняка есть же какие-то сильные стороны? )