«MK-61s»: область памяти «Ms»

Сегодня утром в группе, посвящённой советским программируемым калькулятором возникло очень интересное обсуждение, которое вылилось в небольшое исследовании и добавления специального режима в ретроконсоль «MK-61s».

Я как-то давно задумывался над тем, почему в калькуляторе «МК-61» есть три команды, идущие подряд, которые ничего не делают — К НОП, К 1 и К 2, но всерьёз этой темой не заинтересовался. Все три комбинации дают разные коды — 54, 55 и 56, и если первая «честная» команда без операции, то зачем нужны ещё две?

Ответ нашёлся в книге Я. К. Трохименко и соавторов «Программируемые микрокалькуляторы. Устройство и пользование» (1990):

Фрагмент таблицы из книги Трохименко «Программируемые микрокалькуляторы» (1990 г.) с кодами операций для МК-61, включая К ПВ (обмен регистрами) и К ОД (обмен страницами памяти).

В последовательной памяти калькулятора предусмотрена область Ms. Для семейства МК-61/52 это восемь страниц по семь байтов. Она размещена рядом со стеком, но отдельно от обычных 105 шагов программы. Получаются ещё 56 байтов, которые потенциально можно было бы использовать для чисел или программного кода.

Оператор обмена регистрами данных областей памяти Ms и Md обеспечивает обмен начиная с адреса N=0.
По устройству этих операций виден смысл резерва: быстро сменить комплект данных или фрагмент программы, сохранив прежний. Ms при этом одна — восемь чисел и 56 программных байтов занимают одни и те же страницы. Для серийного «МК-61» эта возможность осталась незадействованной, хотя необходимые операции переноса в его микропрограмме сохранились.

Что опять-таки вызывает вопросы: почему разработчики не сделали один-единственный шаг, если аппаратно и программно всё, по сути, было готово.

При помощи нейросети я связал эти команды с соответствующими участками микропрограммы в ретроконсоли «MK-61s». Чтобы сохранить совместимость, этот код работает только в расширенном режиме «112ШГ+ПF». У этого режима уже есть дополнительная страница кольца: 16 вместо 15. Семь страниц области M2 занимают метка, канал связи и стек; для Ms выделено девять страниц. Поэтому исторический замысел в «MK-61s» расширен до девяти чисел или 63 шагов программы.

Обсуждение особенностей советских программируемых калькуляторов, использование области памяти Ms и способы сохранения дополнительных чисел через «пустышки».

Надо упомянуть, что до этой же памяти энтузиасты добирались и без работающих команд обмена — с помощью «пустышек», особых некорректных чисел. Они сбивали поиск служебной метки в кольцевой памяти, заставляя обычные стековые операции обращаться к участкам Ms. Так удавалось сохранять дополнительные числа сверх паспортного количества регистров. Сколько именно зависело от модели калькулятора и самих чисел.

Правда, так можно было сохранить всего несколько цифр, полностью использовать этот участок памяти этим способом невозможно. Да и такой способ работы с ним занимает слишком много команд, в реальной программе его использовать крайне сложно. Одну из статей, описывающих этот способ, можно найти в «Технике — молодёжи», № 7 за 1986 год.

Жаль, что разработчики не довели эту задумку до серии, расширение памяти в полтора раза и обмен регистров — это, думаю, подарок, о котором программисты того времени не могли и мечтать.