vak: (Улыбка)
Serge Vakulenko ([personal profile] vak) wrote2014-01-03 09:29 pm

Калькулятор МК-61

Сделал себе подарок на новый год: купил на ебее оригинальный советский программируемый калькулятор МК-61. Практически новый непользованый 1994 года выпуска. Инструкция, блок питания, заводская коробка, все дела. Когда-то такой девайс стоил целое состояние, 85 рублей.



Предыдущий калькулятор из этой серии, МК-54, был первым компьютером, для которого я писал программы - вместе с [livejournal.com profile] _kalle_. Это была отработка наблюдений переменных звезд с усреднением по методу наименьших квадратов.

Вообще-то я озадачился построить реплику в железе, с современным светодиодным иникатором, нормальнами кнопками и интерфейсом USB. На макете уже кое-как работает. Исходники здесь: https://code.google.com/p/vak-opensource/source/browse/trunk/microcontrollers/mk-54/

[identity profile] 1500py470.livejournal.com 2014-01-14 09:09 am (UTC)(link)
советских программируемых калькуляторах Электроника Б3-34, МК-54, МК-56, МК-61, МК-52 (и аналогичных) физически оперативной памяти столько, сколько заявлено в руководстве к ПМК, но из-за особенностей аппаратной реализации существует виртуальный 160-шаговый цикл[1], состоящий из 3 ветвей: «главной», «короткой побочной» и «длинной побочной»[2].

Главная ветвь — это то, что в характеристиках калькулятора указывается как «Количество шагов программы». В семействе Б3-34 главная ветвь занимает 98 шагов — адреса с «00» по «97», в МК-61 и МК-52 105 шагов — с «00» по «104» (на экране отображается как «-4»). Если калькулятор в конце главной ветви не встретил команд В/О, С/П или БП, то счётчик шагов продолжает увеличиваться и калькулятор переходит в диапазон короткой побочной

http://ru.wikipedia.org/wiki/Главная_и_побочные_ветви

Короткая побочная ветвь занимает 14 шагов программы — с адреса «98» по «L1» (МК-61 и МК-52: 7 шагов с адреса «-5» по «L1»). Эти адреса соответствуют реальным адресам «00» — «13» (МК-61 и МК-52: «00» — «06»). Если в этих адресах калькулятор не встретил команд В/О, С/П или БП, то счётчик шагов продолжает увеличиваться и калькулятор переходит в диапазон длинной побочной ветви.

Длинная побочная ветвь занимает 48 шагов программы — с адреса «L2» по «F9». Эти адреса соответствуют реальным адресам «00» — «47»). Если в этих адресах калькулятор не встретил команд В/О, С/П или БП, то счётчик шагов продолжает увеличиваться и калькулятор переходит в главную ветвь. В длинной побочной ветви с адреса «C1» начинается «тёмная зона»: коды команд, записанные в соответствующие адреса главной ветви, при переходе в режим ПРГ на индикатор не выводятся, однако в режиме счета исправно выполняются.

Графически этот процесс выглядит так (на примере МК-52):

Ветви программной памяти калькулятора МК-52

Данная недокументированная особенность не позволяла писать программы длиннее документированного объема, зато позволяла дважды избежать команд безусловного перехода на нулевой адрес (иногда по нулевому адресу ставилась команда В/О).

160-шаговый цикл перестал поддерживаться в МК-152. Чтобы программы для советских ПМК пошли на современной ЭКВМ, их придётся переделывать. Программ, использовавших эту особенность, не так много, а память программ МК-152 значительно расширена[3] по сравнению с ПМК, выпущенными в Советском Союзе.