268

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

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

История

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

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

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

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


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

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

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

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

Сейчас на Google Play много точных эмуляторов, и можно поиграться с ними (искать по ключевому слову «МК-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.

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

Ничего особенного, только ячеек не одна, а 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 минувших дней

1.2K поста7.4K подписчиков

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

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

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

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества