Hosting a Bulletin Board Service on My Casio VX-4.

About a eight weeks ago I had virtually no interest in calculators. Blank, dull, tedious-looking objects that remind me of long, arduous rainy afternoons in 1980’s/1990’s school maths classes.
Fast forward to August 14th, 2026 and I now own not one but two Casio Pocket Computer calculators (imported at great expense direct from Japan), have developed 4 pieces of software for them (one published to Github already, the rest will be open source for you to play with I promise!), made (AI generated) calculator fan art, and am now completely and utterly besotted with them.
So what changed my mind?
BASIC and RS232. That’s it.
Boeuf a la Mode!
It started quite simply with a post I read by Mark M5TEA on the SOTA Reflector. Mark had made mention that he had ported over a popular calculator emulator. Some sort of pocket Casio contraption that was able to write BASIC software as well as the C and Casio CASL languages.
I had a ‘curiosity click’ for the laugh, prodded a few buttons on the emulated calulator and thought little more of it. Later that day I went back for another look, curious to see how a calculator could run BASIC software, and moreto, how far could you push it?
Minutes turned to hours that turned to days. I was hooked. Starting out with the classic:
10 PRINT "HELLO WORLD"
20 GOTO 10
RUN
…and the resulting:
HELLO WORLD
HELLO WORLD
HELLO WORLD
Before long I’d had my fill of testing random quick shot programs and began to think about what might be possible with the calculator thanks to it’s programability but also the hackability of it’s two gateways. A small interface port and a 2.5mm jack which masquerades as an RS232 serial input and output port.
Boeuf a la mode!
This was the moment that hooked me. I began to think about one of my other passions, amateur radio – particularly CW (Morse Code). I don’t come from the world of software development and have very limited programming knowledge so I turned to an LLM to see could I vibe code a simple piece of software to log my radio contacts while operating portable.
This became the birth of my now published (and still very much alpha) Jamoncito FX logging software.
Shortly after I put together a small CW keying program, again written in BASIC. It’s unfinished and will require an external bridge circuit between the calculator and the radio to complete my goal, but it shows what can be done with a little thought.

Aside, I have long had a habit of keeping a pocket notebook and a fountain pen (your choice of stationary and writing implement may vary). If something pops in to my mind during the day (or night) I jot it down in case it’s of use another day. I also find it helps me declutter my brain, and in comparison to taking digital notes, it keeps me focused and the mix of random thoughts betwixt notes of genuine importance do not get lost in the digital void.
Whilst continuing to work on both pieces of software I had another idea and hastily grabbed my pocket notebook and fountain pen and scribbled it down.
It quickly became apparent that if I wanted to take my ideas to the next level that I was going to need to look in to getting my hands on the actual hardware. So it was that I looked toward the East and found a Casio VX-4 that appeared to be in near mint condition.
Fully boxed, mint condition accompanying manuals and programming books, the optional 32kb RAM add-on card. This adds 32kb to the on-board 8kb – if you are feeling particularly brave you can desolder and replace the 8kb IC with a 32kb chip, taking the VX-4 up to a fully loaded 64kb beast, akin to it’s 64kb FX-870P sibling.
There was also a bonus item included with this particular VX-4 for sale. A fully built 2.5mm to USB-C FTDI RS232 cable! What a find, a fully loaded VX-4 with serial cable and for a decent price. All I had to do now was pay for it, ship it and pray that it worked on arrival to Ireland.

People Will Always Need Plates.
I began to think about communications links between the Casio VX-4 and anything that could interpret the RS232 data to and from it. And thinking about communications walked me straight up the aisle towards what was waiting for me at the technology altar.
How about a Bulletin Board Service? How original you might say. Yes, but how about a BBS hosted entirely on a calculator with 8kb of RAM?
A genuine, true telnet BBS hosted on a calculator. Disco. I had my next project.
As the days passed and my two calculators made their way from Japan to Ireland, I continued to work on my projects and tried to learn as much as I could about typical Casio calculator operating procedures thanks to the emulator.
The big day arrived and I hastily unpacked the parcel containing my purchases. The VX-4 was just as described. Fully boxed and basically immaculate. The packed in books look like they have never been opened.
The Z-1GR was a different story. It was dead. Completely dead. No signs of life at all, not even when probing around with a multimeter. The seller did have it listed as ‘junk’ so isn’t at fault, though I paid a reasonable sum for it so it does sting a bit. With that said, I’ve some ideas to try and revive it. Firstly, trying to power it via DC instead of batteries, and if it does power on, seeing if the LCD display works as it is showing signs of a tired LCD polariser. I have some polarising film especially for LCD displays ready to go should the Z-1GR show signs of coming back from the dead. Watch this space!
Now I had the physical hardware it was time to get to work on the (world’s first?) calculator BBS!

