You are here
МК61S (эмулятор Лазарева)
пн, 28/09/2020 - 13:11 - Vitasam
Эмулятор МК61 на основе кода emu145 Ф.Лазарева.
Гитлаб-репозиторий проекта.
Телеграм-чат проекта.
Тематические ветки форума:
Forums:
Эмулятор
У нас есть эмулятор с консольным интерфейсом
Точно! Я и забыл уже
Смотрю исходники.
А может уйти с Сорсфордж под SVN на тот же Гитлаб/Гитхаб под GIT?
Git
Git есть и на сурсфордже, а на гитхабе у меня только портфолио
Я не нашел, как клонировать проект через
GIT, только SVN.
Можно уйти в Гитлаб, там у меня тоже несколько хоббей
Git
Я имею в виду, что на сурсфордже есть сервисы и SVN, и Git. Калькуляторный проект лежит в SVN. Его также можно checkout к себе, потом либо продолжать с этим депо (у тебя был доступ на запись), либо создать свой.
Да, понятно
Да, понятно. Я клонирую себе сейчас локально с Сорсфорджа SVN-ом, а потом буду собирать все у себя в Гитлабе. Если что-то заработает, либо выложу обратно в сорсфордж, либо еще что.
А под какой лицензией исходники mk61 эмулятора?
Лицензия
Лицензия - я даже не помню какая была. Сейчас прочел: GNU General Public License version 2.0 (GPLv2)
GPLv2
У меня stm32basic под лицензией LGPLv2, это одна из самых свободных после самой свободной MIT лицензией. Секция 3 LGPL 2.1 говорит:
, так что окончательный код MK61S может быть под GPLv2, если я правильно понимаю
LGPL
Насколько я помню, GPL от LGPL отличается тем, что если ты меняешь код, то при распространении конечного продукта должен его отдавать вместе с продуктом. В LGPL попроще, можно только бинарники.
Да, в LGPL можно только бинарники (+)
поэтому MK61S надо делать под GPL, чтобы только сорсы :)
Примерно так
GPL заражает свободой произведения, включающие код под GPL («авторское лево»). LGPL требует распространять исходники только самой библиотеки, а основная программа может быть под другой лицензией.
Конечно, в работы под GPL можно включать другие работы под менее строгой LGPL. Надо лишь помнить, что авторские права не передаются. Поэтому при публикации совместного произведения требуется либо учитывать LGPL (минимум включить в дистрибутив исходники библиотеки и текст LGPL), либо индивидуально договориться с автором о другом лицензировании.
Фуух
Тонны ворнингов, но, вроде, удалось смешать в кучу C++ и C:
Бинарник сбилдился:
Терминал живой:
Ну ладно, начало обещающее, будем ковыряться пошагово
MK61S Hello World
эмулятор, похоже, живой:


Теперь надо добавить вызов клавиатуры
Внушает
Внушает оптимизм :) Эмулятор в консоли был работающий, интерфейс с консолью я отделил по максимуму, так что проблем перетащить само ядро не должно возникнуть.
Да, ядро достаточно локализовано
Может, потом подзачищу код - уберу Commander, MK72 и т.п.
Полноэкранный редактор
В DM41X полноэкранный редактор — графическая оболочка над эмулятором. Выдаваемая эмулятором информация о памяти программ расшифровывается на 4 строки экрана, а вводимые с клавиатуры команды передаются эмулятору. Есть не только клавиши вверх/вниз, отсутствовавшие на старой железке, но и комбинации клавиш для перехода на первую и последнюю строки программы.
При этом ощущение совершенно другое, удобнее смотреть и редактировать программу. Но одновременно и 100% совместимость со старым ПМК, так как в конечном итоге всё проходит через эмулятор.
Если делать римейк МК-61, как state of art, режим F ПРГ можно приблизить к такому же в МК-161. С таблицей декомпилятора и отображением мнемоники, на русском или английском языках. К каждому шагу можно отдельно (вне памяти эмулятора) хранить дополнительный байт, как в MKP — что хранится в ячейке, адрес или код операции. Это позволит реализовать вставку и удаление шага / команды.
Экран PRG
Да, согласен. Ресурсов "синей таблетки" пока хватает, похоже, в крайнем случае, уйдем на RET6 чип с 512КБ флэш-памяти.

