МК61S (эмулятор Лазарева)

Эмулятор МК61 на основе кода emu145 Ф.Лазарева.
Платформа HW 1.1:

  • ЦПУ: stm32f103 ("bluepill"), 72 МГц, 20К ОЗУ, 64К флэш-память
  • Дисплей: HD44780 (4-битный интерфейс) 20 х 4 символов
  • Клавиатура: МК52
  • Накопитель: Нет

HW 1.1

Платформа HW 1.2:

  • ЦПУ: stm32f103 ("bluepill"), 72 МГц, 20К ОЗУ, 64К флэш-память
  • Дисплей: HD44780 (4-битный интерфейс) 20 х 4 символов
  • Клавиатура: МК52 + дополнительные клавиши
  • Накопитель: Нет

Официальный Гитлаб репозиторий проекта здесь.

Смотрю исходники.

А может уйти с Сорсфордж под SVN на тот же Гитлаб/Гитхаб под GIT?

Git есть и на сурсфордже, а на гитхабе у меня только портфолио

GIT, только SVN.

Можно уйти в Гитлаб, там у меня тоже несколько хоббей

Я имею в виду, что на сурсфордже есть сервисы и SVN, и Git. Калькуляторный проект лежит в SVN. Его также можно checkout к себе, потом либо продолжать с этим депо (у тебя был доступ на запись), либо создать свой.

Да, понятно. Я клонирую себе сейчас локально с Сорсфорджа SVN-ом, а потом буду собирать все у себя в Гитлабе. Если что-то заработает, либо выложу обратно в сорсфордж, либо еще что.

А под какой лицензией исходники mk61 эмулятора?

Лицензия - я даже не помню какая была. Сейчас прочел: GNU General Public License version 2.0 (GPLv2)

У меня stm32basic под лицензией LGPLv2, это одна из самых свободных после самой свободной MIT лицензией. Секция 3 LGPL 2.1 говорит:

"You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library."

, так что окончательный код MK61S может быть под GPLv2, если я правильно понимаю

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

поэтому MK61S надо делать под GPL, чтобы только сорсы :)

GPL заражает свободой произведения, включающие код под GPL («авторское лево»). LGPL требует распространять исходники только самой библиотеки, а основная программа может быть под другой лицензией.

Конечно, в работы под GPL можно включать другие работы под менее строгой LGPL. Надо лишь помнить, что авторские права не передаются. Поэтому при публикации совместного произведения требуется либо учитывать LGPL (минимум включить в дистрибутив исходники библиотеки и текст LGPL), либо индивидуально договориться с автором о другом лицензировании.

Тонны ворнингов, но, вроде, удалось смешать в кучу C++ и C:

..WSL:~/Gitlab/mk61s/mk61s_app$ make bin V=1
$TARGET_PLATFORM is [MK61S_HW_1_0]
Using ../libopencm3 path to library
arm-none-eabi-gcc -Os -std=c99 -ggdb3 -mthumb -mcpu=cortex-m3 -msoft-float -mfix-cortex-m3-ldrd -Wextra -Wshadow -Wimplicit-function-declaration -Wredundant-decls -Wmissing-prototypes -Wstrict-prototypes -fno-common -ffunction-sections -fdata-sections  -MD -Wall -Wundef -DTARGET_PLATFORM_HW_1_0 -DSERIAL_TRACES_ENABLED -DHD44780_2004_LCD -DTARGET_CALC -DSTM32F1 -I../libopencm3/include  -o ../src/utility.o -c ../src/utility.c
...
arm-none-eabi-objcopy -Obinary mk61s_app.elf mk61s_app.bin

Бинарник сбилдился:

..WSL:~/Gitlab/mk61s/mk61s_app$ ls -l
total 1192
-rw-r--r-- 1 ...   2535 Sep 28 23:26 Makefile
-rw-r--r-- 1 ...     26 Sep 28 20:50 README.md
-rwxr-xr-x 1 ...  11772 Sep 28 23:25 mk61s_app.bin
-rw-r--r-- 1 ...   1603 Sep 28 23:18 mk61s_app.cpp
-rw-r--r-- 1 ...   3436 Sep 28 23:25 mk61s_app.d
-rwxr-xr-x 1 ... 340808 Sep 28 23:25 mk61s_app.elf
-rw-r--r-- 1 ... 414531 Sep 28 23:25 mk61s_app.map
-rw-r--r-- 1 ... 172616 Sep 28 23:25 mk61s_app.o
..WSL:~/Gitlab/mk61s/mk61s_app$

Терминал живой:

MK61 STM32 EDITION
SW 0.3.0
LCD tester HW 1.0
Ok

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

эмулятор, похоже, живой:
mk61sterminal

Теперь надо добавить вызов клавиатуры

Внушает оптимизм :) Эмулятор в консоли был работающий, интерфейс с консолью я отделил по максимуму, так что проблем перетащить само ядро не должно возникнуть.

Может, потом подзачищу код - уберу Commander, MK72 и т.п.

В DM41X полноэкранный редактор — графическая оболочка над эмулятором. Выдаваемая эмулятором информация о памяти программ расшифровывается на 4 строки экрана, а вводимые с клавиатуры команды передаются эмулятору. Есть не только клавиши вверх/вниз, отсутствовавшие на старой железке, но и комбинации клавиш для перехода на первую и последнюю строки программы.

При этом ощущение совершенно другое, удобнее смотреть и редактировать программу. Но одновременно и 100% совместимость со старым ПМК, так как в конечном итоге всё проходит через эмулятор.

Если делать римейк МК-61, как state of art, режим F ПРГ можно приблизить к такому же в МК-161. С таблицей декомпилятора и отображением мнемоники, на русском или английском языках. К каждому шагу можно отдельно (вне памяти эмулятора) хранить дополнительный байт, как в MKP — что хранится в ячейке, адрес или код операции. Это позволит реализовать вставку и удаление шага / команды.

Да, согласен. Ресурсов "синей таблетки" пока хватает, похоже, в крайнем случае, уйдем на RET6 чип с 512КБ флэш-памяти.
Типа такого варианта (обратный слэш кода 5С на шаге 01 почему-то онлайн генератор ЖКИ не смог отрисовать):
PRG mode

ЖКИ экраны 20x4, что находятся у меня, с латинским знакогенератором. Вроде, есть экраны с кириллицей в прошивке, у меня таких никогда не было.
Но у HD44780 контроллера дисплея есть память на 8 символов пользователя.
Вопрос - можно ли организовать интерфейс МК61S таким образом, что в каждый момент времени на экране будет не больше 8 русскоязычных символов? Тогда, теоретически, можно на лету подгружать русские символы.