You Rang?
To lay it out from the start, I won’t go in to the coding detail here. Rest-assured, when it this software is ship shape and fully ready to go, I will publish it to my Github repository for people to share, tear to shreds, laugh at my terrible skills and hopefully improve it or get inspired to make their own calculator BBS.
Before setting to work on the project, the biggest obstacles I faced from the outset were a) getting the calculator online and b) the very limited 8kb of RAM. Yes, I had the luxury of the additional 32kb RAM module, but I wanted the BBS to work on all options in the VX-4 range, including the baseline 8kb model. To note, the FX-870P is the same device, just with more RAM. The VX-4 was the brought to market as the cheaper option and dubbed the ‘educational’ calculator. Per it’s moniker, it was sold primarily to education and commercial sectors.
Naturally there was going to be no way whatsoever of getting the calculator to talk to the Internet without either some sort of hardware modification and probably reverse engineering – way outside of my area of knowledge. The more likely path to take was to harness the RS232 port and add a bridge.
The answer turned out to be the latter, a Raspberry Pi Zero W that I had laying around doing nothing (I have an old original Raspberry Pi Model B doing nothing too which has just found a new purpose – more on this another day!) but with the stipulation that the Pi Zero must not interfere with the VX-4. Meaning that providing connectivity aside, the Pi must be reliant upon the calculator – aka, the calculator is 100% the host of the BBS and it’s operability.
I did flex my own rules ever so slightly and made the Pi Zero W also act as a message archive vault, thus the VX-4 still stores the messages that callers leave on the BBS, but it will also replicate them to a txt file vault on the PI. This allows me as BBS admin to ensure that a copy of messages is archived and frees up space on the VX-4, particularly if a nefarious visitor decided to spam the BBS in to oblivion.
Talking of security, I added another layer to the connection process without (in my opinion) taking away from the telnet experience of calling in to a BBS. I needed to ensure I could expose the calulator to the Internet securely, and without exposing my home network.
While the BBS software is still being worked on I have made it available as an invite-only BBS via Tailscale and funneling. Once I tighten the system up a little more I will explore other avenues to publish the BBS safely whilst still allowing visitors to know that they are connecting to a real telnet BBS being hosted on a calculator.

Leave Your Message after the Beep…
The BBS is written in BASIC and when run, basically (excuse pun) puts the on-board COM port in to listening mode waiting to hear a CONNECT request. From here it will print the BBS welcome message and prompt the caller for their amateur radio callsign prior to logging in. I put this feature in so when I go to review logs I can see the ‘QSO’s I’ve made.
I am going to revise the messaging system slightly with some improvements, but again I need to be mindful of the amount of RAM I have available to me.
A later addition I made was to make use of an Adafruit OLED HAT I wasn’t taking advatage of. The OLED functions as an ‘at a glance’ BBS status display. It displays 2 of 4 status lines simultaneously. Example, the BBS is online and is currently in a call with a user. It’s a little hit and miss at the moment and also conflicts with the VX-4 which displays a “Caller hung up. Waiting for next caller…” message on it’s LCD.
It is a shame the calculator display doesn’t power save so as to avoid any potential screen damage or burn in. I will investigate this further. Perhaps a short screensaver or char animation could play when the BBS is in a particular status?

As far as a BBS goes, the EI3LH VX-4 BBS is as simple as it gets. You connect to the BBS via telnet using your dialer of choice.
My favourites are Minicom (Linux), Termux (Android) and the super snazzy TERMinator (Android). You can choose whatever platform and agent you wish, it’s irrelevant, just punch in the telnet details and connect!

Once connected you will be prompted for you amateur radio callsign – you can enter something else if you wish but I want to offer this BBS up over packet radio to the amateur radio community in future hence the callsign prompt.
Once completed you will be greeted with the welcome banner and a four option menu system.

Remember, space is limited, thus BBS is very simple and straightforward. You can read current messages, write your own message (limited to 60 chars to reduce blatant spamming, skids and filling up previous space), read a short about page and finally disconnect from the BBS.


One other hardening feature I added was more or less mandatory by the inherent VX-4 hardware limitations anyway.
Given there is little processing power available (it’s a calculator for goodness sake), and the reliance on a serial I/O rate of 4800 baud – and even then data transfer can be flaky, the BBS is limited to one connection at a time.

Limiting the number of users will ensure the VX-4 doesn’t get itself in a tizz and fall over. Baud rate can be increased to 9600 baud. I chose to keep it at 4800 baud to increase reliability, Increasing it to 9600 baud wouldn’t likely allow me to allow more than one user on at a time anyway given the nature of how the BBS software works and what it is doing behind the scenes,

Outside of this, all that the Pi Zero W is doing, as aforementioned, is providing that connectivity and sending the CONNECT signal to the VX-4 which the calulator is listening for then initiates the session once heard. Other than that it is a message vault, nothing more.
Still don’t believe me that this is a BBS on a calculator?
I (sloppily) put together a short demonstration video (see above which showcases connecting to the calculator over 5G cellular, logging on to the BBS, reading messages, writing a message, reading my message, displaying the about page and disconnecting from the calculator, all via cellular network and not my home network.
The main thing is, as a proof of concept, it works!
The Future’s Bright. The Future’s VX-4.
There’s a bit of work still to do on the initial alpha build before I publish it to my Github repository to share publicly – notably fixing the about page and the welcome banner for a start!
I’d originally wanted to use my trove of M5Stack goodies to act as the bridge, but a simple idea got overly complex quickly so I scrapped it, along with building the BBS out for the Casio FX-870P.
Why the sibling calculator? I thought the 8kb RAM limitation may be pushing things too far, but sure enough I got the BBS to work in great comfort on the ‘lesser’ VX-4 calculator. It’s not lesser to me though, I absolutely LOVE the VX-4!
I am also contemplating migrating the software from BASIC to C – rather, the way the VX-4 interprets C at least. There are tools to do this in the excellent emulator software pack so I may explore this in the future.
I’d like to add as many features as possible to the BBS within the extreme 8kb RAM limits too. Not only that but I have some other ideas around the VX-4, some of which I am currently building and will showcase here once they are working.
Regardless, I am sure there will be an outraged cohort, peering down over their spectacles and loaded with techno-fuelled ammunition, ready to split hairs on my BBS not being a true BBS because of the reliance on the Pi Zero W as the bridge.
You do you.
I’ll just continue experimenting and exploring ideas around anicent calculators and their capabilities in the modern world. Armed with my notebook and fountain pen, I’ll see what else I can come up with too and report any scribblings in a future write up here on my blog.
It is all about learning, sharing and having fun. That is what niche hobbies are all about. Fun.
72.
Leave a Reply