МК-61 и с чем его едят

Раз уж пошла такая пьянка, попробую рассказать, чем он интересен.

МК-61 и с чем его едят Мк-61, Калькулятор, Старое железо, Ностальгия, Длиннопост

История

В 1970-е годы в СССР были разработаны профессиональный программируемый калькулятор «Электроника-70» и более простой «Электроника Б3-21» (после Б идёт цифра три, а не буква «зю»!). Если 70 — это совсем другое устройство, то в 21-м уже видны отдельные черты нашего калькулятора.

В 1980 году вышел калькулятор второго поколения — «Электроника Б3-34». Девайс был тяжёлый и основательный, и впоследствии сделали более компактный МК-54, настольный МК-56, демонстрационный «Программист» (в нашей школе он был, но никто не видел его работающим). Все три полностью совместимы (только ранние Б3-34 не работали с углами в градах).

МК-61 и с чем его едят Мк-61, Калькулятор, Старое железо, Ностальгия, Длиннопост

В третьем поколении два калькулятора. В МК-61 (1984) сильно расширили систему команд при сохранении основной совместимости. МК-52 (1985) был совместим и заодно хранил программы во внутренней энергонезависимой памяти (в машинах от Б3-34 до МК-61 при выключении приходилось перенабирать программу и прогонять тесты).

МК-61 и с чем его едят Мк-61, Калькулятор, Старое железо, Ностальгия, Длиннопост

Эти калькуляторы форсировались советскими книгами и журналами. Калькулятор стоил 60–80 рублей при зарплате от 100 до 200, и был самым доступным программируемым вычислительным средством. На нём писали расчётные программы и даже небольшие игры — фанаты чертили на координатной сетке траектории космических кораблей, проходили лабиринты (благо шестнадцатеричная логика МК-61 позволяла запомнить в одной ячейке до 28 битов). Был даже мат конём и слоном (с небольшими ограничениями).


Вот рандомная программа из «Техники — молодёжи» (сложно было найти скан одновременно читаемый и с полным описанием).

МК-61 и с чем его едят Мк-61, Калькулятор, Старое железо, Ностальгия, Длиннопост

Слово ERROR (ошибка) отображалось как ЕГГОГ, и поиск недокументированных возможностей калькулятора получил прозвище «еггогология». Основными рупорами еггогологии были журналы «Техника — молодёжи» и «Наука и жизнь».

Более поздние калькуляторы такой славы не снискали. А слава семейства МК продолжалась до середины 90-х, благо они были неплохим устройством для начального обучения программированию. Ноутбук обычно на экзамен брать нельзя (да и дороги были тогда ноутбуки), а МК — можно. А если прийти пораньше и забить программу какого-то ценного вычисления — вообще песня. Из моего опыта — на экзамене обратил матрицу 3×3, правда, это заняло всю память МК.

В 2000-е годы фирма «Семико» для собственных нужд создала семейство вычислительных машин, частично совместимых с МК-61.

МК-61 и с чем его едят Мк-61, Калькулятор, Старое железо, Ностальгия, Длиннопост

Сейчас на Google Play много точных эмуляторов, и можно поиграться с ними (искать по ключевому слову «МК-61»). Обратная польская запись очень удобна для сложных расчётов, и я держу эмулятор именно для этого (на эмуляторе до этого момента ни разу не программировал).

МК-61 и с чем его едят Мк-61, Калькулятор, Старое железо, Ностальгия, Длиннопост

Технические характеристики

Быстродействие: около 3 операций/с

Система команд: автокод с обратной польской записью, имитирующий нажатия клавиш

Шагов в программе: 98 (Б3-34), 105 (МК-61)

Рабочих регистров: 4 основных, 1 дополнительный

Ячеек памяти: 14 (Б3-34), 15 (МК-61)

Несмотря на распространение, калькуляторы обладали серьёзными недостатками.

• Очень недолго работали от батареек. Нельзя перейти с розетки на батарейку и наоборот.

• Точность трансцендентных операций не отвечала разрядности памяти: 2³=8,9999984.

• Вместо «0,5» выводило «5…−01», то есть 5·10⁻¹.

• Хлипкая конструкция МК-54 и МК-61. Особенно ломались кнопка включения, разъём блока питания.

• Не было долговременной памяти (кроме МК-52). Программу в сто шагов приходилось набивать с бумаги, потом прогонять тест.

• Крайне низкое быстродействие: результатов выполнения программы приходилось ждать минуту-две.

• У Б3-34 были крайне полезные недокументированные команды КИП↑/КП↑, не сохранённые в МК-61.

• Полезность некоторых команд, добавленных в МК-61, была спорной.

