MK61S, программное обеспечение

Ветка форума для обсуждения программного обеспечения МК61S.
Firmware

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

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

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

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

Завел отдельный одноименный форум для проекта, темы переместил сюда.

Отлично! Я как раз хотел попросить :)

Как успехи в деле калькуляторостроения?
Подумалось (невесело), что лет через 10 потенциальные пользователи начнут потихоньку вымирать. Сайту уже 13 лет, так что время идет быстро.

Да, как-то вот остро так тюкнуло, что угу, последние могикане из мира ПМК...
Вот буквально несколько дней назад друзья помогли с разводкой печатной платы. Назовем ее "pre BETA" :)
Я собираюсь заказать изготовление минимальной партии 5 штук, для пробы. Пайка некоторых компонентов нетривиальна в домашних условиях, но возможна.
плата 1
плата 2
плата 3

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

Сделал первый релиз прошивки МК61S на Гитлабе.

Сабж :)

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

Теперь надо ждать первой спаянной платы :)

Я тут немного запутался с кодированием нажатий кнопок клавиатуры на вход эмулятора (key_x, key_y):

void MK61Emu_DoKeyPress(const int key1, const int key2) {
    m_IK1302.key_x = key1;
    m_IK1302.key_y = key2;
    MK61Emu_DoStep();
}

Где-нибудь есть табличка подсмотреть? Откуда, например, для кнопки F берутся 11 и 9?

MK61Emu_DoKeyPress(11, 9);          // F

Координата X равна 11, так как клавиша F подключена к разрядному сигналу Д11. Почему же выходная шина К3 кодируется девяткой, лучше ответят авторы эмулятора. Моё предположение, что К1 и К2 кодируются 8 и 1, а К3 это их логическая сумма. Возможно, это сигнал внешнего входа H со стр. 110. Ещё интересна таблица 4.2 на стр. 130. С учётом двух рисунков её легко доработать до того, что нужно.

Если что, стр. 69, 76, 110 и 130 тут:
http://www.emulator3000.org/Books/PMKUIP/PMKUIP.djvu

Спасибо за инфо, про Д11 я так и подумал, глядя на схему.
В коде MK61S у нас есть констатный массив ascii_to_key, в котором ASCII символ с терминала преобразуется в клавиатурную пару. Если приглядеться к массиву, то видно, что считано может быть либо 8, либо 9, либо 0. Уважаемый digitalinvitro предположил следующее:

этот номер соответствует номеру К, только с учетом линий порта, на которые была подключена клавиатура, а именно:

8 - 1.00.0
9 - 1.00.1
0 - 0.00.0

Разряды 3 и 0 дают нам 10, 11, 00

Таблица 4.2 со страницы 130 интересная, надо ее обмозговать

Схема подключения клавиатуры на Рис. 2.19, стр. 70. В верхнем левом углу три линии. Скорее всего они соответствуют К1, К2 и К3 с предыдущей страницы, где матрица клавиатуры (Рис. 2.18). Через диоды VD1, VD2 эти три линии «упаковываются» в два бита К1, К2 на входе DD1. Видимо это и есть ваши «разряды 3 и 0». Ещё туда, правда, зачем-то замешивают Д13 с выхода той же микроЭВМ — диоды VD3, VD4 часть той же схемы.

В-общем, здесь я бы и стал искать секрет key2, он же key_y. Описание на стр. 69-71 есть, но весьма скупое. И на стр. 110, повторюсь, «сигнал внешнего входа H» похож на «разряды 3 и 0» — только уже со стороны микрокода. А экспериментальным путём получается установить, кто прав? Там всего-то три значения надо подобрать, из 0, 1, 8 и 9.

Да, истина где-то рядом. В принципе, досконально знать почему так не обязательно, главное, что сейчас эмулятор работает (надеюсь) со всеми нужными клавишами МК61. Я добавлю enum с названиями кнопок ПМК, который будет возвращать индекс в констатном массиве key_x и key_y для упрощения написания кода клавиатуры.

Насколько я помню, я добавлял этот массив для работы с эмулятором на компьютерной клавиатуре. В "железном" устройстве он не нужен.

поддержка железной клавиатуры и протокол обмена с РС, а пока это единственный способ коммуникации с МК61 - посылка ASCII кодов через usb-uart терминал.

Кстати, сейчас при включении происходит ожидание СОМ-порта, без этого МК61s не инициализируется. Это тоже надо будет убрать