«99 бутылок» на языке «Электроники МК-61»
59. Язык калькулятора Электроника
В детстве такие калькуляторы я видел только на картинках в журнале «Наука и жизнь», а программы для них были
Вчера мне в руки попал настоящая «Электроника
Так выглядят мои «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». Не весть что, но что вы хотели от калькулятора? Кстати, выводимая фраза — не строка (спойлер: а число), о том как мне пришлось помучаться я ещё расскажу.
Комментарии 6
:)
Якогда-то не завёл тег программирование (точнее завёл, но не пользовался) и сейчас по привычки помечаю этим :) Переименовать надо как-нибудь :)
За ваше же терпение в разборе древних программ — большое уважение!
Это не древняя программа, я её сам написал несколько дней назад :) А за хороши слова — спасибо! :)
Вот с этим согласен на 100%. Тогда об этом писаликак-то очень завлекательно. Это казалось не нудным, а завораживающим, как будто там, за этими значками, другой, очень интересный мир и усилия по его достижению будут вознаграждены чем-то восхитительным!
А что мешает вставить код, если он корректно написан, в эмуляторhttp://mk-61.moy.su , который хавает его в текстовом виде, и запустить?
А потом оказывается, что это натуральная многопроцессорная система, в которой ведущий процессор при встрече необрабатываемой команды выдаёт её в магистраль, где оную может подхватить и обработать другой процессор. Или не обработать, в каком случае ведущий по таймауту и выдаёт тот самый ЕГГОГ…
И что в процессор с