Я так люблю свой Casio VX-4, что сгенерировал его выдуманную журнальную рекламу
Я так люблю свой Casio VX-4, что сгенерировал его выдуманную журнальную рекламу

Ещё восемь недель назад меня вообще не интересовали калькуляторы. Они казались мне скучными, блеклыми устройствами, напоминавшими о длинных утомительных дождливых днях на школьных уроках математики в 80-х и 90-х.

Перенесёмся в настоящее: теперь у меня даже не один, а два калькулятора Casio Pocket Computer (заказанных за большие деньги из Японии), для которых я разработал четыре программы (одна уже опубликована на Github, остальные будут выложены в опенсорс!) и я создал (при помощи ИИ) калькуляторный фанарт. Я глубоко и полностью околдован ими.

Почему же моё мнение так поменялось?

Всего лишь из‑за BASIC и RS232.

Открыт новый режим!

Всё началось достаточно просто: я прочитал пост Mark M5TEA о рефлекторе для SOTA. В посте Марк упомянул, что портировал эмулятор популярного калькулятора: какого‑то карманного устройства Casio, на котором можно было писать ПО на BASIC, а также на языках C и Casio CASL.

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

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

10 PRINT "HELLO WORLD"
20 GOTO 10
RUN

…получив такой результат:

HELLO WORLD
HELLO WORLD
HELLO WORLD

Очень скоро я пресытился тестированием коротких программ и начал думать о том, какие возможности открываются благодаря программируемости калькулятора и двум его окнам в мир: небольшого порта интерфейса и 2,5-миллиметрового разъёма, скрывающего порт последовательного ввода‑вывода RS232.

И именно это меня зацепило. Я начал думать об ещё одном моём увлечении: любительском радио, а именно о CW (морзянке). У меня нет большого опыта программирования и мои знания о коде сильно ограничены, поэтому я призвал на помощь LLM, чтобы узнать, можно ли навайбкодить простую программу для регистрации сеансов любительской радиосвязи.

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

Вскоре после этого я создал маленькую программу для CW‑передачи, тоже написанную на BASIC. Она не завершена, а для полного решения моей задачи потребуется внешняя цепь, соединяющая калькулятор и радио, но благодаря ей становится понятно, что возможно, если немного подумать.

Мой редкий карманный компьютер-калькулятор Casio Z-1GR. К сожалению, он нуждается в ремонте.
Мой редкий карманный компьютер‑калькулятор Casio Z-1GR. К сожалению, он нуждается в ремонте.

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

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

Почти сразу стало очевидно, что если я хочу поднять свои идеи на новый уровень, то мне понадобится настоящее устройство, а не просто эмулятор. Я обратил свой взор на Восток и нашёл Casio VX-4 в практически идеальном состоянии.

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

С конкретно этим VX-4 в комплекте был бонус: готовый 2,5-миллиметровый кабель USB‑C FTDI RS232! Вот так находка: VX-4 с полным фаршем, последовательным кабелем, да ещё и по приемлемой цене. Оставалось лишь оплатить заказ и молиться, чтобы по прибытии в Ирландию он заработал.

BBS никогда не помешает

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

Как насчёт электронной доски объявлений? Вы, наверно, скажете, что это очень оригинально. Но как насчёт BBS, которая хостится в калькуляторе с 8 КБ ОЗУ?

Настоящая telnet BBS на калькуляторе. Прекрасно. Это и будет моим новым проектом.

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

Настал великий день, и я нетерпеливо распаковал посылку с моими покупками. VX-4 оказался полностью соответствующим описанию: полностью упакованным и практически нетронутым. Книги, похоже, ни разу не открывали.

С Z-1GR ситуация была иной: он не включался и был абсолютно мёртв. Он не подавал никаких признаков жизни, даже при проверке щупами мультиметра. Продавец указал состояние «junk», то есть его вины в этом не было, однако я заплатил приличную сумму, поэтому было довольно досадно. Тем не менее, у меня есть мысли по поводу его восстановления. Для начала попробую запитать его от источника постоянного тока, а не от батарей, и если он включится, проверю, работает ли ЖК‑дисплей (я заметил признаки повреждённого поляризационного фильтра дисплея). Если Z-1GR подаст признаки жизни, то на такой случай у меня есть поляризационная плёнка, предназначенная специально для ЖК‑дисплеев. Следите за новостями!

Теперь, когда у меня появилось физическое оборудование, настало время приступить к созданию (первой в мире?) калькуляторной BBS!

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

Вы звонили?

Сразу скажу, что не буду вдаваться в подробности кодинга. Не переживайте, когда это ПО будет готово к выпуску, я опубликую его в моём репозитории 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, но в то же время копирует их в хранилище файлов txt на PI. Это позволяет мне, администратору BBS, гарантировать архивацию сообщений и очистку места на VX-4, в особенности если злоумышленник решит заспамить BBS.