• Одна и та же клавиша в разных моделях называлась по-разному, и неопытный, увидевший программу для другого калькулятора, мог запутаться.

• Система команд такова, что дальнейшее расширение памяти было крайне затруднено.

Соответствие клавиш Б3-34 и МК-54 (61, 52)

↑ = В↑

XY = ↔

ИП = П→x

П = x→П

Обычно фанаты пишут программы в предельно сокращённом виде: используют некую смесь старых и новых обозначений (↑, ИП, П, но ↔), опускают клавиши F и K, где это не критично (не Fsin, а sin). Некоторые вместо Kx=0A пишут K=A, а вместо К{x} — {}.

Я даже видел МК-61, в котором клавиши П→x и x→П были заклеены лейкопластырем и подписаны ручкой: ИП и П.

Поскольку я пишу для самых начинающих, пишу в нотации МК-61 с небольшими сокращениями, помогающими ориентироваться в простыне кнопок: вместо x→П, и вместо В↑.

Начнём?

Самый первый вопрос про наши калькуляторы — а где кнопка «=»? Нет её, нет, всё устроено немного непривычно. Чтобы сложить 123+456, надо набрать…


123 В↑ 456 +

Клавиша В↑ (читается «ввод», в дальнейшем буду сокращать как ↑) служит только разделителем: если набрать 123 и 456 без неё, получим 123456. Так что если надо сложить 123+456−789+234=24, то нажатие ввода всего одно:


123 ↑ 456 + 789 − 234 +

Если хотим узнать окружность 13-метровой цирковой арены, также никаких разделителей не надо:


Fπ 13 ×, и получаем 40,84 м.

Сначала операнды (π и 13), потом операция (×). Такая конструкция называется «обратная польская запись». Обратная — потому что операция в конце, польская — в честь поляка Яна Лукасевича. Она позволяет проводить без скобок довольно сложные вычисления. Например, 2+12 будет на калькуляторе так…


2 ↑ 12 + (на индикаторе 14).

А если вместо 12 взять 3·4 (3 ↑ 4 ×), то получим вот такую запись для 2+3·4:


2 ↑ 3 ↑ 4 × +

Теперь понятно, почему программисты со стажем любят обратную польскую запись? Она лаконична и позволяет вести вычисления «по наитию»: хочешь добавить 20 — набирай «20+», хочешь добавить 30% — набирай «1.3×», хочешь вычислить какой-то коэффициент — бери и вычисляй, старый результат будет ждать тебя в рабочих регистрах… Обычные калькуляторы могут подсунуть свинью, если забудешь о каких-то тонкостях: например, «Обычный» из Windows 7 выполнит «2+3×4=» как (2+3)·4=20, а «Инженерный» — 2+(3·4)=14.

Насколько глубоко калькулятор может выполнять такие вложенные вычисления?

2+3·(4+5)=29 он выполнит (2 ↑ 3 ↑ 4 ↑ 5 + × +), а 2+3·(4+(5·6))=104 — уже нет (2 ↑ 3 ↑ 4 ↑ 5 ↑ 6 × + × +).

То есть память на подобные вычисления имеет глубину 4, и эти регистры зовутся X, Y, Z и T.

МК-61 и с чем его едят Мк-61, Калькулятор, Старое железо, Ностальгия, Длиннопост

Ячейки памяти

Ничего особенного, только ячеек не одна, а 15. Для записи в память надо нажать две кнопки — сначала x→П, потом 5 (или какой-нибудь другой номер ячейки). Для извлечения — П→x, потом номер ячейки. Будем записывать эти команды как xП5 и Пx5. Если нажать xП, затем • (десятичную запятую), число запишется в ячейку A, и обозначать это будем как xПА (аналогично xПB, xПC, xПD, xПE).

Не забывайте, что клавиша ↑ действует как разделитель, и чтобы удвоить содержимое r7, её не надо: Пx7 2 ×.

Если у нас в регистры A, B и C загнаны коэффициенты квадратного уравнения (например, 1 xПA 1 /−/ xПB 6 /−/ xПC, то есть x²−x−6=0), можно его решить вот таким образом (на случай, когда D<0, чхаем).

ПxB Fx² ПxА ПxС × 4 × − F√ xПD  (в регистре D корень из  дискриминанта)

ПxB /−/ ПxD − ПxА 2 × xП0 ÷ (r0=2a, на экране первый корень (-b−d)/(2a)=−2)

ПxD ПxB − Пx0 ÷ (на экране второй корень (d−b)/r0=3)

Итак, мы выполнили довольно сложное вычисление, даже не обращаясь к бумаге!

Попробуем это запрограммировать