P.S. Второй скриншот в начале форума я удалил - там баги были :)

P.P.S Производитель МК161 не будет против слизывания дизайна?

Можно и так. В этом случае эмулятору придётся скармливать ШГ→ , ШГ← для считывания четвёртого шага на виртуальный индикатор. Ну или обращаться к кольцу в обход эмулятора.

Проще, наверное, оставить классический вывод 3 шагов, посвятив каждому из них отдельную строку с адресом, кодом и мнемоникой. На четвёртой же выводить статусную информацию. Нажатые клавиши F, K, ИП и т.д. Примерно так и в МК-161 ввод устроен, только там шагов в два раза больше отображается. По правилам ЭКВМ новая команда вводится в подчёркнутую (нижнюю) ячейку памяти программ. На этом снимке только что введена команда БП 59, и ЭКВМ готова вводить новую команду в пустую ячейку 0098.

F ПРГ

За Новосибирск говорить сложно. В первые годы они ругали копирайт и выступали за повторное использование своих, да и вообще всех наработок мира. Значительная часть МК-161 сама слямжена с советских ПМК. Ограничения касались лишь кода прошивки ЭКВМ, который здесь не при чём. Тот же eMKatic полностью копирует дизайн МК-161. Что сейчас у них на уме, непредсказуемо, так как с сообществом разработчики общаться перестали. Если начнутся претензии, разработать новый дизайн труда не составит.

3 строки + статус строка мне нравится больше. Насчет кнопок - можно либо придумать свою комбинацию кнопок "что-то" + ШГ→ скачет на 3 шага. Либо даже добавить кнопки дополнительные

Есть такое подозрение, что можно уложиться русскими командами в 8 пользовательских знаков HD44780:

ВП      П
Г       Г
ИПРГ    И
СЧ      Ч
БП      Б 
ШГ      Ш

Даже с буквой Ш, которая не команда языка, всего 6 знаков надо

ИПРГ нет в эмуляторе, зато ИП есть. Также есть Д в ГРД. По хорошему ещё потребуются ×, ÷, В↑, Fπ, КГ→М, ШГ←, F xʸ, F x², F 10ˣ, F ⟳, F x≥0, F x≠0, F √ , ↔ и K∧, K∨, K⊕. Неплохо было бы сделать З для КЗН.

Но одновременно этих символов на экране штучки 3-4, если не увлекаться колонкой ASCII. Или можно сделать творческий микс из русской и латинской мнемоник.

ПГИЧБШ + Д наверное, будет достаточно на первый раз. То есть пока 7 символов. Остальное комбинацией с латиницей и цифрами, например, 3:

K3H
ГPД
Но одновременно этих символов на экране штучки 3-4, если не увлекаться колонкой ASCII.

А зачем колонка ASCII для МК61? В ее языке же нет возможности выводить строки.

Эти символы

×, ÷, В↑, Fπ, КГ→ М, F xʸ, F x², F 10ˣ, F ⟳, F x≥0, F x≠0, F √ , ↔ и K∧, K∨, K⊕

можно оставить для MK61S HW2.0 (у меня есть два экрана от DM42, 400x200 пикселей, суперконтрастный, но его сложнее подключать).

Можно и на будущее оставить, конечно. Но железо 1.0 их вполне потянет, так как одновременно на экране будет всего чуть-чуть экзотических символов. Даже если в режиме F АВТ сделать статусную строку, эхо введённой команды.

Кстати, здесь есть выбор. Можно либо отображать все 4 регистра стека, либо RX, RY и две строки статуса.

Ещё в ЭКВМ есть режим ввода байтов для прямого редактирования памяти программ. Он может пригодиться, если в 16-страничном режиме команды 4F и 6F начнут обеспечивать доступ к 16-ому регистру.

Даже интереснее оставаться в рамках железа 1.X ("синяя таблетка и экран 20x4) - спортивный азарт выдать все, что можно, из нерусифицированного и дешевого железа.

Железо 1.1 планируется тоже самое как сейчас 1.0, но с автономной клавиатурой из тактильных кнопок.

С раскладкой клавиатуры ориентироваться под что - сразу под МК52? Или нечто промежуточное между МК61 и чем?

Раскладка — самое сложное. В своих проектах я сейчас ориентируюсь на горизонтальную клавиатуру МК-152. На клавишу ВЫХОД можно повестить меню, зависящее от проекта. Клавиши выбора (стрелочки) можно задействовать не только в нём.

В римейке МК-61 клавиша Р не используется. Её можно назначить на борьбу с Тьмой, а дальше как пойдёт.

Да, это идея. У меня есть дохлый 52й - возьму морду от него.

Stay tuned

Ввод цифр 0-9 заработал:
ввод цифрцифры

Нам наверняка захочется видеть на индикаторе EГГ0Г, а не EDD0D. Кто-то будет без ума от 3ГГ0Г’ов и прочих извращений.

Если в режиме программирования можно использовать шестнадцатеричную систему (в том числе для адресов A0-A4), то для логических операций в автоматическом режиме вместо неё будет старое доброе -, L, C, Г, E. Для борьбы с Тьмой и выхода из зависаний «пустышки» можно предусмотреть специальную кнопку безопасности, на ходу «лечащую» кольцо от фальшивых меток и перезагружающую процессоры.

Также можно предусмотреть работу в трёх режимах — Б3-34, МК-61 и новый на 112 шагов, 16 регистров. Программы во флэшке можно снабдить тэгом, для какого из этих режимов они разработаны.

Сделал эксперимент с 8ю символами:

enum CustomCharacterSetA {
    CharP,              /* П */
    CharG,              /* Г */
    CharI,              /* И */
    CharCH,             /* Ч */
    CharB,              /* Б */
    CharSH,             /* Ш */
    CharD,              /* Д */
    CharPower2,         /* ^2 */
    TotalCharsSet
};

PRG modeAVT mode

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

Индикатор как родной. Некоторые нужные символы, насколько я понял, в знакогенераторе уже есть.

Обновил список спецсимволов выше, стрелка влево тоже нужна. Но ↔ можно по бедности сделать из ←→.

На вики есть глиф квадрата, да и других символов. Правда, там двоичная кодировка по столбцам, а не строкам.

Как я понял, у меня европейская кодовая таблица: (ROM Code: A00).
Надо проверить, та ли она. Но спецсимволов там хватает, можно, наверное, что-то позабирать оттуда.

Да, глиф квадрата у меня дурацкий. Я символы этой онлайн-тулзой рисовал, квадрат лучше не придумал

По ссылке A00 японский знакогенератор, A02 — европейский.

В европейском побольше интересных символов, но и в японском есть несколько. Правда, коды этих символов не совпадают.

Да, я перепутал - у меня как раз А00, японский вариант:
code 1code 2code 3

В общем, для использования эти символы и 8 своих символов на одном экране (нельзя загрузить другие символы в тот же экран - старые символы "поломаются")

Перед обновлением индикатора из теневого массива (K SCR) можно сбрасывать счётчик своих символов. Перед выводом символа из русского диапазона добавлять его глиф в 8 своих символов, если такого там ещё нет, и заменять для HD44780 код этого символа на код глифа.

Должно помочь, так как больше 8 своих символов одновременно на экране не будет. Такой «кэш 8 из 25» для имитации 25 глифов, когда железка поддерживает лишь 8. В прошивке у каждого русского символа будет свой постоянный код, но HD44780 знать эти коды не будет — только те, которые русским символам временно назначены при последнем обновлении индикатора.

Реально новых символов даже меньше 25, так как в японской раскладке есть минимум 6 заводских символов, которые можно использовать вместо своих глифов: ÷, Fπ, КГ→М, ШГ←, F 10ˣ, F √.

Возможно, так даже получится. Но это можно потом, пока надо делать основной функционал.

Впечатляет, прототип МК61 gold "в железе" работает!

матрицу клавиатуры (распаянную или, как я собираюсь, от настоящего МК52) и написать драйвер опроса клавиш. И все - можно начинать рисовать схему MK61 Gold :)

