Как разместить доску объявлений на калькуляторе Casio VX-4

Автор настолько влюблён в свой Casio VX-4, что сгенерировал для него фейковую рекламу в стиле старых журналов. 14 августа 2026 года.

Ещё восемь недель назад интерес к калькуляторам был практически нулевым — скучные предметы, напоминающие о нудных дождливых днях на уроках математики в школе в 1980–1990-х.

К 14 августа 2026 года ситуация изменилась кардинально: в коллекции появились сразу два карманных компьютера-калькулятора Casio (заказаны напрямую из Японии за немалые деньги), написано четыре программы для них (одна уже опубликована на Github, остальные тоже станут open source), сделан сгенерированный нейросетью фан-арт, а сам увлечённый калькуляторами человек признаётся, что попросту очарован этими устройствами.

Что изменило отношение? BASIC и RS232. Собственно, всё.

Мясо по-домашнему

Началось всё довольно просто — с поста Марка M5TEA на SOTA Reflector. Марк упомянул, что портировал популярный эмулятор калькулятора — карманное устройство Casio, способное писать программы на BASIC, а также на C и фирменном языке Casio CASL.

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

Минуты превратились в часы, часы — в дни. Затягивало. Начиналось всё с классики:

10 PRINT "HELLO WORLD"
20 GOTO 10
RUN

…и результата:

HELLO WORLD
HELLO WORLD
HELLO WORLD

Довольно скоро эксперименты с короткими программами наскучили, и мысли перешли к тому, что можно сделать с калькулятором благодаря его программируемости и «взламываемости» двух его портов — небольшого интерфейсного разъёма и гнезда 2.5 мм, которое выступает как последовательный порт ввода-вывода RS232.

Вот тут-то всё и завертелось по-настоящему.

Это был момент, который зацепил окончательно. Мысли обратились к другому увлечению — любительскому радио, в частности телеграфу (Морзе). Без опыта в разработке ПО и с весьма ограниченными знаниями программирования пришлось обратиться к LLM, чтобы «вайб-кодингом» собрать простую программу для журнала связей во время полевых выходов.

Так родилось (пока ещё в статусе альфы) опубликованное ПО для ведения журнала связей Jamoncito FX.

Чуть позже появилась небольшая программа для передачи CW, тоже написанная на BASIC. Она не завершена и потребует внешней схемы-моста между калькулятором и радиостанцией, но уже показывает, что можно сделать при должной смекалке.

Редкий карманный компьютер-калькулятор Casio Z-1GR. Увы, требует ремонта. (фото продавца)

Кстати, есть давняя привычка носить с собой карманный блокнот и перьевую ручку (у каждого свой выбор канцелярии и инструмента письма). Если в течение дня (или ночи) в голову приходит мысль, она тут же записывается — вдруг пригодится позже. Это ещё и помогает разгрузить голову: в отличие от цифровых заметок, такой подход держит в фокусе, а случайные мысли вперемешку с действительно важными записями не теряются в цифровой пустоте.

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

Быстро стало ясно: чтобы вывести идеи на новый уровень, нужно было раздобыть настоящее железо. Взгляд обратился на восток, и там нашёлся Casio VX-4 в состоянии, близком к идеальному.

В полной комплектации: коробка, сопутствующие руководства и книги по программированию, дополнительная плата 32 Кб ОЗУ. Она добавляет 32 Кб к встроенным 8 Кб — а для особо смелых есть вариант выпаять и заменить микросхему на 8 Кб чипом на 32 Кб, доведя VX-4 до полностью загруженных 64 Кб, как у его собрата FX-870P.

К этому конкретному VX-4 в продаже прилагался бонус — полностью готовый кабель FTDI RS232 с разъёмом 2.5 мм на USB-C! Отличная находка: полностью укомплектованный VX-4 с последовательным кабелем и по вполне разумной цене. Оставалось только оплатить, дождаться доставки и надеяться, что устройство доедет до Ирландии в рабочем состоянии.

Заветный Casio VX-4. Фото продавца — вряд ли получилось бы снять лучше.

Людям всегда будут нужны тарелки

Дальше мысли перешли к каналам связи между Casio VX-4 и чем угодно, способным интерпретировать данные RS232 в обе стороны. А размышления о связи привели прямиком к тому, что давно поджидало у технологического алтаря.

Что если сделать BBS — доску объявлений? Казалось бы, ничего оригинального. Но как насчёт BBS, полностью размещённой на калькуляторе с 8 Кб оперативной памяти?

