МК-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 минувших дней

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

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

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

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

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

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

почему программисты со стажем любят обратную польскую запись?
Это называется "привычка". Так каждый человек цепляется за привычное, отказываясь от более нового и лучшего, но непривычного.

ОПН (обратная польская нотация) придумана отнюдь не для удобства человека, её фишка — упрощённая логика машины. Первое число помещается в один регистр, второе в другой, любая команда выполняется над содержимым регистров в виде f(x,y).
Объяснять долго, просто поверьте на слово: АЛУ, использующее ОПН, устроено заметно проще, чем АЛУ, интерпретирующее нормальную запись.

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

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

…А в алгебраической записи аналогом этого сцепления будет поминутное нажатие «=».

+2=

+3=

+4=

Или суммирование через ячейку памяти.

2 M+

3 M+

4 M+

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

В эргономике есть понятие «ошибка состояния» — именно ради неё рекомендуют на ручной коробке запускать двигатель, прижав сцепление. В обратной польской записи таких ошибок состояния меньше.

раскрыть ветку (12)
3
Автор поста оценил этот комментарий
Запуск двигателя с выжатым сцеплением ранее рекомендовался исключительно на морозе, чтобы не нагружать стартер ещё и проворотом холодной КПП. С распространением синтетических моторных и трансмиссионных масел, слабо густеющих на морозе, эта рекомендация утратила практический смысл, сейчас такой рекомендации нет ни в учебниках и наставлениях, ни в инструкциях автомобилей.
Да и в смысле безопасности, выжим сцепления бесполезен. При неисправности цилиндров, магистрали или вилки, выжим педали не приведёт к выключению сцепления, поэтому для безопасности много полезнее привычка шевелить рычаг. Рука с руля направо, обратным ходом налево — понятно, коробка в нейтрали, берёшься за ключ, заводишь.
раскрыть ветку (8)
2
Автор поста оценил этот комментарий

Как вариант, проверить ручку. А мне рекомендовали заводить с прижатым сцеплением. Машинально (например, когда выезжаем в большой спешке) сделать это проще, чем ручку.

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

А мне рекомендовали заводить с прижатым сцеплением.
Ну, если вы застали времена, когда ПМК были научным инструментом, а не забавной диковинкой из прошлого, так в те времена сцепление выжимать было правильно. Вы, небось, и "двойной выжим", и "перегазовки", и категорически ныне запрещённый "разгон-накат" застали?

А может, вам "рекомендовал" тот, кто всё это застал, не зная, что сейчас это не считается оптимальным.

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

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

раскрыть ветку (3)
1
Автор поста оценил этот комментарий
Ха)
Я, несмотря на молодость (мне под сорок), древней техникой перегазовки и двойного выжима владею )))

А вот разгон-накат, на практике не шибко полезен на ровных дорогах — при разгоне, движок жрёт заметно больше, чем при поддержании постоянных оборотов, так что вся экономия тех моментов, когда машина идёт на нейтралке, сжирается разгонами.
Такой способ хорош только в холмистой местности, когда можно разогнаться, спускаясь с горки и чуть помогая мотором, а потом использовать эту инерцию для подъёма в гору.
В любом случае, на современных машинах нельзя катить на нейтралке — если мотор внезапно заглохнет, машина останется без ГУРа и вакуумника, т.е., фактически, окажется неуправляема.
раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Мой возраст сходный. Но у меня первая и пока единственная машина на DSG, так что нет возможности практиковать такое. А в «мафии» у меня руль был с двумя педалями, и роль сцепления играла первая попавшаяся клавиша (Ctrl?)

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

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

Автор поста оценил этот комментарий
Не знаю про рекомендации в инструкциях, но Opel Meriva B 2010 года просто не заводился без выжатого сцепления.
раскрыть ветку (1)
1
DELETED
Автор поста оценил этот комментарий

Форд Фокус 3 не заводится, пишет на экранчике "нажать сцепление"

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

Дальше все по эльфийски!
Я реально вводил программки для МК-61, свои писал (типа вычисления X1 и X2 для квадратных уравнений), но вот прочитав ниже, вообще нифига не понял!

И да мне 42 годика...

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

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

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

• Разгон-накат — метод экономии топлива: разогнался и врубил нейтральную (а иногда и выключил мотор). На современных машинах опасен и не экономит.

• Двойной выжим используется, когда передачи плохо входят: сцепление, нейтраль, сцепление отпустил, сцепление, передача, сцепление отпустил.

• Перегазовка — слегка прижать газ во время переключения. Служит для того же и работает только на переключениях вниз.

• В игре Mafia: The City of Lost Heaven есть бонусная миссия: у спортивного «мерседеса» бак размером с аптечный пузырёк, и надо, используя меры по экономии топлива и трижды заправившись, перегнать его в точку Б.

• DSG — очень «спортивная» и в первых версиях крайне ненадёжная роботизированная коробка «Фольксвагена».

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

Спасибо за разъяснения, многое все равно не понял, так не автолюбитель, т.е. прав нет одни обязанности))).

Но в любом случае, написать так много, для разъяснений дорого стоит!

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

Строго говоря, не в регистры, а на стек

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

Я не стал называть это стеком. Ну да, это стек.

Автор поста оценил этот комментарий
Хм. Да, вы правы. Я с подобными эвм почти не встречался, вот и забылось (
Автор поста оценил этот комментарий
Ничего не проще, интуитивный интерфейс есть только у сиськи, остальное вопрос привычности. Если сразу научился RPN, потом на дурацкие скобки и равно тебя калачом не заманишь !
1
Автор поста оценил этот комментарий

Ну не знаю, я на нее перешел, как только появился МК-52. Работать оказалось намного удобнее.

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