MK61S официально выпущен в мир: Гитлаб проекта.

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

Уверенности, что проект будет когда-нибудь доведён до этого этапа, пока нет. Поэтому и мой респект Новосибирску и Swiss Micro, что их проекты — не просто баловство «посмотрите, что я могу».

Большинство критиков МК-161, увы, выпустить серийную модель не могут. Обычное ведро с крабами. Надеюсь, этот проект однажды доведут до серийного продукта. И тогда будет, с чем МК-161 сравнивать.

Отлично, теперь можно подумать о каком-то "железе", возможно малосерийном с алиэкспресса, чтобы сделать калькулятор. Готов поучаствовать, если нужно что-то заказать для опытных образцов.

Отвечу тут сразу на оба комментария - этот и уважаемого AtH выше.

Ath:

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

Уверенности, что проект будет
когда-нибудь доведён до этого этапа, пока
нет. Поэтому и мой респект Новосибирску и
Swiss Micro, что их проекты — не просто
баловство «посмотрите, что я могу».

Большинство критиков МК-161, увы, выпустить
серийную модель не могут. Обычное ведро с
крабами. Надеюсь, этот проект однажды
доведут до серийного продукта. И тогда
будет, с чем МК-161 сравнивать.

Исходники вполне уже тянут на "хэлло ворлд". Для этого и выпущен в мир - мало ли, кто-то захочет присоединиться. Скорее всего, ни до чего уровня МК-161 или SwissMicros не дорастет, но если не пробовать, то точно не получится :)

st:

Отлично, теперь можно подумать о каком-то "железе", возможно малосерийном с алиэкспресса, чтобы сделать калькулятор. Готов поучаствовать, если нужно что-то заказать для опытных образцов.

Пока roadmap железа такой:

  1. Нынешняя плата от stm32basic с PS/2 клавиатурой: HW 1.0
  2. Такая же плата, но подпаянная к клавиатуре от MK52: HW 1.1

Схема железа HW 1.x стоит копейки - в сумме, наверное, евро 10 с алиэкспресс.

А дальше под вопросом. Для stm32basic-а на более мощном чипе stm32 (64КБ ОЗУ и 512 КБ флэш) я почти развел печатную плату с целью заказать пробную серию из 5 плат где-нибудь в Китае. Переделать эту схему под МК61S будет не очень сложно.
PCB1PCB 2

И плату, и корпус неплохо бы заказать. Возможно, есть какие-то готовые полуфабрикаты на али. Может быть есть какие-то готовые модели, которые можно перепрограммировать на уровне прошивки и засунуть туда нужную.

Готовых моделей, которые можно перешить самому, на ум приходят только три:

  • DM42 и HP34S. Обе модели под 150$, это неинтересно.
  • МК161. Еще дороже, чем первые две, вопрос бутлоадера и возможности сторонней прошивки все еще открыт, при этом медленнее, чем разрабатываемая МК61S.

Полуфабрикатов я не встречал вообще, разве что DIY калькуляторы с али.

Я пока думаю о промежуточном варианте - печатную плату развести и заказать, а корпус сделать на 3Д принтере. Модель корпуса тоже выложить в Thingverse.

От МК-161 можно взять корпус, аккумулятор, клавиатуру и индикатор. При этом основную плату заменить на более мощную. Жаль, что по деньгам такой проект не самый оптимальный.

Также производство можно поднять самому или передать какой-либо уже существующей фирме, в Москве или Ленинграде. Можно и Новосибирск попросить. Жаль лишь, что новосибирский «патриотизм» на практике означает дурное отношение к соотечественникам и коллегам.

Корпус МК161 в "Чип и Дипе" за 500 рублей продается.
Но если честно, второй "мультиметр" МК161-го мне лично не хочется. Хочу плоский корпус, в толщину экрана 20x4 плюс печатная плата

1. В МК-161 хорош не сам корпус, а клавиатура, индикатор и аккумулятор. Они отечественные. И даже если клавиши хотелось бы не голые, а с толкателями, их раскладка близка проекту. Индикатор и аккумулятор выбраны так, чтобы поддерживать отечественного производителя.

2. Тонкий корпус хотелось бы. Но это — уровень больших корпораций вроде Apple и HP. Если мы хотим цену готового продукта держать скромной (10-20 т.р.), особых хотелок по поводу корпуса удовлетворить не получится.

Или, опять же, бросать отечественную «железную» компоненту (тем более, что есть риск, что выжившее при Путине производство окажется таким же фашистским и русофобским, как сами знаете кто) и договариваться со Swiss Micros или Китаем.

Не надо ничего внешнего брать от МК-161. Это пример, как не надо проектировать калькуляторы.

Тем не менее, МК-161 выпускается. А критики — классические путинские крабы в ведре. Сами ничего за 20 лет не выпустили и тех, кто выпускает, стараются прищучить, заставить тоже сидеть на диване и смириться с разрушением отечественного производства.

Я прошу не переходить на аргументы уровня "Запорожец тоже ездит".

МК-161 — лучший отечественный ПМК. Потому, что других, к сожалению, здесь не выпускается. На мировом рынке у него есть достоинства (высокое быстродействие, совместимость с МК-61, низкая стоимость носителей УЗВМК-1, внешние интерфейсы, возможность объединения в сеть) и недостатки (брутальный стиль, высокая цена).

