«МК-61s»: два новых набора команд

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

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

Поэтому пришлось расширять команды по префиксному типу — код 1F используется как префиксный для работы с новыми банками памяти, а 2F — для работы с экраном.

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

Поскольку экран «МК-61» заменить в те годы было не на что, я бы оставил его тем же, но сделал бы две вещи.

Во-первых, развязал бы вывод на экран с регистром X, что позволило избегать появления на экране промежуточных вычислений.

Во-вторых, позволил бы программисту управлять каждым сегментом двенадцатиразрядного индикатора. Это даёт возможность выводить какое-то подобие букв и рисунков. Весь алфавит так не выведешь, но некоторые буквы и знаки — запросто.

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

И, конечно, стоит подумать об расширении памяти. Тут действительно настоящая проблема. Ретроконсоль «МК-61s» уже давно умеет в специальном режиме добавлять к традиционным 105 байтам ещё семь практически без нарушения обратной совместимости, а недавно в ней появились даже новые команды для работы с областью памяти Ms, которая была предусмотрена в калькуляторе «Электроника МК-61», но ранее не использовалась. Однако и этого всё равно недостаточно.

Поэтому я добавил этой памяти ещё несколько дополнительных банков, выделив префикс 1F для переключения. Сначала я думал, что обойдусь одной командой вызова подпрограммы, но оказалось, что для программирования это неудобно, так что в этом наборе появились еще циклы и команды условных переходов.

В итоге в расширенном режиме теперь доступно: 112 байт обычной памяти, резерв Ms в 63 байта (в обычном калькуляторе там 56 байт, но тут пришлось расширить из-за добавленного регистра Rf, который есть в «MK-61s»), плюс 31 банк памяти по 112 байт каждый. Всего 3647 байт.

Правда, сами команды удлинились — новые команды занимают от двух до четырёх ячеек. Самые длинные — команды перехода по адресу: префикс, код команды, выбор банка и адрес ячейки. Я теории их можно сократить, но тогда придётся жёстко завязаться на количество банков, а мне бы этого не хотелось.

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

Leonid № 1
Опять не по теме, но ты не пробовал ещё опус 5.5? Я от него просто в шоке уже который день
Leonid № 3
Начну наверное с последнего. Я попросил его написать стих.

Сентябрьское утро

Туман над озером клубится,
Ещё не видно берегов,
И день, как белая страница,
Лежит нетронутый, без слов.

Пока никто не ждёт ответа
И не проснулся телефон,
Я слышу: тихо тает лето
По крышам — медленно, как сон.

Ещё чуть-чуть — и день начнётся,
Закружит, спутает, сомнёт.
А это утро не вернётся,
Но в этих строчках — поживёт.

Туман редеет понемногу,
И проступают берега.
Ну что ж, пора и мне в дорогу.
И ноша, кажется, легка.
Leonid № 6
Это прям качественным скачок по сравнению со всем что я пробовал до этого. Лучше астры. С одного промта делает очень крутые вещи.
Евгений Степанищев автор № 9
Огонь! Может оплачу дёшевую подписку и попробую на задачах, где Астра не справляется
Leonid № 11
Астра может стихи писать? ) раньше никто с этим не справлялся.
Евгений Степанищев автор № 12
Они все могут, но не смотрел насколько хорошо, мне неактуально.
Leonid № 13
Евгений Степанищев, Мне тоже, но как тест — очень интересно. Пока ерунда получалась везде. Кроме опуса.
Евгений Степанищев автор № 14
Leonid, Вот если он мне допишет оптимизации для 4х4 в МКПро без привязки к имени программы — тогда будет огонь)
Leonid № 17
Попросил написать цепной квайн на brainfuck, посмотрим
Leonid № 20
https://claude.ai/referral/XlmrUxoa9Q?s=android


бесплатная неделя про аккаунта, если надо.
1
Евгений Степанищев автор № 30
Попробовал с двух разных своих электронных почт через литовский впн, оба аккаунта тут же засуспендили…
1
Leonid № 31
Странно..
Евгений Степанищев автор № 32
Там не надо иметь какую-то особую почту, по которой связь с Россией не видно? Я просто на свою почту на gmail.com пытался зарегаться, но регион у неё российский (по идее это только Гугл должен знать)
Leonid № 22
->++>+++>+>+>++>>+>+>+++>>+>+>++>+++>+++>+>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>+>+>++>>>+++>>>>>+++>+>>>>>>>>>>>>>>>>>>>>>>+++>>>>>>>++>+++>+++>+>>+++>>>+++>+>+++>+>++>+++>>>+>+>+>+>++>+++>+>+>>+++>>>>>>>+>+>>>+>+>++>+++>+++>+>>+++>+++>+>+++>+>++>+++>++>>+>+>++>+++>+>+>>+++>>>+++>+>>>++>+++>+++>+>>+++>>>+++>+>+++>+>>+++>>+++>>+[[>>+[>]+>+[<]<-]>>[>]<+<+++[<]<<+]>>+[>]+++[++++++++++>++[-<++++++++++++++++>]<.<-<]