📱«99 бутылок» на языке «Электроники МК-61»

«Электроника МК-61» (59.82КиБ)
«Электроника МК-61» с запущенной на нём программой

«Электроника МК-61» — устройство из класса «программирумых калькуляторов». Были когда-то такие гаджеты, позволявшие со всеми ограничениями калькуляторов (небольшая клавиатура, типичный для калькулятора экран) писать программы.

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

Вчера мне в руки попал настоящая «Электроника МК-61» (для передачи компьютерному музею) и я наконец-то на обеде и потом вечером разобрался в этих странных значках.

Так выглядят мои «99 бутылок…» на этом калькуляторе:
8112000 Х→П c 8 + ИНВ Х→П b Вх 10 ÷ [X] Х→П d 8 + ИНВ Х→П e В/О ПРГ
П→Х 0 1 0 ÷ [x] Х→П 1 Вх {x} 1 0 × Х→П 2
1 1 Х→П 8 1 2 Х→П 7 П→Х 2 ПП 34 Х→П a
1 4 Х→П 8 1 3 Х→П 7 П→Х 1 ПП 34 П→Х a
^ С/П
6 - /-/ x<0 45 9 + К П→Х 7 + ИНВ В/О
1 + К П→Х 7 + ИНВ К П→Х 8 ^ В/О
Поскольку у меня в блоге скорее всего отсутствуют любители работать каждый день с калькуляторами советских времён, то я не буду придерживаться принятой нотации с номерами — не думаю, что кто-то будет это набирать.

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

До запуска программы нужно в регистр «0» поместить стартовое значение (например, «99», «Х→П», «0») и запустить программу «В/О», «С/П».

Это я сделал из-за того, что цикла в программе нет — из-за мельтишения разрядов совершенно не понять, что происходит. Хотя добавить его очень просто — до команды «С/П» надо вставить одну проверку с переходом и сдвинуть адреса.

Поэтому на вход подаётся нужное число, например, «42», а на выходе мы можем полюбоваться фразой «BEEr 42». Не весть что, но что вы хотели от калькулятора? Кстати, выводимая фраза — не строка (спойлер: а число), о том как мне пришлось помучаться я ещё расскажу.
5 февраля 2016 06:38

hshhhhh.name (инкогнито)
5 февраля 2016, 15:08

темы: webdev

:)

bolknote.ru (bolknote.ru)
5 февраля 2016, 16:03, ответ предназначен hshhhhh.name

темы: webdev
Я когда-то не завёл тег программирование (точнее завёл, но не пользовался) и сейчас по привычки помечаю этим :) Переименовать надо как-нибудь :)

Alex (инкогнито)
8 февраля 2016, 11:07

О, эти уроки программирования в "Науке и жизни"! Когда был подростком нашёл на чердаке все номера этого журнала за тридцать лет и натолкнувшись на продвинутые программы к этому калькулятору копался в них, пока не нашёл всю школу программирования с самого начала. =) Было что-то завлекательное в этих значках и в обстоятельном тоне журнала, который намекает на научные глубины в самых простых вещах.

За ваше же терпение в разборе древних программ - большое уважение!

bolknote.ru (bolknote.ru)
8 февраля 2016, 15:38, ответ предназначен Alex

За ваше же терпение в разборе древних программ — большое уважение!
Это не древняя программа, я её сам написал несколько дней назад :) А за хороши слова — спасибо! :)
Было что-то завлекательное в этих значках и в обстоятельном тоне журнала, который намекает на научные глубины в самых простых вещах.
Вот с этим согласен на 100%. Тогда об этом писали как-то очень завлекательно. Это казалось не нудным, а завораживающим, как будто там, за этими значками, другой, очень интересный мир и усилия по его достижению будут вознаграждены чем-то восхитительным!

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)