Тему на обсуждение автопрома прошу не менять. Сам я не автовладелец. Даже если вы захотите, подобно некоторым соотечественникам, сменить тему на сиськи-пиписьки, это будет более приемлемо — в интимных отношениях гомо сапиенс я разбираюсь лучше, чем в ваших Запорожцах и Мерседесах.

...при этом медленнее, чем разрабатываемая МК61S.

Это, кстати, под большим вопросом. Пока эмулятор, запущенный в stm32f103 (72 МГц), работает ощутимо медленно.

Я прав, что эмулятор Лазарева в том виде как он сейчас есть, ни в чем, кроме как на PC (в консоли или в бразуере) не запускался?

Доделаю парсинг клавиатуры, запущу 8 ферзей или "счастливые билеты", для проверки.

Эмулятор Лазарева очень медленный. Возможно, его можно ускорить, переписав на ассемблере — но потеряется кросс-платформенность.

МК-61+ (голд, S) не выйдет быстрее МК-161, но может оказаться быстрее МК-61. Скорость работы МК-161 достойна уважения.

Если вдруг окажется медленнее, надо будет уходить на другой чип, жертвовать кросс-платформенностью не хочется

При разработке железа, особенно с учётом будущего серийного производства, предлагаю учитывать возможный порт Каллисто на него. На этой стадии, когда будет работающее железо, и мне будет интересно подключиться к проекту.

Выпускать сильно разные модели ПМК мы вряд ли потянем. У Каллисто требования — алфавитная клавиатура. Клавиатура МК-161/152 (38 клавиш) это самый минимум. Лучше добавить несколько клавиш для знаков пунктуации в русском режиме. Также неплохо, если экран будет графический и не хуже экрана МК-161, а ПЗУ/флэш-памяти хватит для разумного подмножества Юникода. Внешние интерфейсы лучше не сокращать, а добавлять. Тачскрин для меня норм, удешевит устройство и решит проблему клавиатуры.

Каллисто будет включать ограниченный симулятор ЭКВМ. После избавления от дурного влияния Гарварда можно будет писать переносимый код ПМК средствами Каллисто — так, как на Форте делают вставки на ассемблере, где важно быстродействие. Быстродействие повысится за счёт реализации шитого кода (NEXT, CALL, RETURN, EXECUTE) на уровне команд ПМК, а не поверх них. Другими словами, программы из справочников Дьяконова, Цветкова, Трохименко можно будет включать в каллистянские приложения с минимумом изменений, как слова низкого уровня. Давать этим программам имена, объединять в библиотеки и строить из них более сложные приложения.

лучше сразу ориентироваться на stm32basic HW 2.0:
stm32f103ret6: 72 МГц, 64К ОЗУ, 512К флэш; 320x240 цветной экран, qwerty клавиатура.
Вот этот комплект обойдется примерно в 25 евро с алиэкспресса (плата stm32 позади экрана):
stm32basic HW 2.0

Такой комплект дёшев, но сильно крупнее МК-161. Это уже ноутбук, а не ПМК. Клавиатура должна быть сильно меньше. Идеал это форм-фактор айфона с тактильными клавишами. Которые приложение может убрать, если запросит полноэкранный вывод.

При этом можно вывести на весь экран графики и двигать их пальцами. Для внешней клавиатуры можно предусмотреть разъём или блутус, эта роскошь уже для стационара.

320×240 в цвете это хорошо. Детям нравится баловаться с графикой.

Он меньше МК161 :D - ширина клавиатуры 85 мм.
Могу сфотографировать завтра рядом с МК61 для мастшаба.

Если двигаться в сторону тачскрина с форм-фактором айфона - что мешает Каллисто портировать в iOS или Андроид?

Да, фотография с МК-61 поможет.

Смысл Каллисто — вывести отечественную индустрию из тупика, в который её загнал захват производительных сил воровской бандой Путина. Советские технологии, да и всю нашу страну разграбили и добивают жадные тупые казнокрады с отрицательной креативностью и религиозной претензией на эксклюзивное обладание единым источником всего творчества в России.

Поэтому и ориентация на отечественные технологии, а в перспективе и на отечественные комплектующие. Строить русский уровень поверх американского задачу не решит. Здесь и вопрос надёжности, и громадную долю нашего никакого финансирования забирает себе Калифорния — в том числе и от разработчиков $100 в год поверх $500 стоимости айфона.

Можно временно использовать айфон, как макет. Но на этом этапе к проекту присоединиться смогут далеко не все, в том числе из-за высокой стоимости макбуков — где запускается Xcode, «бесплатная» среда разработки. Отдельная дешёвая железка с возможностью метакомпиляции на борту решает большинство вопросов и возвращает творческие способности в руки самих людей, хотя в конечном итоге её лучше перевести на отечественные комплектующие.

stm32basic HW 2.0 vs MK61:
stm32basic HW 2.0 vs MK61

Очстранно. Индикатор хорош по размеру. Кнопки в голове не укладываются. Сразу много вопросов возникает. Они такие крохотные? Сколько их? Тоже без толкателей, как на МК-161? Это стандартная клавиатура или можно менять количество и расположение клавиш?

Для Каллисто русский язык нужен также, как и латинский. Есть несколько спецсимволов, унаследованных от ПМК, например ↔ и √. Отдельный ряд цифр, разумеется, поможет. Хотя есть сомнения, возможно ли его сохранить в русском режиме. В целом можно начинать с этим работать. Хотя надписей у клавиш будет много. Для экономии и без того скромной площади какие-то из них хотелось бы гравировать прямо на толкателях.

Клавиатура из готовых, для модульного компьютера M5STACK 6 евро на али.

Кнопки без толкателей, обычные тактильные кнопки, чуть меньше тех, что в МК161. Теоретически поверх можно положить мембранную клавиатуру, как в МК152, соответственно нарисовать свою раскладку.

Драйвер дисплея у меня полностью отлажен и работает с Basic в stm32basic, до этой клавиатуры еще руки не дошли. Прошивку клавиатуры можно писать свою (ардуина), если нужен какой-то другой протокол.

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

Из бюджетного и доступного, думаю, для Каллисто вряд ли найти платформу мощнее по такой цене.

Понятно. Хорошо, буду учитывать параметры такой комплектации. В ближайших планах вынос драйвера клавиатуры с уровня ЯМК на уровень симулятора ЭКВМ. То есть интеграция в Каллисто этой или другой клавиатуры будет, как простая замена драйвера в виртуальной машине. Без изменения исходного кода транслятора.