Типа такого варианта (обратный слэш кода 5С на шаге 01 почему-то онлайн генератор ЖКИ не смог отрисовать):
ЖКИ экраны 20x4, что находятся у меня, с латинским знакогенератором. Вроде, есть экраны с кириллицей в прошивке, у меня таких никогда не было.
Но у HD44780 контроллера дисплея есть память на 8 символов пользователя.
Вопрос - можно ли организовать интерфейс МК61S таким образом, что в каждый момент времени на экране будет не больше 8 русскоязычных символов? Тогда, теоретически, можно на лету подгружать русские символы.
P.S. Второй скриншот в начале форума я удалил - там баги были :)
P.P.S Производитель МК161 не будет против слизывания дизайна?
Дизайн ПРГ
Можно и так. В этом случае эмулятору придётся скармливать ШГ→ , ШГ← для считывания четвёртого шага на виртуальный индикатор. Ну или обращаться к кольцу в обход эмулятора.
Проще, наверное, оставить классический вывод 3 шагов, посвятив каждому из них отдельную строку с адресом, кодом и мнемоникой. На четвёртой же выводить статусную информацию. Нажатые клавиши F, K, ИП и т.д. Примерно так и в МК-161 ввод устроен, только там шагов в два раза больше отображается. По правилам ЭКВМ новая команда вводится в подчёркнутую (нижнюю) ячейку памяти программ. На этом снимке только что введена команда БП 59, и ЭКВМ готова вводить новую команду в пустую ячейку 0098.
За Новосибирск говорить сложно. В первые годы они ругали копирайт и выступали за повторное использование своих, да и вообще всех наработок мира. Значительная часть МК-161 сама слямжена с советских ПМК. Ограничения касались лишь кода прошивки ЭКВМ, который здесь не при чём. Тот же eMKatic полностью копирует дизайн МК-161. Что сейчас у них на уме, непредсказуемо, так как с сообществом разработчики общаться перестали. Если начнутся претензии, разработать новый дизайн труда не составит.
3 строки + статус
3 строки + статус строка мне нравится больше. Насчет кнопок - можно либо придумать свою комбинацию кнопок "что-то" + ШГ→ скачет на 3 шага. Либо даже добавить кнопки дополнительные
Русские команды на HD44780
Есть такое подозрение, что можно уложиться русскими командами в 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:
А зачем колонка ASCII для МК61? В ее языке же нет возможности выводить строки.
Эти символы
можно оставить для MK61S HW2.0 (у меня есть два экрана от DM42, 400x200 пикселей, суперконтрастный, но его сложнее подключать).
Режим HEX
Можно и на будущее оставить, конечно. Но железо 1.0 их вполне потянет, так как одновременно на экране будет всего чуть-чуть экзотических символов. Даже если в режиме F АВТ сделать статусную строку, эхо введённой команды.
Кстати, здесь есть выбор. Можно либо отображать все 4 регистра стека, либо RX, RY и две строки статуса.
Ещё в ЭКВМ есть режим ввода байтов для прямого редактирования памяти программ. Он может пригодиться, если в 16-страничном режиме команды 4F и 6F начнут обеспечивать доступ к 16-ому регистру.
Да, скорее всего, потянет
Даже интереснее оставаться в рамках железа 1.X ("синяя таблетка и экран 20x4) - спортивный азарт выдать все, что можно, из нерусифицированного и дешевого железа.
Железо 1.1 планируется тоже самое как сейчас 1.0, но с автономной клавиатурой из тактильных кнопок.
С раскладкой клавиатуры ориентироваться под что - сразу под МК52? Или нечто промежуточное между МК61 и чем?
Раскладка
Раскладка — самое сложное. В своих проектах я сейчас ориентируюсь на горизонтальную клавиатуру МК-152. На клавишу ВЫХОД можно повестить меню, зависящее от проекта. Клавиши выбора (стрелочки) можно задействовать не только в нём.
В римейке МК-61 клавиша Р не используется. Её можно назначить на борьбу с Тьмой, а дальше как пойдёт.
Клавиатура
Да, это идея. У меня есть дохлый 52й - возьму морду от него.
Stay tuned
MK61S: ввод цифр 0-9
Ввод цифр 0-9 заработал:


Проблема EГГ0Г
Нам наверняка захочется видеть на индикаторе EГГ0Г, а не EDD0D. Кто-то будет без ума от 3ГГ0Г’ов и прочих извращений.
Если в режиме программирования можно использовать шестнадцатеричную систему (в том числе для адресов A0-A4), то для логических операций в автоматическом режиме вместо неё будет старое доброе -, L, C, Г, E. Для борьбы с Тьмой и выхода из зависаний «пустышки» можно предусмотреть специальную кнопку безопасности, на ходу «лечащую» кольцо от фальшивых меток и перезагружающую процессоры.
Также можно предусмотреть работу в трёх режимах — Б3-34, МК-61 и новый на 112 шагов, 16 регистров. Программы во флэшке можно снабдить тэгом, для какого из этих режимов они разработаны.
Эксперимент с 8ю своими символами
Сделал эксперимент с 8ю символами:
С динамической перезагрузкой пользовательской страницы памяти проблема, поизучаю
Красиво
Индикатор как родной. Некоторые нужные символы, насколько я понял, в знакогенераторе уже есть.
Обновил список спецсимволов выше, стрелка влево тоже нужна. Но ↔ можно по бедности сделать из ←→.
На вики есть глиф квадрата, да и других символов. Правда, там двоичная кодировка по столбцам, а не строкам.
Кодовая таблица HD44780
Как я понял, у меня европейская кодовая таблица: (ROM Code: A00).
Надо проверить, та ли она. Но спецсимволов там хватает, можно, наверное, что-то позабирать оттуда.
Да, глиф квадрата у меня дурацкий. Я символы этой онлайн-тулзой рисовал, квадрат лучше не придумал
A00
По ссылке A00 японский знакогенератор, A02 — европейский.
В европейском побольше интересных символов, но и в японском есть несколько. Правда, коды этих символов не совпадают.
У меня А00
Да, я перепутал - у меня как раз А00, японский вариант:



В общем, для использования эти символы и 8 своих символов на одном экране (нельзя загрузить другие символы в тот же экран - старые символы "поломаются")
Динамическая загрузка глифов
Перед обновлением индикатора из теневого массива (K SCR) можно сбрасывать счётчик своих символов. Перед выводом символа из русского диапазона добавлять его глиф в 8 своих символов, если такого там ещё нет, и заменять для HD44780 код этого символа на код глифа.
Должно помочь, так как больше 8 своих символов одновременно на экране не будет. Такой «кэш 8 из 25» для имитации 25 глифов, когда железка поддерживает лишь 8. В прошивке у каждого русского символа будет свой постоянный код, но HD44780 знать эти коды не будет — только те, которые русским символам временно назначены при последнем обновлении индикатора.
Реально новых символов даже меньше 25, так как в японской раскладке есть минимум 6 заводских символов, которые можно использовать вместо своих глифов: ÷, Fπ, КГ→М, ШГ←, F 10ˣ, F √.
Возможно, так даже получится
Возможно, так даже получится. Но это можно потом, пока надо делать основной функционал.
Впечатляет
Впечатляет, прототип МК61 gold "в железе" работает!
Да, осталось подключить (+)
матрицу клавиатуры (распаянную или, как я собираюсь, от настоящего МК52) и написать драйвер опроса клавиш. И все - можно начинать рисовать схему MK61 Gold :)
MK61S официально выпущен в мир
MK61S официально выпущен в мир: Гитлаб проекта.
Ну так
Публикация неработающих исходников — хорошо, конечно. Но настоящий выпуск в мир это когда можно прислать денежку и получить готовый калькулятор, пусть и по почте.
Уверенности, что проект будет когда-нибудь доведён до этого этапа, пока нет. Поэтому и мой респект Новосибирску и Swiss Micro, что их проекты — не просто баловство «посмотрите, что я могу».
Большинство критиков МК-161, увы, выпустить серийную модель не могут. Обычное ведро с крабами. Надеюсь, этот проект однажды доведут до серийного продукта. И тогда будет, с чем МК-161 сравнивать.
Отлично
Отлично, теперь можно подумать о каком-то "железе", возможно малосерийном с алиэкспресса, чтобы сделать калькулятор. Готов поучаствовать, если нужно что-то заказать для опытных образцов.
Железо
Отвечу тут сразу на оба комментария - этот и уважаемого AtH выше.
Ath:
Исходники вполне уже тянут на "хэлло ворлд". Для этого и выпущен в мир - мало ли, кто-то захочет присоединиться. Скорее всего, ни до чего уровня МК-161 или SwissMicros не дорастет, но если не пробовать, то точно не получится :)
st:
Пока roadmap железа такой:
Схема железа HW 1.x стоит копейки - в сумме, наверное, евро 10 с алиэкспресс.
А дальше под вопросом. Для stm32basic-а на более мощном чипе stm32 (64КБ ОЗУ и 512 КБ флэш) я почти развел печатную плату с целью заказать пробную серию из 5 плат где-нибудь в Китае. Переделать эту схему под МК61S будет не очень сложно.