К слову, о безопасности: я добавил к процессу подключения ещё один слой, не помешав (на мой взгляд) самой работе с telnet и звонкам на BBS. Мне хотелось обеспечить безопасное подключение калькулятора к Интернету, чтобы при этом моя домашняя сеть оставалась недоступной.

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

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

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

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

Я немного переделаю систему обмена сообщениями, чтобы улучшить её, но при этом опять же придётся учитывать количество доступной ОЗУ.

Одним из последних дополнений стало применение Adafruit OLED HAT, которым я раньше не пользовался. OLED служит для отображения состояния BBS. Одновременно он может отображать две из четырёх строк состояния. Например, BBS находится онлайн и на текущий момент до неё дозвонился пользователь. Пока система ещё не отлажена, а также конфликтует с VX-4, на ЖК‑экране которого отображается сообщение «Звонивший повесил трубку. Ждём нового вызова...».

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

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

Что касается самой BBS, то функции BBS EI3LH на VX-4 максимально просты. Можно подключаться к BBS через telnet при помощи любой утилиты связи.

Мне больше всего нравятся Minicom (Linux), Termux (Android) и очень крутая TERMinator (Android). Можете выбрать любую подходящую вам платформу и агента, остаётся лишь ввести данные telnet и подключиться!

Приветственный баннер BBS на Casio VX-4 и предложение ввода имени
Приветственный баннер BBS на Casio VX-4 и предложение ввода имени

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

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

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

Я добавил и ещё одно ограничение, которое и так было почти обязательным, учитывая скромные аппаратные возможности VX-4.

Из‑за малых вычислительных мощностей (это ведь калькулятор, в конце концов) и скорости последовательного ввода‑вывода в 4800 бод (и даже при этом передача данных может быть нестабильной), BBS ограничена только одним единовременным соединением.

Pi Zero W обеспечивает связь и работает в качестве хранилища сообщений, где находятся архивы в файле *.txt
Pi Zero W обеспечивает связь и работает в качестве хранилища сообщений, где находятся архивы в файле *.txt

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

Casio VX-4 отображает страницу About. Не обращайте внимания на ошибки: изначально я собирался делать мост на M5Stack, но оказалось, что Pi Zero подходит лучше!
Casio VX-4 отображает страницу About. Не обращайте внимания на ошибки: изначально я собирался делать мост на M5Stack, но оказалось, что Pi Zero подходит лучше!

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

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

Выше показано полное демо подключения к моему BBS Casio VX-4 по telnet через 5G.

Я кое‑как смонтировал короткое демонстрационное видео (см. выше). В нём показано, как через мобильную сеть 5G подключиться к калькулятору, войти в BBS, прочитать сообщения, написать сообщение, прочитать своё сообщение, открыть страницу About и отключиться от калькулятора. Всё это выполняется через мобильную сеть, а не через мою домашнюю сеть.

Главное, что в виде proof of concept всё работает!

Будущее будет светлым. Будущее — это VX-4.

До публикации первой альфа‑версии в моём репозитории на GitHub ещё нужно кое‑что доделать (как минимум, для начала исправить страницу About и приветственный баннер).

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

Почему я выбрал его менее мощного родственника? Сначала мне казалось, что ограничение в 8 КБ оперативной памяти может оказаться слишком серьёзным препятствием. Но, как выяснилось, BBS вполне комфортно работает даже на «младшем» калькуляторе VX-4. Хотя для меня он вовсе не младший — я просто ОБОЖАЮ VX-4!

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

Кроме того, я хотел бы добавить в BBS как можно больше функций, несмотря на жёсткое ограничение в 8 КБ оперативной памяти. И это ещё не всё: у меня есть и другие идеи, связанные с VX-4. Некоторые из них я уже воплощаю в жизнь и покажу в своём блоге, как только они заработают.

И ещё: я уверен, что найдётся возмущённая группа людей, которые будут смотреть на мою работу свысока. Они будут готовы придираться к каждой мелочи и доказывать, что моя BBS — ненастоящая, поскольку в качестве моста используется Pi Zero W.

Ну что ж, каждому своё.

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

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

72.

Комментарии (3)


  1. DreiKa
    16.10.2026 06:52

    Браво! Но эксперимент накладный, 20 000 руб. только за калькулятор


    1. Astrowalk
      16.10.2026 06:52

      20000 рублей -- это средненькая цена за рабочий Casio VX-4, по крайней мере в России. А если с коробкой и печатными мануалами, то можно умножать на три. Мир коллекционирования.


  1. ciuafm
    16.10.2026 06:52

    Чего то мне кажется что калькулятор тут лишний. Если мы ставим pi zero, то BBS можно крутить на нём. Найти интерпретатор Бейсика под Линукс не проблема, можно даже написать свой. Заодно можно сэкономить на калькуляторе и электричестве ;-)