Чтобы Каллисто можно было разрабатывать на самой железке, есть требования по памяти. Исходник Каллисто Классик занимает 148 кБ. Самокомпилирующееся ядро может занять раза в три больше максимум. Если мы переходим на Юникод, это ещё в два раза увеличит исходник. Итого хотя бы 512 кБ, а лучше мегабайт — в идеале прямо в ОЗУ, но можно считывать с электронного диска блоками по 3Кб.

В ОЗУ должен быть уже откомпилированный код транслятора, причём дважды. Тот, который компилирует и тот, который компилируется. На МК-161 это 14096 байт (память программ + байтовые регистры) + 8000 байт (тысяча десятичных регистров). С тройным запасом получаем 130Кб на обе копии. К этому надо прибавить симулятор ЭКВМ и BIOS, тоже 64-128Кб.

Итого примерно мегабайт-полтора оперативки позволит сделать самокомпилирующееся ядро. Если сильно экономить и читать исходник блоками, то даже 256Кб может хватить. Флэш-память лучше несколько мегабайт минимум — хранить разные версии ядра, редактор и другие программы с исходным текстом.

Также нужна память для шрифтов Юникода. На растровый символ уходит примерно 8 байт шрифта 0, 20 байт шрифта 2 и 60 байт шрифта 3. Итого 88 байт на символ, 22 Кб на страницу из 256 символов. Если не извращаться с кэшем знакогенератора, то в 256Кб можно уложить 10-12 страниц. Для начала должно хватить и двух-трёх страниц.

Конечно, возможности подключать внешнюю клавиатуру и дисплей сделают разработку системы на борту куда комфортней. Это не обязательно встраивать в сам ПМК, можно предусмотреть стационарную док-станцию.

Edit. Так что 64К ОЗУ и 512К флэш — не роскошь. Но если не злоупотреблять Юникодом и экономно расходовать память, можно попробовать в эти ограничения уложиться.

С такими требованиями к железу для разработки "на борту" проще сразу брать Raspberry Pi zero с теми же экраном и клавиатурой как на фото выше, будет ненамного дороже.

Но это все сильно в сторону от МК61S

Посмотрим, как там по быстродействию. Может, малинка и для ЭЛ (эмулятора Лазарева) будет лучшим решением.

На текущем этапе надо довести Каллисто до кроссплатформенности и метакомпиляции, на чём угодно. Тогда и будут ясны точные требования к ОЗУ, а не грубая оценка сверху. Релиз же хочется видеть на голом железе, а не поверх Линукса.

Малинка может стоять, например, в док-станции ПМК. Такую док-станцию с USB-клавиатурой и HDMI можно сделать даже для МК-161, пользуясь протоколом внешнего доступа.

Медленный, три года назад назад Алексей digitalinvitro при моей минимальной поддержке оптимизировал программу для MSP430, но выжать удалось немного. Ветка на форуме. Ты ведь и сам участвовал, видимо забыл уже.

Вижу, есть трудности с разводкой обвязки процессора.

Можно спокойно уменьшить толщину сигнальных дорожек и допустимый зазор между ними до 0,3/0,2 мм, это заведомо можно сделать на любом заводе. Диаметр пятачка/отверстия переходов можно 1,0/0,4 мм.

Мне месяца полтора назад в кустарных условиях удалось изготовить двустороннюю плату под микросхему в TQFP-48:

Толщина дорожек 0,3 мм, шаг выводов - 0,5 м. Пятачки переходов увеличены до 1,15мм, иначе даже Ф0,4 сверлом трудно просверлить нормально - рассогласование по сторонам у меня 0,15-0,2мм.

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

Устройство работало :)

Вижу, есть трудности с разводкой обвязки процессора.

Не то слово :)

Поэтому, если вдруг дело дойдет до платы МК61S, сделать ее сообща максимально просто и качественно

Я посмотрел на гитхабе, там только кикадовский проект под синюю таблетку. А ты можешь файлы ретрокомпьютера с начатой печаткой мне на почту выслать?

Привет,
выслал на почту

Файлы пришли, всё открывается.

Тест кв.корня из 687,43 на MK61S и реальной МК61:
mk61smk61

В DM41X есть клавиша DISP. Она переключает экран с отображения всего стека на отображение части стека — и справочной информации в служебных строках. При этом переключение незаметно для эмулятора. То есть можно посмотреть дополнительную информацию прямо во время ввода числа, и продолжить его вводить.

Также в DM41X выбрали отказаться от подписи регистров стека X, Y, Z и T, так как знающие обратную польскую запись и так это знают. Другим же надо чуть-чуть подучиться, перед использованием ПМК. В МК-161 регистры подписаны.

В DM42 буквы стека отображаются, но можно потом добавить отключение, примерно как в DM41X.

Мне приятно смотреть на XYZT в МК-161. От надписи можно отказаться ради количества выводимых знаков, но в эмуляторе Лазарева число значащих цифр фиксировано.

С другой стороны, место справа от стека (не используется в DM41X) можно использовать для индикации Р-ГРД-Г, режима счёта по программе, нажатой префиксной клавиши и т.п.

Первые баги.
Пробую программу:

01 05
02 03
03 С/П

Результат работы (с "ручными комментариями после #):

MK61 STM32 Edition
FW:0.3.4
MK61S HW 1.0
mk61s:[ 0,           ]
PS2 code: 110 (F PRG)                 # F ПРГ
mk61s:[          , 00]
PS2 code: 53; key_1:7, key_2:1        # 5
mk61s:[ 05       , 01]
PS2 code: 51; key_1:5, key_2:1        # 3
mk61s:[ 03 05    , 02]
PS2 code: 115; key_1:2, key_2:9       # С/П
mk61s:[ 50 03 05 , 03]
PS2 code: 109 (F AUT)                 # F АВТ
mk61s:[ 0,           ]
PS2 code: 118; key_1:4, key_2:9       # В/О
mk61s:[ 0,           ]
PS2 code: 115; key_1:2, key_2:9       # С/П
mk61s:[ 0        ,   ]

На экране:

[ 0        ,   ]

То есть команда С/П в режиме ПРГ ввелась в память программ правильно - с кодом 50. После возвращения в режим АВТ команда В/O тоже, вроде, правильно сработала. А вот следующая за ней С/П выдала пустой экран с запятой, оставшейся после режима ПРГ.

Версия 0.3.5 MK61S работает. "Короткие" счастливые билеты:

   00    01    02    03    04    05    06    07    08    09 
00 ИП8   П0    ИП0   ИП1   +     ИП2   +     ИП3   -     ИП4   
10 -     ИП5   -     Fx=0  19    ИП7   1     +     П7    FL0   
20 03    С/П

отработали за 15 секунд (прошивка с оптимизацией компиляции по размеру: -Os).

Оригинальный МК61 работает около 40 секунд, т.е. MK61S быстрее оригинала примерно в 2.6 раза. Как-то негусто.

Попробую с флагом оптимизации -O2.

Можно даже встроить замедление, для аутентичной скорости. В DM41X такой режим slow есть.

Нормального мало, надежда была хотя бы раз в 10 быстрее. Смысла в таком эмуляторе

На вскидку:
1. Удобное хранение программ и связь с компьютером.
2. Декомпилятор, вставка и удаление команд, ввод шестнадцатеричных КОПов.
3. Антитьма и антипустышка для еггогологии. (Кнопка для приведения зависшего ПМК в чувство.)
4. Возможность просматривать/редактировать кольцо (если будет реализована), дешифровывать/генерировать «сверхчисла» и узнать чуть больше о ПМК.
5. Шестнадцатый регистр и 112 шагов, если добавить ещё одну страницу в кольцо.
6. Хоть в 2-3 раза, но быстрее.
7. Советские ПМК выходят из строя, а МК-161 позволить себе иметь может не каждый.
8. В отличии от ЭКВМ, полная совместимость.
9. Долгожданный проект. Его всё равно кому-то придётся делать, можно сделать раньше и побыстрее развить сцену ПМК.
10. На такой ПМК есть спрос.
11. Опыт его разработки и выпуска пригодится при создании прекрасного ПМК Будущего.
12. Просмотр и очистка стека возвратов.

По поводу смысла - в целом да, смысла в такой цифровой ожившей копии больше, чем в симуляторах типа DM42 и МК161.

По поводу списка - 1), 2) 4), 5) еще сильно далеки от реализации.

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

