Хаки в «Электронике МК-61»

Очень интересно разбирать хаки, которые разные люди изобретали, чтобы уместить свои программы в 105 байт памяти калькулятора «Электроники МК-61». Их там действительно просто нереальное количество, они разной сложности, но один из них показателен в своей простоте.

В коде программы «Рембо-III» есть несколько похожих мест (я буду приводить код на языке «МК-Про» для наглядности):

fn lost() {
  halt("ЕГГОГ")
}

fn front_stop() {
    …
    if cells[7] < 0 {
      lost()
    }
    …
}

Если некое проверяемое значение меньше нуля (в двух остальных местах — меньше или равно нулю), то пишем на экране «ЕГГОГ» — слово «error», это одно из немногих слов, которое калькулятор способен отобразить, так как у него есть специальная логика для отображения некоторых букв, поэтому его часто используют для обозначения проигрыша.

Мой оптимизатор умеет заменять halt("ЕГГОГ") одним опкодом, потому что это «встроенное» в калькулятор слово, но тут он пишет относительно много кода — проверка условия и вызов, тогда как проверку и вывод «еррора» можно объединить в один опкод — F √ или F lg в зависимости от условия.

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

В «Рембо-III» это сокращает программу на четыре байта. Это существенно, когда у доступно так мало памяти.

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

SiMMmr E16/NR04δ13 № 1
а чего только МК-61-то? в МК-52 разве не то же самое? да и Б3-34 вроде только доступным числом регистров, шагов программы и меньшим числом функций отличаются — но для отдельновзятого EГГОГ не критично )
Евгений Степанищев автор № 2
Ну так я МК-Про пишу для МК-61
SiMMmr E16/NR04δ13 № 3
так оно и в 52 подойдёт )
я именно о том, что на гитхабе в описании
Евгений Степанищев автор № 4
пойдёт, думаю, если там аппаратных особенностей нет. МК-Про очень много хаков использует, по сути — вообще все, вряд ли я что-то пропустил
Евгений № 8
Всем привет! Аккаунт пришлось завести заново, соответственно контроль за этой группой я утратил. Буду заводить новую как только получится восстановить часть контактов, которые мне оперативно нужны
1 1 1
Lehner № 13
До жути понравилась книга «Время — деньги» Генри Форда. Она не про то, как пахать 24/7, а про умное отношение ко времени и деньгам: мыслить стратегически, ценить свои ресурсы и фокусироваться на действительно важном. После неё начинаешь иначе смотреть на работу и жизнь в целом. Есть и в аудио-формате — могу переслать кому интересно. Сам слушал, причём не один раз, каждый раз находил для себя новые мысли!)