Маленький дисклеймер. Три кнопки калькулятора по-разному ведут себя, будучи введены в программу и будучи исполнены непосредственно.

• С/П — стоп/пуск. В программе — остановка, непосредственно — запуск программы.

• В/О — возврат/обнуление. В программе — выход из подпрограммы (аналог RETURN Бейсика), непосредственно — переход на адрес 00 (аналог БП 00, то есть GOTO 00).

• и ПП, но она нам в этой статье не нужна.

Переходим в режим программирования (В/О Fпрг), видим на индикаторе трёхместную ленту (пока пустую) и адрес 00. Когда мы вводим команды, адрес становится 01, 02, 03…, а лента заполняется кодами клавиш. И заодно замечаем, что шестнадцатеричные символы A, B, C, D, E выглядят как −, L, C, Г, E. Вот наша программа.

Адрес … Клавиши … Код

00 … ПxB … 6L

01 … Fx² … 12

02 … ПxA … 6−

03 … ПxC … 6C

04 … × … 12

05 … 4 … 04

06 … × … 12

07 … − … 11

08 … F√ … 21

09 … xПD … 4Г

10 … ПxB … 6L

11 … − … 11

12 … ПxA … 6−

13 … 2 … 02

14 … × … 12

15 … xП0 … 40

16 … ÷ … 13

17 … ПxB … 6L

18 … /−/ … 0L

19 … ПxD … 6Г

20 … − … 11

21 … Пx0 … 60

22 … ÷ … 13

23 … С/П … 50

24 … БП … 51

25 … 00 … 00

Ошиблись и отпечатало не тот код? Возвращаем ленту назад (ШГ←), и вводим новую команду.

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

Возвращаемся в режим автоматической работы, возвращаем исполнение на нулевую команду (Fавт B/O).


Делаем тест (x²+1,5x−1=0): 1 xПA 1.5 xПB 1 /−/ xПC С/П — через 7 секунд на индикаторе  −2 (меньший корень). Нажимаем и видим 5·10⁻¹=0,5 — больший корень.


Чем программа отличается от того, что мы набирали руками?


1. Программа возвращает не одно значение, а два. Есть несколько способов это сделать:

• держать цифры в регистрах X и Y;

• держать их в ячейках памяти;

• первым пуском вывести один корень, а вторым — второй.

Мы сделали первое, и сначала надо заполнить регистр Y (больший корень), потом X (меньший). Потому поменяли местами вычисление большего и меньшего корня.


2. После шага 9 и без того x=d, и этим мы сэкономили одну команду.


3. Программе надо остановиться, а после очередного запуска — вернуться в начало. Потому 90% программ заканчиваются кодом С/П БП 00.


Вот и всё, что я хотел сказать про МК-61. У этой программы есть один недостаток по части сервиса — если дискриминант окажется отрицательным, она вылетит с ЕГГОГ где-то в середине, и для восстановления работы придётся нажимать В/О. Можно так и оставить. А можно и решить — с ветвлением занимает шесть команд. Но это уже вне нашей обзорной статьи — так что счастливо!

IT минувших дней

1000 постов7.1K подписчиков

Добавить пост

Правила сообщества

Запрещается добавлять новости о прошлогодних новинках, а также посты, не относящиеся к тематике "ретро в ИТ".

Желательно соблюдать правила приличия.

Вы смотрите срез комментариев. Показать все
14
Автор поста оценил этот комментарий

Самый главный плюс такого калькулятора - его просили в школе на попользоваться только один раз. Потом возвращали со словами "ну его нафиг, нихрена не понятно" и больше не беспокоили.

раскрыть ветку (8)
1
DELETED
Автор поста оценил этот комментарий

А минус батарейки жрал как Крузер бензин

раскрыть ветку (6)
Автор поста оценил этот комментарий

Конечно. К сожалению.

Автор поста оценил этот комментарий

Аккумуляторы спасали. Садились ешё быстрее, чем батарейки, но зато перезаряжались.

раскрыть ветку (4)
Автор поста оценил этот комментарий

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

раскрыть ветку (3)
Автор поста оценил этот комментарий

Трёх хватит, напряжение то же. Да и не влезут в него четыре. А если снаружи, так можно просто внешний аккумулятор подключить, напряжение-то те же 5 вольт.

раскрыть ветку (2)
Автор поста оценил этот комментарий

Напряжение трёх солевых/щелочных 4,5. Напряжение трёх никелевых 3,6. К тому же порог работоспособности калькулятора достаточно высок.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Мне трёх хватало. НКГЦ-0.45 назывались.

Автор поста оценил этот комментарий

Именно! Причем, когда пытался объяснить встречал еще большое не понимание!

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку