Как и во всех остальных случаях, специально чтобы оттестировать новые команды, я перенёс на «MK-61s» игру. У меня это уже проверенный метод для разных интерпретаторов, который даёт хорошие результаты — и баги становится проще найти, и оценить насколько удобно использовать сами команды
На этот раз, я об этом уже писал, выбрал «Элиту». Те, у кого был в детстве какой-либо клон «Спектрума», думаю, очень хорошо её знают.
Безусловно, графику оригинальной игры, как ни расширяй калькулятор, тут не повторить, но можно реализовать больше логики и кодировать происходящее в игре более понятным образом.

Заставка «Элиты» на двенадцатиразрядном индикаторе
Как первый результат расширенных команд вывода на экран — на индикаторе теперь можно вывести заставку и подписать, что игра ожидает нажатия кнопки C/П для старта. Всё это выводится в стандартных двенадцати знакоместах, просто нестандартным образом.
Внутри запрограммирована небольшая вселенная из 256 миров. Можно торговать шестью товарами — едой, рудой, топливом, электроникой, золотом и оружием, — заправляться, ремонтировать корабль, покупать ракеты и улучшать лазер. Между мирами встречаются пираты, а иногда и те самые таргоиды, которые встречались в оригинальной игре.

Имя начального мира
Названия миров я составляю из шестнадцати букв, которые можно более-менее узнаваемо изобразить сегментами. Например, начальный мир называется «dAdnAA». Получается что-то вроде технических обозначений, но от названий космических объектов благозвучие не требуется.
Имена при этом несут двойную функцию. Они связаны с устройством мира, в том числе с торговлей, поэтому постепенно можно научиться узнавать полезные места.
Торговля устроена просто: смотрим цены, покупаем товар, выбираем соседний мир, летим, продаём. Топливо, которое лежит в трюме, — товар, бак заправляется отдельно.

Цена еды: слева номер товара, справа цена, про «СП» я уже рассказывал
С управлением получилось по-калькуляторному: вводишь номер действия и нажимаешь С/П. Например, 10 показывает цену еды, 30 покупает одну единицу, а 40 продаёт. Для остальных товаров меняется последняя цифра. Во время ввода предыдущая картинка остаётся на экране, набираемый код её не затирает.
Состояние корпуса, щита, бака, нагрев и заполнение трюма показываются ещё и шкалой из пяти секций. Точное значение остаётся рядом: шкала нужна, чтобы с первого взгляда понять, много у тебя осталось или мало.

Состояние корпуса: шкала и точное значение
Бои пошаговые. За один ход выбираешь и манёвр, и действие: сблизиться или отойти, выстрелить из лазера или пустить ракету, восстановить щит или готовить бегство. Это снова две цифры: первая отвечает за движение, вторая — за действие. Можно, например, отходить и одновременно заряжать прыжок.
Это, конечно, самое слабое место, калькулятор есть калькулятор, буквенного ввода нет, а цифры запомнить куда сложнее.
Дистанция имеет значение: лазер не достаёт до далёкой цели, а вблизи стреляет сильнее. Кроме того, он ещё и греется. Ракет мало, щит держит конечно количество ударов, так что бесконечно повторять одну и ту же команду не получится.

Схема дистанции в бою: свой корабль и противник
Для расстояния я сделал отдельную схему: U («you») обозначает наш корабль, H («hostile») — противника, а точка отмечает границу, до которой достаёт лазер. Так посмотреть приборы или выбрать цель можно без расходования хода.
С таргоидами интереснее: у них есть корабль-носитель, который выпускает дронов. Поэтому просто расстрелять большой корабль недостаточно, надо убрать весь строй.

Носитель и дроны на одном индикаторе
Маленькие кольца слева показывают живых дронов. Правее — выбранная цель и её оставшаяся броня. Для носителя это H, для дрона — его номер. То есть даже в двенадцать знакомест помещаются несколько противников, выбор цели и число, которое помогает решить, стоит ли тратить на неё ракету.

После уничтожения всех противников: YES. CLEAr
Победу я обозначил надписью «YES, CLEAr» . За победу дают награду, после сражения можно закончить перелёт и вернуться к торговле.
На этой игре хорошо стало видно, зачем понадобилось отделять экран от вычислений. Промежуточные числа больше не мелькают перед глазами, а новый кадр появляется целиком. Кроме того оказалось, что нужно добавить больше команд — первая версия медленно заменяла отдельные сегменты, и выглядело это довольно мучительно.
Вообще, с быстродействием пришлось повозиться отдельно: сокращать обмены между банками, переиспользовать уже вычисленные значения, заимствовать калькуляторные трюки с косвенными переходами.
Игра и короткая инструкция лежат в репозитории. Нужна свежая прошивка с новыми командами; открываешь папку ELITE на устройстве, закрываешь памятку и нажимаешь С/П. Пока не решил стоит ли делать сохранения. С одной стороны это логичный следующий шаг, с другой стороны уже слишком далеко отходит от исходной идеи.