Ретроконсоль MK-61s

«МК-61s»: часы на экране

Выяснилось, что на борту ретроконсоли «MK-61s» есть аппаратные часы, и даже предусмотрена батарейка для них — просто у ребят, занимающихся консолью, не дошли руки ими заняться.

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

Пока ехал с работы домой, пришла мысль попробовать выделить под них два программируемых знакоместа, каким-то образом уместив в каждом по два числа. Там довольно тесно — каждое знакоместо имеет размер всего 5×7 пикселей.

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

Чёрно-белая пиксельная сетка с хаотичным расположением тёмных и светлых квадратов, создающая абстрактный узор без узнаваемых объектов или текста.

Как шрифт выглядит на реальном устройстве с сомнительной «восьмёркой» можно увидеть на фотографии ниже:

Электроника МК-61s-Mini: зелёный дисплей с «0. P 21:35», надписи «ЭЛЕКТРОНИКА МК-61s-Mini» и ссылка на GitHub; кнопки MENU, ESC, OK, стрелки, [USER], Р, ГРД, Г.

2 комментария

«МК-61» и случайные числа

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

На дисплее калькулятора «ЭЛЕКТРОНИКА МК 61» отображается число 4.04067 -01, видны переключатели «Вкл», «ГРД» и кнопки с обозначениями функций.
На старте генератор случайных чисел на реальном калькуляторе всегда выводит одно и то же число

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

В итоге мы решили брать шум с нескольких пинов, плюс замерять задержки между нажатиями и коды нажатых пользователем клавиш. В настройках появилось управление генератором случайных чисел — режим совместимости и новый режим, перехватывающий команду К СЧ калькулятора и подсовывающий ему значение из нового генератора.

Распределение сильно лучше: на десяти тысячах запусков старый генератор дал 179 случайных значений, а новый — 9957.

6 комментариев

«МК61s»: распробовал «Фейбл 5»

Скриншот Finder macOS: папка /Volumes/MK61S FS с тремя файлами .M61 — Bumblebee Fly, Fox Hunting, Infinity Story — с иконками вопроса.

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

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

Этот путь тоже не был безоблачным, проблем хватало. Система, к которой подключён такой диск, не пишет файлы последовательно, то есть там нет команд вроде: «мы начали писать вот такой файл, вот его полное упорядоченное содержимое, а вот и конец». Система пишет кусками, причём это могут быть куски разных файлов вперемешку. Их нужно получить в буфер, а по окончании аккуратно разобрать на файлы, найдя там же метаинформацию, из которой можно получить имя файла. Нетривиальная задача, на самом деле.

Я написал «ГПТ-5.5» всю первую версию, которая довольно неплохо работала, пока я не стал копировать файлы группами — на группе по пять файлов возникал сбой, диск пропадал и операция прерывалась. С «ГПТ-5.5» я просидел до часу ночи, но баг не лечился. Мы даже делали псевдофайл, в который сохранялись команды операционной системы, чтобы разобраться в ситуации, но всё тщетно.

«ГПТ-5.5» мне говорил «вот новая прошивка, я всё починил», но баг никуда не уходил — простое копирование пяти файлов опять всё роняло.

В итоге, я открыл сеть «Фейбл 5», описал ей проблему и она задумалась минут на двадцать, после чего начала неспешно писать код, в котором проблема была исправлена. Без отладки, без тестов, без диагностики. Задачу я ставил в минимальной формулировке, почти буквально «пять файлов копирую, оно падает», а «Фейбл» разобрала весь код, увидела проблему и решила, даже ни разу ничего не запустив.

Что я хотел сказать этой историей — человек так не сможет.

43 комментария

«МК-61s»: русские буквы

Вчера я писал, что сделал ретроконсоли «МК-61s» русификацию. Звучит несложно, если не знать, что дисплей того устройства, которое у меня на руках, не выводит графику. У него алфавитно-цифровой принцип, причём у меня стоит японская версия, в которой русских букв нет. Вот вся его таблица:

Таблица символов кодовой страницы CP437: десятичные коды от 32 до 255, соответствующие ASCII-символы, латиница, кириллица, японские катакана и специальные графические символы.

Как же делается русификация? Секрет в том, что в позициях от нуля до семи стоят символы, которые можно определять самостоятельно. Пришлось написать упаковщик, который, выводя на экран русские символы, на самом деле заменяет их латиницей, а те буквы, которые есть только в русском, распихивает по восьми символам, которые можно рисовать самостоятельно. Если позиций не хватает, пытается минимально изуродовать вывод, заменяя «Ч» на «4» и «У» на «Y».

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

Оставить комментарий

Доработка «МК-61s»

Программировать всякие железки — увлекательнейшее занятие. За ночь и утро я её русифицировал (решив проблему распихивания русских букв на восьми программируемым знакоместам), выделил слой примитивов работы с экраном, что позволило объединить две прошивки в одну, добавил интепретаторы двух языков (Бейсик и Фокал), сделал файловую систему с монтированием этой системы на компьютере и ещё многое другое.

Бейсик планировали сделать в сообществе и я его прикрутил строго по техзаданию, но мне не понравился режим ввода букв — на клавиатуре калькулятора нет способа ввода алфавита, не нужно было, поэтому в Бейсике предлагалось нанести на клавиатуру ещё один слой клавиш со своей уникальной раскладкой.

Запомнить это тяжело, поэтому я и реализовал Фокал. Не совсем чистый, его диалект. В Фокале каждое ключевое слово начинается на свою собственную букву. Их вообще можно не дописывать, а так и оставить однобуквенными — Фокал их и в такой форме понимает.

В «МК-61s» я сделал то же самое — на клавиатуре есть буквы от «a» до «e» для ввода имён регистров и некоторые другие буквы, на них я завязал ввод операторов, по пути переименовав некоторые из них — ASK, BRANCH, COMMENT, DO и так далее. А остальные буквы вводятся на цифровой клавиатуре, как это раньше делали с СМС — нажимаем K («клавиша»), а потом нужную цифровую кнопку на каждой из которой сидят по три или четыре цифры, как на старых кнопочных телефонах.

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

Электроника МК-61s-Mini с экраном «ГРОМКОСТЬ 0, СКОРОСТЬ ТУРБО» и клавиатурой, подключена кабелем к USB; ссылка на GitHub: https://github.com/un7fg0/mk61s_mini

Оставить комментарий

Ретроконсоль «МК-61s»

Мне довольно быстро дошла посылка с собранной ретроконсолью «МК-61s». Я уже писал, что познакомился с её авторами на почве интереса к «Электронике МК-61», и они выслали мне устройство.

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

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

Дополнено: немножко разобрался, но вопросов стало только больше. Для работы с прошивкой предназначен разъём слева, устройство надо перевести в режим DFU через меню. Но, самое главное, — дата прошивки 10 мая 2026 года, а репозиторий устройства не обновлялся уже восемь месяцев. Вопрос — где же идёт работа?

Да и размеры не совпадают. Я слил прошивку с устройства, она там занимает около 80КБ, тогда как, если собрать прошивку из репозитория, она займёт около 60. Ничего не понимаю.

Калькулятор ЭЛЕКТРОНИКА МК-61s-Mini на фоне зелени. На корпусе URL: https://github.com/un7fg0/mk61s_mini

2 комментария

← 1 2 →