Introduction

This all began with me falling down the rabbit hole on CyberDecks back in 2019. I found myself fascinated by the artistic expression and the practicality of the designs I saw. I began researching other UMPCs and retro form-factors to work out of. This searching was where I first came across the TRS-80 Model 100 (and also its newer inspired descendant the DevTerm). This design was the perfect combination of portable and goofy looking I was going for but, I eventually shelved the project as other interests took over. That was, at least, until I attended a VCF Swap Meet several weeks ago. While walking around this swap meet I ended up finding a near-mint TRS-80 Model 100 and all the ideas from 2019 came back. I bought it and brought it home to start figuring out how to move forward.
Design
I knew from the start that there was no way I was gutting this machine and just replacing the parts. Sleepers are all good for broken hardware to ensure it can live a new life but this thing worked great. I figured a Raspberry Pi Zero would make a good companion to this terminal. It’s small, low power, and would allow me to connect to the internet. At first, I planned to do something with the TRS-80’s modem but upon further inspection of the device, I saw that it had a serial port. The Pi Zero has UART as a terminal option so connecting via serial should be no problem.
I started, as I do with most projects, by looking to see what people had done before me. This lead me to a 2015 Ars Technica article by Sean Gallagher. He went down a very similar path, connecting a Raspberry Pi via serial to the TRS to get it back online but unfortunately, his guide has become outdated in the 9 years since it was written. The modifications and steps I took below should serve as an updated guide.
Parts
- Raspberry Pi Zero 2 W (w/ SD card + power of course)
- Serial Pi Zero
- DB-25(M) to DB-9(F) Null Modem Cable
- TRS-80 Model 100
Guide

- Begin with soldering together the Serial Pi Zero and, if not done already, the headers to the Raspberry Pi Zero 2
- Connect the Serial Pi Zero to the Raspberry Pi
- Flash Raspbian to the microSD for the Pi
- Power up the Pi and connect via SSH
- Run
sudo raspi-config
- Select Option 3
Interface Options
- Select I6
Serial Port
- Enable the Login Shell
- Create a file on the Pi named model100 with the below contents
trs100|Radio Shack Model 100:\
:am:bs:xt:\
:co#40:li#8:\
:al=\EL:bl=^G:cd=\EJ:ce=\EK:cl=\EE:cm=\EY%+ %+ :\
:cr=^M:dl=\EM:do=^J:ho=\EH:kb=^H:kd=^_:kl=^]:kr=^\:\
:ku=^^:le=^H:nd=\034:se=\Eq:sf=^J:so=\Ep:up=\EA:\
:ve=\EP:vi=\EQ:
- Run
tic model100
to recompile the Terminal Information Library - On the TRS configure the Terminal with the command
STAT 99N1E
- This will set the Baud rate to 9600
- Set the bit size to 8
- Set the number of stop bits to 1
- Disable XON/XOFF
- Lastly we need to configure the Raspberry Pi to open a terminal on the serial line. Previously this was done by editing
/etc/inittab
but this will no longer work after Debian moved to systemd. Instead run the below commands - run
systemctl enable serial-getty@ttyS0.service
- run
systemctl edit serial-getty@ttyS0.service
- Add the following where indicated by the file
[Service]
ExecStart=
ExecStart=-/sbin/agetty9600 %I trs100
- Connect up the serial ports of the two devices and reboot the pi
If everything went well you should be greeted with a login prompt.
Conclusion and Further Work
At this point, you are mostly good to go with some major caveats. You’ll likely immediately notice that color data is being sent over instead of being filtered out by the termcap. There’s likely a way to improve this file so that this does not happen but honestly, I barely understand how it works.
Additionally, if you want to use both the Bluetooth/WiFi and the serial line you’ll be forced into using the mini UART device on the pi. This device has a smaller FIFO buffer than the main PL011 controller which can sometimes cause characters to drop out at higher baud rates. I haven’t seen that in my testing but that is why I have this set to run at 9600 baud instead of the max of 19200.
Ultimately, I am happy with how this works right now. Nothing is funnier than getting a machine that was never even patched for Y2K connecting to the active Internet even if it is through an intermediary.
Leave a Reply