Настоящая telnet BBS на калькуляторе. Вот он, следующий проект.

Технология — это «-логия». Значит, это делает учёным!

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

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

С Z-1GR вышло иначе. Устройство оказалось совершенно мёртвым. Никаких признаков жизни, даже при проверке мультиметром. Продавец честно указал состояние как «на запчасти», так что претензий к нему нет, хотя сумма была заплачена немаленькая, и это немного огорчает. Тем не менее есть пара идей для оживления: сначала попробовать питание от источника постоянного тока вместо батарей, а если включится — проверить, работает ли ЖК-дисплей, поскольку поляризатор выглядит уставшим. Есть запас поляризационной плёнки специально для таких дисплеев — на случай, если Z-1GR подаст признаки возвращения к жизни.

Когда железо оказалось на руках, пришло время браться за (возможно, первую в мире?) BBS на калькуляторе!

Casio VX-4 в режиме COM, подключённый к USB-C кабелю RS232.

Вы звонили?

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

Ещё до начала работы над проектом главными препятствиями были: а) вывести калькулятор в сеть и б) крайне ограниченные 8 Кб ОЗУ. Да, была доступна роскошь дополнительного модуля на 32 Кб, но задача стояла добиться работы BBS на всех вариантах линейки VX-4, включая базовую модель с 8 Кб. Стоит отметить: FX-870P — по сути то же устройство, только с большим объёмом памяти. VX-4 выводился на рынок как более дешёвый вариант и позиционировался как «образовательный» калькулятор, продаваясь в основном в учебный и коммерческий сектора.

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

Ответом стал Raspberry Pi Zero W, валявшийся без дела (есть ещё старый оригинальный Raspberry Pi Model B, тоже простаивавший, но он недавно нашёл новое применение — об этом отдельно как-нибудь в другой раз!). Условие было одно: Pi Zero не должен вмешиваться в работу VX-4. То есть, помимо обеспечения связи, Pi обязан целиком зависеть от калькулятора — иными словами, именно калькулятор на 100% является хостом BBS и отвечает за её работоспособность.

Собственные правила были слегка нарушены: Pi Zero W также выполняет роль архивного хранилища сообщений. VX-4 по-прежнему хранит сообщения, оставленные звонящими на BBS, но дублирует их в текстовый файл-архив на Pi. Это позволяет как администратору BBS гарантировать сохранность копии сообщений и одновременно освобождать место на VX-4 — особенно если недобросовестный посетитель решит завалить BBS спамом.

Раз уж речь зашла о безопасности — в процесс подключения добавлен ещё один уровень защиты, при этом (по личному мнению) не в ущерб самому ощущению звонка на настоящую telnet BBS. Требовалось безопасно предоставить доступ к калькулятору из интернета, не раскрывая при этом домашнюю сеть.

Пока программное обеспечение BBS дорабатывается, доступ к ней организован по приглашениям через Tailscale и функцию funneling. Когда система будет доработана чуть плотнее, планируется рассмотреть другие способы безопасной публикации BBS — так, чтобы посетители по-прежнему понимали, что подключаются к настоящей telnet BBS, размещённой на калькуляторе.

Casio VX-4, подключённый к интернету и готовый принимать звонки на BBS EI3LH!

Оставьте сообщение после сигнала…

BBS написана на BASIC и при запуске переводит встроенный COM-порт в режим прослушивания в ожидании сигнала CONNECT. После этого выводится приветственное сообщение BBS, и звонящему предлагается ввести позывной радиолюбителя перед входом в систему. Эта функция добавлена для того, чтобы при просмотре логов можно было видеть совершённые «QSO».

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

Позднее нашлось применение неиспользуемому Adafruit OLED HAT. OLED-дисплей выполняет функцию «статуса на беглый взгляд» для BBS, отображая 2 из 4 строк состояния одновременно — например, что BBS онлайн и в данный момент обслуживает вызов пользователя. Пока работает не идеально стабильно и иногда конфликтует с VX-4, который выводит на своём ЖК-экране сообщение «Caller hung up. Waiting for next caller…».

Жаль, что дисплей калькулятора не поддерживает энергосбережение — это могло бы защитить его от выгорания. Этот вопрос ещё предстоит изучить. Возможно, стоит добавить короткий скринсейвер или анимацию символов при определённом статусе BBS?

Сгенерированный ИИ макет OLED HAT на Pi Zero W с различными статусными сообщениями BBS.