Надо "короткие" счастливые билеты захардкодить, чтобы по нажатию клавиши грузились из Си-шной структуры. Удобно для оптимизации быстродействия, чем руками набивать каждый раз

googletest, который у меня основной, видимо, будет тяжеловат, а вот Catch должен подойти, хотя он с IDE не интегрируется.

Виталий, ты не посмотрел дискуссию с Алексеем по ссылке выше? Там ровно те же проблемы были, решались выкидыванием "лишнего" и вводом предвычисленных таблиц. Исходники Алексей влил на сурсфордж.

Да, мы с Алексеем общаемся уже на эту тему. Его исходники я в Гитлаб тоже залил.

У него на msp430 "короткие" билеты дали 17 секунд, почти сравнимо с более быстрым stm32. Надо его оптимизацию сюда повносить.

А то такие циклы на каждый тик выглядят грустно:

    for (int count = 1; count <= 560; count++)
    {
        for (i = 0; i < 42; i++)
        {
            Tick();
...

Именно так, по 560 циклов на выполнение одного такта эмулятора - это тихий ужас. И есть подозрение, что проблема не в эмуляторе, а в прошивке и архитектуре МК61.

Проблема в том, что никто ещё не сел за стол и не расписал алгоритмически ни одну из 256 команд. И даже ни одна из 128 синхрокоманд не записана в виде алгоритма, насколько я помню.

Уже 8 лет прошло, как опубликован микрокод. Но на разных языках (Си, C++, JavaScript) всё до сих пор эмулируется потактово, на уровне 68 микрокоманд. Прогресс только в мегагерцах у зарубежных процессоров, на которых идёт эмуляция.

Код из mk61msp портировался. Новый результат "коротких" билетов с флагом -O2 - 8.5 секунд.
Итого: в 4.7 раза быстрее оригинала

И еще splash-screen:
Splash

Заставка очень к месту, но мне кажется, что каноичнее имитировать рубленый шрифт (ариал) МК 61 :) Как на оригинале

Шрифт заставки сейчас мне тоже не нравится, но тут проблема: количество уникальных глифов, из которых рисуется жирный шрифт, может быть не больше 8. Поэтому приветствуются варианты дизайнов, если получится что-то более лучшее :)

-march=cortex-m3 -O2 -pipe

а лучше

-march=cortex-m3 -O3 -pipe

-О3 на билетах даёт ~40% прирост скорости по сравнению с -О2.
-Оs так и не нашёл, что означает.

-Оs вроде дает самый маленький бинарник.

Флаги да, это потом тоже в планах, но пока надо из кода выжать все что можно

А для каких stm32 это опция будет работать? Я правильно понимаю что -pipe оптимизация по конвейеру stm32? Действительно у stm32 есть зависимость от порядка следования команд?

Я так понял флаг -pipe просто ускоряет компиляцию.

-О3 на билетах даёт ~40% прирост скорости по сравнению с -О2.
-Оs так и не нашёл, что означает.

Проверил сейчас последний код из Гитлаба, размеры бинарника при флагах O2 и O3:

-O2 -> mk61s_app.bin: 22148
-O3 -> mk61s_app.bin: 38512

При этом на быстродействии в "коротких" счастливых билетах почти не сказывается.

Добавил два UART принта - один, когда нажата клавиша C/П, а второй - когда режим работы по программе заканчивается (код в Гитлабе).

Терминал в Arduino IDE умеет подставлять штампы времени, что есть удобно для измерений.
Ниже размер бинарника прошивки при флагах -Os, -O2, -O3 и время работы "коротких" Счастливых билетов, соответственно. Измерения делал два раза - результат стабильный:

-Os
mk61s_app.bin: 23788 bytes

23:13:06.809 -> S/P pressed	
23:13:15.169 -> PRG finished

Total: 8.4 sec

23:16:30.712 -> S/P pressed	
23:16:39.106 -> PRG finished	

Total: 8.4 sec

-O2
mk61s_app.bin: 24736 bytes

23:30:24.696 -> S/P pressed	
23:30:33.097 -> PRG finished	

Total: 8.4 sec

23:31:29.104 -> S/P pressed	
23:31:37.513 -> PRG finished	

Total: 8.4 sec

-O3
mk61s_app.bin: 41564 bytes

23:36:36.972 -> S/P pressed	
23:36:45.117 -> PRG finished	

Total: 8.1 sec

23:38:17.120 -> S/P pressed	
23:38:25.267 -> PRG finished	

Total: 8.1 sec

Итого:
Прошивка -03 больше прошивки -Os в 1.75 раз, но при этом быстрее всего в 1.04 раза. И, соответственно, быстрее оригинала в 4.9 раза.

MK61S HW 1.1:
MK61S HW 1.1

В общем, принято решение, куда двигаться с версией HW 1.1 - это будет замена "материнской платы" МК52, с экраном 16х2. В идеале можно купить сломанный МК52, выкинуть потроха, оставив клавиатуру (там, к сожалению, понадобится небольшая пайка, так как шлейф клавиатуры припаян).