И плату
И плату, и корпус неплохо бы заказать. Возможно, есть какие-то готовые полуфабрикаты на али. Может быть есть какие-то готовые модели, которые можно перепрограммировать на уровне прошивки и засунуть туда нужную.
Готовые модели
Готовых моделей, которые можно перешить самому, на ум приходят только три:
Полуфабрикатов я не встречал вообще, разве что DIY калькуляторы с али.
Я пока думаю о промежуточном варианте - печатную плату развести и заказать, а корпус сделать на 3Д принтере. Модель корпуса тоже выложить в Thingverse.
Эмулятор МК-61 в корпусе МК-161
От МК-161 можно взять корпус, аккумулятор, клавиатуру и индикатор. При этом основную плату заменить на более мощную. Жаль, что по деньгам такой проект не самый оптимальный.
Также производство можно поднять самому или передать какой-либо уже существующей фирме, в Москве или Ленинграде. Можно и Новосибирск попросить. Жаль лишь, что новосибирский «патриотизм» на практике означает дурное отношение к соотечественникам и коллегам.
Корпус МК161
Корпус МК161 в "Чип и Дипе" за 500 рублей продается.
Но если честно, второй "мультиметр" МК161-го мне лично не хочется. Хочу плоский корпус, в толщину экрана 20x4 плюс печатная плата
Хотелки
1. В МК-161 хорош не сам корпус, а клавиатура, индикатор и аккумулятор. Они отечественные. И даже если клавиши хотелось бы не голые, а с толкателями, их раскладка близка проекту. Индикатор и аккумулятор выбраны так, чтобы поддерживать отечественного производителя.
2. Тонкий корпус хотелось бы. Но это — уровень больших корпораций вроде Apple и HP. Если мы хотим цену готового продукта держать скромной (10-20 т.р.), особых хотелок по поводу корпуса удовлетворить не получится.
Или, опять же, бросать отечественную «железную» компоненту (тем более, что есть риск, что выжившее при Путине производство окажется таким же фашистским и русофобским, как сами знаете кто) и договариваться со Swiss Micros или Китаем.
Не надо
Не надо ничего внешнего брать от МК-161. Это пример, как не надо проектировать калькуляторы.
Теория и практика
Тем не менее, МК-161 выпускается. А критики — классические путинские крабы в ведре. Сами ничего за 20 лет не выпустили и тех, кто выпускает, стараются прищучить, заставить тоже сидеть на диване и смириться с разрушением отечественного производства.
Я прошу
Я прошу не переходить на аргументы уровня "Запорожец тоже ездит".
Запорожец
МК-161 — лучший отечественный ПМК. Потому, что других, к сожалению, здесь не выпускается. На мировом рынке у него есть достоинства (высокое быстродействие, совместимость с МК-61, низкая стоимость носителей УЗВМК-1, внешние интерфейсы, возможность объединения в сеть) и недостатки (брутальный стиль, высокая цена).
Тему на обсуждение автопрома прошу не менять. Сам я не автовладелец. Даже если вы захотите, подобно некоторым соотечественникам, сменить тему на сиськи-пиписьки, это будет более приемлемо — в интимных отношениях гомо сапиенс я разбираюсь лучше, чем в ваших Запорожцах и Мерседесах.
Медленнее
Это, кстати, под большим вопросом. Пока эмулятор, запущенный в 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 позади экрана):
Нужны коррективы
Такой комплект дёшев, но сильно крупнее МК-161. Это уже ноутбук, а не ПМК. Клавиатура должна быть сильно меньше. Идеал это форм-фактор айфона с тактильными клавишами. Которые приложение может убрать, если запросит полноэкранный вывод.
При этом можно вывести на весь экран графики и двигать их пальцами. Для внешней клавиатуры можно предусмотреть разъём или блутус, эта роскошь уже для стационара.
320×240 в цвете это хорошо. Детям нравится баловаться с графикой.
Он меньше МК161 :D
Он меньше МК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, сделать ее сообща максимально просто и качественно
Файлы
Я посмотрел на гитхабе, там только кикадовский проект под синюю таблетку. А ты можешь файлы ретрокомпьютера с начатой печаткой мне на почту выслать?
Сайт
Выслал
Привет,
выслал на почту
Принято
Файлы пришли, всё открывается.
Сайт
Первые баги
Первые баги.
Пробую программу:
Результат работы (с "ручными комментариями после #):
На экране:
То есть команда С/П в режиме ПРГ ввелась в память программ правильно - с кодом 50. После возвращения в режим АВТ команда В/O тоже, вроде, правильно сработала. А вот следующая за ней С/П выдала пустой экран с запятой, оставшейся после режима ПРГ.
MK61S HW 1.1
MK61S HW 1.1:

В общем, принято решение, куда двигаться с версией HW 1.1 - это будет замена "материнской платы" МК52, с экраном 16х2. В идеале можно купить сломанный МК52, выкинуть потроха, оставив клавиатуру (там, к сожалению, понадобится небольшая пайка, так как шлейф клавиатуры припаян).
МК61
Не хочешь попробовать корпус от МК61? МК52 жалко в том плане, что у него доп.возможности, отсутствующие в эмуляторе. Или надо будет симулировать переключатель "Д-П" и кнопки "||" "А|"
Корпус от МК61
Про корпус от МК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
МК52S было бы хорошо, если бы был реверс-инженерный эмулятор чипов МК52, я так понимаю, такой отсутсвует.
Насчет клавиатуры - если нужно больше кнопок (например, в Simpleputer stm32basic кнопок - 48 штук), то тогда надо просто делать свою собственную плату, с кнопками как на МК161, а корпус потом 3Д печатать
МК-52
В МК-52 только один новый чип К745ИК1801-2, для управления ППЗУ. Которое так себе идея. На советском безрыбье было шагом вперёд, но из-за ряда неуклюжих архитектурных решений (стирание построчно, а запись страницами по 7 шагов) добавление файловой системы (как в МК-161) будет правильным решением.
Маркировки основных трёх микроЭВМ (К745ИК1302-2, К745ИК1303-2 и К745ИК1306-2) у МК-61 и МК-52 совпадают. Скорее всего, их прошивки в этих калькуляторах не различались.
МК52S
А, ну тогда если добавить сохранение программ и данных на SD-карточку (это в планах - в stm32basic все работает - полноценная файловая система), тогда можно с честной совестью назвать эмулятор MK52S. Который в корпусе МК52
Вариант компоновки МК61S, 3D
Вариант компоновки МК61S, 3D.





Предполагается, что клавиатура - это накладка, сквозь которую торчат круглые шляпки тактовых кнопок, как в МК161 (рисовать было совсем невмоготу).
Верхний ряд из 5 кнопок может служить soft-menu кнопками, по 4 символа на название на экране.
Справа - разъем ST-Link + UART и сокет microSD карточки.
Плата ЦПУ втыкается в разъем дисплея "в горизонтальном" направлении - "пинхол"-коннектор на дисплее загнут Г-образно.
Крепления
Важно предусмотреть крепления плат и разъёмов. Я разбирал недорогую китайскую «банку», в которой забарахлил разъём USB. Там много чего крепилось просто на клею, а неисправный разъём USB держался только на припое — том же, через который шёл сигнал. Понятно, что неизбежное разбалтывание разъёма закономерно приводило к нарушению контакта.
По рисунку — справа от В↑ должно быть обозначение регистра e. Поскольку мы сделаем шестнадцатеричный ввод, f можно разместить на ×, как в МК-161. Также над ВП и Сx должны быть ⊕, СF, ИНВ.
Edit. До кучи: K∨, K∧ и F⟳.
Крепеж
Крепления, конечно, нужны. Их можно организовать как традиционными винтами, так и пазами с защелками 3Д-корпуса, когда дело дойдет до плат с корпусом.
С рисунком клавиатуры - да, что-то пропущено (устал рисовать), какие-то символы не нашел, типа плюс в круге.
С кнопками тоже есть идеи не делать осточертевшие тактовые кнопки через дырки, а поставить на плату кнопки с крышечками, как на той I2C-клавиатуре, а кнопки напечатать как часть крышки, на гибких усах. Нормальные 3Д-принтеры такое умеют. И потом гравировкой нанести символы. Или, накладкой, на крайний случай.
Еще можно рядом с микроSD карточкой поставить USB разьем. В "синей таблетке" место еще есть, это нужно для зарядки аккмулятора и, в перспективе, с удобством работы как из Ардуино IDE - прошивка и работа с UART-терминалом.
Хотел добавить
Хотел добавить одну мыслю, очевидную, наверное. В проекте МК61S не нужно стремиться к дешевизне, рыночек сбыта у этого устройства очень небольшой (десятки-сотни), поэтому максимизировать надо качество, за счет более высокой цены, конечно. В этом плане SwissMicros идут совершенно маркетинго-правильным путем.
За и против
За и против высказанной мысли: да, рынок сбыта будет небольшой, сколько там наберется ретрогиков в русскоязычных интернетах, кто захочет купить или собрать?
Но разница в цене финального устройства, скажем 50 евро супротив 180 евро это существенная разница, которая сильно "отфильтрует" и так негустой рынок сбыта. Примеры перед глазами
Переход на stm32 Cube IDE
Кодовая база MK61S переведена из libopencm3 в нормальный stm32 Cube IDE под Windows:

BSD-3 лицензия внутри GPLv2
Код из Stm32CubeIDE под лицензией BSD-3.
Насколько я понимаю, код под этой лицензий может быть использован в проекте под GPLv2 (так как BSD-3 более "разрешительная") ?
FPGA в железе калькулятора?
Интересно, наверное, и для такого примерного использования.
Процессор 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...
FrankenCalc MK52S
На время отладки железа и софта данное железо (HW 1.1) будет называться "FrankenCalc MK52S":

Я сначала думал, что надо тащить поддержку всех "железяк" - HW1.0, HW 1.1 и т.п., но смысла нет - все-равно железки в единственных экземплярах. Когда появится первая массовая плата, тогда почищу код, оставлю только текущее железо
Метафора
Метафора как нельзя к месту :) Но я бы оптимистично сконцентрировался на истории о гадком утёнке.
Да, Гадкий Утенок 52S
Да, Гадкий Утенок 52S лучше, но, к сожалению, не разместить русские буквы вместе с глифами на одном экране :)
MK61S за отчетный период
Результаты нашей работы с уважаемым Digitalinvitro над MK61S за отчетный период:
Начинка
Начинка, похоже, готова, дело за корпусом и компоновкой. А если отключить эхо, тест не будет идти побыстрее?
Начинка готова, осталось сложить в одну схему и (+)
можно разводить печатную плату. Уважаемый Digitalinvitro с коллегой придумали неплохую компоновку печатных плат - даже такой толстый экран как этот 20х4 компонуется в плоский корпус, примерно как 3D модель в заголовке форума. При этом сам вычислитель находится на "материнской плате", в которую втыкаются дисплей и плата клавиатуры - возможность апгрейда как дисплея, так и микроконтроллера.
Полноценная схема наш следующий шаг.
Эхо почти не влияет на скорость. Во-первых, USB COM-порт очень быстрый - все работает через прерывания, скорость порта 12 Мбит/с. Во-вторых, как видно на видео (с 44-й секунды) - во время счета по программе ничего не кидается ни на экран ни в СОМ-порт. Так что 3.8 ... 3.9 секунды это пока предел. Дальше надо думать в сторону распараллеливания, видимо.
P.S. Если портировать какой-нибудь симулятор вроде еМкатик, то скорость должна быть быстрее DM42 :)
Требуется помощь зала (с)
Требуется помощь зала (с)
Два открытых вопроса:
1) Что лучше - (а) дешевле и питаться от двух батареек АА или (б) дороже и сложнее схема, но литиевый аккумулятор?
2) Как сделать USB, чтобы работа (зарядка) была питанием от USB, если кабель воткнут в ПК?
Свои плюсы есть у обоих
Свои плюсы есть у обоих предложенных вариантов. Аккумуляторов АА, к примеру у меня - как у дурака фантиков, но и встроенный съемный литиевый тоже удобно. Литиевые бывают 18650, но размер неудобен.
Но как мне кажется, действуя по плану "Б", легче реализовать вопрос с питанием от USB: воткнули - идёт заряд, выткнули - не идёт.
PS. Каковы ожидаемые размеры МК 52s?
Размеры МК61S (MK52S)
Ожидаемые размеры - надо плясать от размеров дисплея:
Формфактор пока как в заголовке форума.
Можно предположить, что все пространство под клавиатурой справа от дисплея можно отвести под плоский аккумулятор(ы). С учетом корпуса и толщины платы клавиатуры можно рассчитывать, наверное, миллиметров на 9-10 пространства.
Батарейки
Тема перенесена на форум
Гитлаб МК61S обновлен
Гитлаб МК61S проекта обновлен:
Посмотрел
Посмотрел, презентация хорошая, все видно. Бэклог и параметры порта лучше расположить в конце, видимо.
Исправил
Исправил, действительно, бэклог надо в конец утащить.
МК61S в Телеге
МК61S в Телеге.