Вход для пользователей

You are here

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

Эмулятор МК61 на основе кода emu145 Ф.Лазарева.
mk61S

Гитлаб-репозиторий проекта.

Телеграм-чат проекта.

Тематические ветки форума:

Forums: 
Изображение пользователя st.

Изображение пользователя Vitasam.

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

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

Изображение пользователя st.

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

Изображение пользователя Vitasam.

GIT, только SVN.

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

Изображение пользователя st.

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

Изображение пользователя Vitasam.

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

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

Изображение пользователя st.

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

Изображение пользователя Vitasam.

У меня 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, если я правильно понимаю

Изображение пользователя st.

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

Изображение пользователя Vitasam.

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

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

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

Изображение пользователя Vitasam.

Тонны ворнингов, но, вроде, удалось смешать в кучу 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

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

Изображение пользователя Vitasam.

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

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

Изображение пользователя st.

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

Изображение пользователя Vitasam.

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

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

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

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

Изображение пользователя Vitasam.

Да, согласен. Ресурсов "синей таблетки" пока хватает, похоже, в крайнем случае, уйдем на 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. Что сейчас у них на уме, непредсказуемо, так как с сообществом разработчики общаться перестали. Если начнутся претензии, разработать новый дизайн труда не составит.

Изображение пользователя Vitasam.

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

Изображение пользователя Vitasam.

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

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

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

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

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

Изображение пользователя Vitasam.

ПГИЧБШ + Д наверное, будет достаточно на первый раз. То есть пока 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-ому регистру.

Изображение пользователя Vitasam.

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

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

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

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

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

Изображение пользователя Vitasam.

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

Stay tuned

Изображение пользователя Vitasam.

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

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

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

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

Изображение пользователя Vitasam.

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

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

PRG mode
AVT mode

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

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

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

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

Изображение пользователя Vitasam.

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

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

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

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

Изображение пользователя Vitasam.

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

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

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

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

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

Изображение пользователя Vitasam.

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

Изображение пользователя st.

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

Изображение пользователя Vitasam.

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

Изображение пользователя Vitasam.

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

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

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

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

Изображение пользователя st.

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

Изображение пользователя Vitasam.

Отвечу тут сразу на оба комментария - этот и уважаемого 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 будет не очень сложно.
PCB1
PCB 2

Изображение пользователя st.

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

Изображение пользователя Vitasam.

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

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

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

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

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

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

Изображение пользователя Vitasam.

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

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

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

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

Изображение пользователя st.

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

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

Изображение пользователя st.

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

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

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

Изображение пользователя Vitasam.

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

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

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

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

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

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

Изображение пользователя Vitasam.

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

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

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

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

Изображение пользователя Vitasam.

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

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

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

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

Изображение пользователя Vitasam.

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

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

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

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

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

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

Изображение пользователя Vitasam.

stm32basic HW 2.0 vs MK61:
stm32basic HW 2.0 vs MK61

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

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

Изображение пользователя Vitasam.

Клавиатура из готовых, для модульного компьютера 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К флэш — не роскошь. Но если не злоупотреблять Юникодом и экономно расходовать память, можно попробовать в эти ограничения уложиться.

Изображение пользователя Vitasam.

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

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

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

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

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

Изображение пользователя st.

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

Изображение пользователя Электромонтёр.

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

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

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

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

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

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

Сайт

Изображение пользователя Vitasam.

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

Не то слово :)

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

Изображение пользователя Электромонтёр.

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

Сайт

Изображение пользователя Vitasam.

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

Изображение пользователя Электромонтёр.

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

Сайт

Изображение пользователя Vitasam.

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

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 тоже, вроде, правильно сработала. А вот следующая за ней С/П выдала пустой экран с запятой, оставшейся после режима ПРГ.

Изображение пользователя Vitasam.

MK61S HW 1.1:
MK61S HW 1.1

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

Изображение пользователя st.

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

Изображение пользователя Vitasam.

Про корпус от МК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 для сброса в умолчания. Галочки можно ставить и снимать плюсом и минусом, ↔ меняет выбор на противоположный.