Не хочешь попробовать корпус от МК61? МК52 жалко в том плане, что у него доп.возможности, отсутствующие в эмуляторе. Или надо будет симулировать переключатель "Д-П" и кнопки "||" "А|"

Про корпус от МК61 думал, но есть несколько моментов:
1. ЖКИ дисплей, даже напильник не поможет. Других дешевых алфавитно-цифровых дисплеев нет на горизонте:
дисплей

2. У меня есть два сломанных МК52, но нет сломанного МК61, а есть в коллекционном состоянии, рабочий. Под нож не буду.

3. Клавиатуры МК61 не хватит для дополнительных операций работы с SD-карточкой, в МК52 можно задействовать несколько.

А, в целом, согласен, раз у нас есть цифровая копия МК61, а не МК52, то и в корпус МК61 было бы лучше. Вопрос 1) надо поизучать, вдруг найдется OLED дисплей графический подходящий, тогда было бы аутентично - светящиеся цифры сквозь зеленое стекло МК61.

Вопрос 2) - ни у кого нет сломанной МК61? Я бы взял, с целью трансплантации.

P.S. А Ф.Лазарев не занимался реверс-инжинирингом чипов МК52?

Тогда уж МК-52S. :-)

А две дополнительные клавиши пригодятся. По хорошему там больше клавиш потребуется. Ну или использовать 2-4-6-8 для навигации, а 5 и В↑ для выбора пунктов меню. Ноль для выхода, Сx для сброса в умолчания. Галочки можно ставить и снимать плюсом и минусом, ↔ меняет выбор на противоположный.

МК52S было бы хорошо, если бы был реверс-инженерный эмулятор чипов МК52, я так понимаю, такой отсутсвует.

Насчет клавиатуры - если нужно больше кнопок (например, в Simpleputer stm32basic кнопок - 48 штук), то тогда надо просто делать свою собственную плату, с кнопками как на МК161, а корпус потом 3Д печатать

В МК-52 только один новый чип К745ИК1801-2, для управления ППЗУ. Которое так себе идея. На советском безрыбье было шагом вперёд, но из-за ряда неуклюжих архитектурных решений (стирание построчно, а запись страницами по 7 шагов) добавление файловой системы (как в МК-161) будет правильным решением.

Маркировки основных трёх микроЭВМ (К745ИК1302-2, К745ИК1303-2 и К745ИК1306-2) у МК-61 и МК-52 совпадают. Скорее всего, их прошивки в этих калькуляторах не различались.

А, ну тогда если добавить сохранение программ и данных на SD-карточку (это в планах - в stm32basic все работает - полноценная файловая система), тогда можно с честной совестью назвать эмулятор MK52S. Который в корпусе МК52

Вариант компоновки МК61S, 3D.
Предполагается, что клавиатура - это накладка, сквозь которую торчат круглые шляпки тактовых кнопок, как в МК161 (рисовать было совсем невмоготу).
Верхний ряд из 5 кнопок может служить soft-menu кнопками, по 4 символа на название на экране.
Справа - разъем ST-Link + UART и сокет microSD карточки.
Плата ЦПУ втыкается в разъем дисплея "в горизонтальном" направлении - "пинхол"-коннектор на дисплее загнут Г-образно.
view view 1view 2view 3view 4

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

По рисунку — справа от В↑ должно быть обозначение регистра e. Поскольку мы сделаем шестнадцатеричный ввод, f можно разместить на ×, как в МК-161. Также над ВП и Сx должны быть ⊕, СF, ИНВ.
Edit. До кучи: K∨, K∧ и F⟳.

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

С рисунком клавиатуры - да, что-то пропущено (устал рисовать), какие-то символы не нашел, типа плюс в круге.

С кнопками тоже есть идеи не делать осточертевшие тактовые кнопки через дырки, а поставить на плату кнопки с крышечками, как на той I2C-клавиатуре, а кнопки напечатать как часть крышки, на гибких усах. Нормальные 3Д-принтеры такое умеют. И потом гравировкой нанести символы. Или, накладкой, на крайний случай.

Еще можно рядом с микроSD карточкой поставить USB разьем. В "синей таблетке" место еще есть, это нужно для зарядки аккмулятора и, в перспективе, с удобством работы как из Ардуино IDE - прошивка и работа с UART-терминалом.

Хотел добавить одну мыслю, очевидную, наверное. В проекте МК61S не нужно стремиться к дешевизне, рыночек сбыта у этого устройства очень небольшой (десятки-сотни), поэтому максимизировать надо качество, за счет более высокой цены, конечно. В этом плане SwissMicros идут совершенно маркетинго-правильным путем.

За и против высказанной мысли: да, рынок сбыта будет небольшой, сколько там наберется ретрогиков в русскоязычных интернетах, кто захочет купить или собрать?

Но разница в цене финального устройства, скажем 50 евро супротив 180 евро это существенная разница, которая сильно "отфильтрует" и так негустой рынок сбыта. Примеры перед глазами

Кодовая база MK61S переведена из libopencm3 в нормальный stm32 Cube IDE под Windows:
cube IDE

Вот проект Форта с ассемблерным ядром от Mecrisp-Stellaris.
https://github.com/spyren/Mecrisp-Cube

Теоретически можно - форк MK61S репозитория, добавление Форта и Pull request обратно, я интегрирую.
Вот только там чип более жирный:

Linker script for P-NUCLEO-WB55-NUCLEO Board 
    embedding STM32WB55RGVx Device from stm32wb series
**                      1024Kbytes FLASH
**                      256Kbytes RAM

И еще код Форта под лицензией GPLv3, вроде, нельзя 3 в 2, а наоборот можно

http://mecrisp.sourceforge.net/
По исходникам можно уточнить и лицензию этого Форта для STM32, MSP430 и вроде даже для AVR (помимо, например таких, как amForth, flashForth)

P.S.Ассемблерные исходники Форт ядра из этого проекта и Mecrisp-Cube по идее должны почти совпадать.

Главная проблема Форта в МК61S — скромная цифровая клавиатура. Мне удалось её решить в Каллисто, но у МК-161 и кнопок побольше. Вторая проблема — отсутствие русского алфавита в знакогенераторе индикатора.

Задача по встраиванию Форта, работающего через терминал, вполне решаема. Но ПМК это всё же устройство, которое носишь в кармане и на котором работаешь автономно. Если есть десктоп, на нём самом можно Форт запускать, безо всякого ПМК.

В последней редакции MK61S с экраном 20х4 кнопок планируется как в stm32basic Simpleputer - 48, форм-фактор - горизонтальный (МК52).

Из них 5 кнопок будут для soft-menu под экраном, остальные 43 - для нужд раскладки. Совершенно непонятно, как сделать раскладку, чтобы она была близка к калькуляторному. Как в TI-95?