Что касается самой BBS EI3LH VX-4 — проще некуда. Подключение выполняется по telnet через любой удобный клиент.

Из фаворитов — Minicom (Linux), Termux (Android) и очень стильный TERMinator (Android). Платформа и клиент значения не имеют — достаточно ввести реквизиты telnet и подключиться!

Приветственный баннер и приглашение на вход в BBS Casio VX-4 через 5G.

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

После этого показывается приветственный баннер и меню из четырёх пунктов.

После входа в BBS Casio VX-4 доступны 4 пункта меню.

Стоит помнить: памяти мало, поэтому BBS предельно проста. Можно прочитать текущие сообщения, написать своё (ограничение в 60 символов — чтобы сократить откровенный спам, отвадить «скидов» и не забивать и без того ограниченное пространство), прочитать короткую страницу «о BBS» и наконец отключиться.

Написание сообщений ограничено 60 символами по соображениям производительности и безопасности, но работает!
Чтение сообщений, включая одно, оставленное Марком M5TEA, который помогал тестировать подключение к BBS!

Ещё одна доработка по части устойчивости оказалась практически неизбежной из-за самих ограничений железа VX-4.

Учитывая скромные вычислительные возможности (всё-таки это калькулятор) и скорость последовательного порта ввода-вывода в 4800 бод — при том что передача данных и на этой скорости иногда сбоит, — BBS ограничена одним подключением одновременно.

Raspberry Pi Zero W обеспечивает связь и служит хранилищем сообщений, сохраняя архивы в txt-файле.

Ограничение числа пользователей гарантирует, что VX-4 не «перегреется» и не зависнет. Скорость можно поднять до 9600 бод — она сознательно оставлена на уровне 4800 бод ради надёжности. Впрочем, повышение до 9600 бод вряд ли позволило бы подключать больше одного пользователя одновременно — с учётом того, как устроена программа BBS и что происходит «под капотом».

Страница «о BBS» на Casio VX-4. Опечатку про FX-870P и информацию о сети можно игнорировать — изначально планировался мост на базе M5Stack, но Raspberry Pi Zero оказался более разумным вариантом!

Помимо этого, всё, что делает Pi Zero W, как уже упоминалось, — обеспечивает связь и посылает сигнал CONNECT на VX-4, который калькулятор ожидает и, получив его, инициирует сессию. В остальном Pi — просто хранилище сообщений, ничего сверх этого.

Всё ещё сомнения, что это действительно BBS на калькуляторе?

Полная демонстрация подключения к telnet BBS на Casio VX-4 через 5G, от начала до конца.

Было собрано (не без огрехов монтажа) короткое демонстрационное видео выше, показывающее подключение к калькулятору через сотовую сеть 5G, вход в BBS, чтение сообщений, написание сообщения, чтение собственного сообщения, вывод страницы «о BBS» и отключение — и всё это через мобильную сеть, а не через домашнюю.

Главное — как proof of concept всё работает!

Будущее светлое. Будущее — VX-4

Перед публикацией альфа-версии на Github предстоит ещё немного работы — как минимум исправить страницу «о BBS» и приветственный баннер!

Изначально планировалось использовать целую коллекцию комплектующих M5Stack в роли моста, но простая идея быстро усложнилась, и от неё пришлось отказаться — как и от версии BBS для Casio FX-870P.

Почему именно родственный калькулятор? Была мысль, что ограничение в 8 Кб ОЗУ может оказаться слишком серьёзным препятствием, но BBS вполне комфортно заработала именно на «младшем» VX-4. Для автора он вовсе не младший — этот калькулятор вызывает искреннюю любовь!

Рассматривается также перенос программы с BASIC на C — точнее, на тот вариант C, который интерпретирует VX-4. В отличном пакете эмулятора есть инструменты для такого переноса, так что это направление вполне может получить развитие в будущем.

Хочется добавить в BBS как можно больше функций в рамках жёсткого лимита в 8 Кб ОЗУ. Помимо этого, есть и другие идеи вокруг VX-4 — часть из них уже в разработке, и о результатах планируется рассказать отдельно, когда всё заработает.

При этом наверняка найдутся возмущённые скептики, вооружённые техническими аргументами и готовые придираться к тому, что эта BBS — не совсем «настоящая» из-за зависимости от Raspberry Pi Zero W в роли моста.

Что ж, дело вкуса.

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

Всё дело в обучении, обмене опытом и удовольствии. Именно в этом суть нишевых увлечений. Удовольствие.

72.