Изображение пользователя Vitasam.

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

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

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

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

Изображение пользователя Vitasam.

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

Изображение пользователя Vitasam.

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

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

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

Изображение пользователя Vitasam.

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

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

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

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

Изображение пользователя st.

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

Изображение пользователя Vitasam.

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

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

Изображение пользователя Vitasam.

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

Изображение пользователя Vitasam.

Код из 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...

Изображение пользователя Vitasam.

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

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

Изображение пользователя st.

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

Изображение пользователя Vitasam.

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

Изображение пользователя Vitasam.

Результаты нашей работы с уважаемым Digitalinvitro над MK61S за отчетный период:

  • Завершено мигрирование на STM32 Black Pill: ARM Cortex-M4, Частота: 100МГц, ОЗУ: 128К, флеш-память: 512К
  • Проект переведен на C++, в С оставлено только ядро MK61Emu
  • Добавлен виртульный COM-порт, подключение через USB-C
  • Работа с Serial-терминалом в режиме эха
  • Тест "Короткие билеты": 3.9 сек или 10.2х от оригинала
Изображение пользователя st.

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

Изображение пользователя Vitasam.

можно разводить печатную плату. Уважаемый Digitalinvitro с коллегой придумали неплохую компоновку печатных плат - даже такой толстый экран как этот 20х4 компонуется в плоский корпус, примерно как 3D модель в заголовке форума. При этом сам вычислитель находится на "материнской плате", в которую втыкаются дисплей и плата клавиатуры - возможность апгрейда как дисплея, так и микроконтроллера.

Полноценная схема наш следующий шаг.

Эхо почти не влияет на скорость. Во-первых, USB COM-порт очень быстрый - все работает через прерывания, скорость порта 12 Мбит/с. Во-вторых, как видно на видео (с 44-й секунды) - во время счета по программе ничего не кидается ни на экран ни в СОМ-порт. Так что 3.8 ... 3.9 секунды это пока предел. Дальше надо думать в сторону распараллеливания, видимо.

P.S. Если портировать какой-нибудь симулятор вроде еМкатик, то скорость должна быть быстрее DM42 :)

Изображение пользователя Vitasam.

Требуется помощь зала (с)

Два открытых вопроса:
1) Что лучше - (а) дешевле и питаться от двух батареек АА или (б) дороже и сложнее схема, но литиевый аккумулятор?

2) Как сделать USB, чтобы работа (зарядка) была питанием от USB, если кабель воткнут в ПК?

Свои плюсы есть у обоих предложенных вариантов. Аккумуляторов АА, к примеру у меня - как у дурака фантиков, но и встроенный съемный литиевый тоже удобно. Литиевые бывают 18650, но размер неудобен.
Но как мне кажется, действуя по плану "Б", легче реализовать вопрос с питанием от USB: воткнули - идёт заряд, выткнули - не идёт.

PS. Каковы ожидаемые размеры МК 52s?

Изображение пользователя Vitasam.

Ожидаемые размеры - надо плясать от размеров дисплея:
2004 LCD

Формфактор пока как в заголовке форума.

Можно предположить, что все пространство под клавиатурой справа от дисплея можно отвести под плоский аккумулятор(ы). С учетом корпуса и толщины платы клавиатуры можно рассчитывать, наверное, миллиметров на 9-10 пространства.

Изображение пользователя st.

Изображение пользователя Vitasam.

Гитлаб МК61S проекта обновлен:

  • Перенесен под лицензию GPLv3
  • Добавлен документ об исправлении ошибок в плате 1.10 при сборке
  • Добавлены (начаты) файлы FreeCAD для 3D-моделей корпуса
Изображение пользователя st.

Посмотрел, презентация хорошая, все видно. Бэклог и параметры порта лучше расположить в конце, видимо.

Изображение пользователя Vitasam.

Исправил, действительно, бэклог надо в конец утащить.

Изображение пользователя Vitasam.

МК61S в Телеге.