Советский ПМК это 6×5=30 клавиш. Зачем 48? Ну да, можно добавить ещё один ряд из 5 клавиш для меню. Но если делать эмуляцию МК-61, пусть расширенную, должна быть именно ПМКшная клавиатура — как на картинках выше.

Ввод букв потребуется только в файловой системе, для которой можно сделать экранную клавиатуру, как в ДОС МК-161. Полная алфавитная клавиатура потребуется в железке для Каллисто, где другие требования к ОЗУ и индикатору.

Разумный довод. С экраном 20х4 раскладка получается МК52я, можно оставить ее плюс 5 софтовых кнопок под экраном.

Рассматривался ли вариант 6 мягких кнопок?

Дело в том, что один из вариантов экранной клавиатуры идёт именно через эти клавиши. Буква выбирается двумя нажатиями, первое выбирает диапазон. Пять клавиш дают 5×5=25 букв, что мало для русского алфавита. Шесть клавиш дадут 6×6=36 букв, что вполне достаточно. Конечно, русские имена файлов могут оказаться недопустимыми — все комплектующие и, наверное, библиотеки зарубежные. Вывод русских букв на индикатор тоже проблематичен.

Снизу и сбоку индикатора располагаем кнопки
и при одновременном нажатии двух из них на пересечении подсвеченной буквы на экране её вводим.
(типа как в шахматах e2, e4 ... :)

плотно поставить много софтовых кнопок это не ахти. Можно выбирать буквы кнопками ШГ-влево, ШГ-вправо, вверх, вниз.
Вот вариант с дополнительной софтовой кнопкой ALT:
mk52s

Тоже про такое решение думал. Можно назвать допкнопку Р, как в Б3-21 и МК-161. Ещё вариант — нарушить столбцы и разместить 6 чёрных клавиш на месте пяти.

Вот зачем А↑ и ↑↓ — не очень понятно. Стандартным способом эмулятору их не считать. Тогда уж надо переключатели Д-П, С-З-СЧ и прочую бяку. Вплоть до считывания БРП.

Да, старые кнопки не нужны. Логичнее что-то общего назначения.
Вот с кнопками P и F1 ... F4:
mk52s v2

Сейчас разрисовываю схему HW 1.1. Потом прикину, влезут ли дополнительные 10 кнопок. Я подумал, что оставлю матрицу основной клавиатуры как в МК52 - тогда те, кто захочет собрать свое железо при наличии сломанного МК52, смогут использовать последнего как донора.

Ещё вариант — нарушить столбцы и разместить 6 чёрных клавиш на месте пяти.

Будет плохо "делить" на 20 символов экрана. С 5-ю кнопками можно выделить по 4 символа на софт-меню.

могут быть для функций правого вертикального их расположения(высвечивания) на индикаторе
(или левого, или настраиваемого)

По клавишам:
F1 — ВЫХОД — главное меню с ДОС, просмотром / очисткой стека возвратов, настройкой и т.п., а также ESC
F2 — ВВОД — выбор пункта меню
F3 — DISP или ЭКР — переключение индикатора с отображения 4 регистров стека на отображение RX и служебной информации (и обратно)
F4 — СТ — Сброс Тьмы

Если понадобятся ещё клавиши, можно убрать ВВОД и использовать вместо него В↑. В МК-161 клавиша ВВОД выбирает и добавляет очередной символ в строку с именем файла, а В↑ завершает ввод имени. Сброс Тьмы на отдельной клавише выглядит красивой фишкой, но при необходимости эту функцию можно спрятать в меню системы.

Названия F1…F4 не очень удачны, так как Shift у нас называется F. То есть F3 это ln.

Названия F1…F4 не очень удачны, так как Shift у нас называется F. То есть F3 это ln.

К текстам F1,F2... на сером фоне у меня слабость со школьных времен работы на Ямахах MSXII :)

Какие варианты есть?

Слабость понимаю, но запутывать владельцев вряд ли оправданно. Советский вариант это Д1…Д4. Но выше я же привёл названия: ВЫХОД, ВВОД, ЭКР и СТ.

Да, как-то улетело из поля зрения на маленьком экране планшетки.
Тогда, может, покороче, чтобы влезло на кнопки:

ВЫХ
ВВОД
ЭКР
СТ

Еще вопрос по софт-меню кнопке с кружочком, слева от р-грд-рад, что на нее можно повесить и как подписать?

Расстояние по вертикали между клавишами не маловаты? Трудно будет разместить надписи, это ведь наклейки будут?

Рисунок это все лишь примерно, для определения форм-фактора и раскладки клавиатуры.
Финальный дизайн будет плясать от размеров дисплея и кнопок.
Насчет надписей - мы решили замахнуться на качественную 3Д печать с "впуклой" гравировкой (самим принтером или лазерной гравировкой)

Я её воспринял, как кнопку подсветки. Но она может быть кнопкой Турбо/Слоу. Впрочем, опцию аутентичной скорости можно и в меню спрятать.

Есть и другие варианты. Некоторые вставляют в калькуляторы часы с будильником. Секундомер для профилирования. Сохранение и восстановление сеанса. Много этих вещей тоже можно встроить в меню.

Кстати, да, кнопка подсветки не помешает. Оставлю как есть.

Обновил рисунок в readmi репозитория:
https://gitlab.com/vitasam/mk61s

Код из Stm32CubeIDE под лицензией BSD-3.

Насколько я понимаю, код под этой лицензий может быть использован в проекте под GPLv2 (так как BSD-3 более "разрешительная") ?

Интересно, наверное, и для такого примерного использования.
Процессор Forth J1 в FPGA плате M02mini https://habr.com/ru/post/523348/

На Forth J1 написано Firmware камеры wge100 https://wiki.ros.org/wge100_camera_firmware
Статья по J1 http://euroforth.org/ef10/papers/bowman.pdf

P.S. а т.к. бывают такие маленькие ПЛИС, то может и не одну добавить?
на сайте отладочные платы с Intel Max 10 https://www.intel.ru/content/www/ru/ru/products/programmable/fpga/max-10...

На время отладки железа и софта данное железо (HW 1.1) будет называться "FrankenCalc MK52S":
FrankenCalc MK52S

Я сначала думал, что надо тащить поддержку всех "железяк" - HW1.0, HW 1.1 и т.п., но смысла нет - все-равно железки в единственных экземплярах. Когда появится первая массовая плата, тогда почищу код, оставлю только текущее железо

Метафора как нельзя к месту :) Но я бы оптимистично сконцентрировался на истории о гадком утёнке.

Да, Гадкий Утенок 52S лучше, но, к сожалению, не разместить русские буквы вместе с глифами на одном экране :)