What is a terminal anyway?

- 5 mins read

Project: RIT-V300 Terminal


It’s been a little while since I updated on the state of the RIT-V300 terminal project, work has not stopped though. In the previous entry I’d managed to successfully get a Raspberry Pi to output a PAL signal to my CRT, did some work to make the Pi boot faster and optimise the display the best I could, on the one hand it felt like the finish line for this project was pretty close, but after spending some more time working on it and trying to make the “feel” right, I was never truly happy with the results, so this post is going to be less of a technical deep dive and log of what I did and a more of a record of the mental path I’ve taken that’s leading my choices moving forwards.

Nostalgia

I’ve been a long time fan and patron of CuriousMarc, his YouTube channel really scratches a particular itch for me, Marc and his cohort exemplify what I’d call a true hacker spirit, they show real appreciation of history and have a wealth of knowledge. I came across the channel at the start of their adventures with the Apollo Guidance Computer, and as someone with a passion for both spaceflight history and computing, that whole series had me glued, the engineers that built the machines that landed humans on the moon managed to achieve so much with so little (relatively speaking).

For me personally, I feel like to some degree that kind of ingenuity has been lost, or at least the sliding window of technological innovation has moved on. More often than not solutions to problems turn to whatever is the quickest and easiest to implement and not necessarily what is the most elegant or appropriate. In my professional career I often joke about how each time you build a web frontend application the entire landscape has changed and now there are even more abstractions on top of abstractions than the last time, people meme about the size of node_modules, and it’s not uncommon to see simple single page websites where there are thousands of NPM modules installed.

With technology constantly moving so fast, there is absolutely a cognitive burden involved with things like remembering how to write HTML etc. so it’s easy to see why you may take the easier one click solution, I know that I’ve been guilty of it and I know a lot of other developers are too, which is how we end up with these bizarrely long dependency chains in the first place.

With the proliferation of generative AI this is a trend that’s accelerating faster than ever, avoid that cognitive burden and have spicy autocomplete take a stab at it for you. I think my general apathy towards this trend has had me looking back at “simpler times” when there was a certain elegance and ingenuity, the aforementioned Apollo Guidance Computer had a clock speed of 1MHz and we landed people on another celestial body with it, flash forward to 2025 and my bedroom light switch genuinely has a 240Mhz quad core processor and needs firmware updates to patch out CVEs, and it’s less reliable at it’s role of turning the lights on than I’d get by simply jamming a nail into the exposed wires. Granted there’s a certain level of acceptable jank that you can forgive of a light switch but is absolutely not acceptable when human lives are on the line.

I understand this is very ‘old man yells at cloud’, but I suppose for me it feels like when people take a weekend away foraging, or watch those primitive tech videos on YouTube where someone builds a mud hut with their bare hands, there’s a certain appeal to reverting back to simpler times.

What on earth are you talking about?

I think the reason that my terminal didn’t feel right to me, was because I had taken that path of least resistance, I understand modern Linux very well so it was a quick route to getting something working, but it’s not a terminal. When I started out this project I knew that I wanted a legitimate green phosphor cathode ray tube because I wanted the feel to be correct, but running a modern Linux distribution is the antithesis of that goal.

So, what is a terminal?

In my original entry about this project I talked about the real world analogues for what the RIT-V300 would be and noted that the Unified Operating System looked a lot like VAX/VMS, but I think I missed one key detail, the terminal is a dumb terminal, VAX/VMS (or Unified Operating System in universe) was running on a computer that was elsewhere, the terminal is just the end user device used to connect to a remote computer, such as the below VAX 11/780, the thing actually running VAX/VMS.

Changing course

This is a long way of saying that, I’m taking the Raspberry Pi out of my terminal. The RIT-V300 terminal should be a terminal, so it will have a serial connection and connect to a remote computer.

I spent some time in the past trying to create that “typing” effect you see in game when loading pages, while working on this project I came across a video by Usagi Electric where he was using a Data General Nova and I had this moment of clarity as I saw the characters being printed on the screen one by one, the typing effect we see in game is just a consequence of the low data rate, I don’t know why this didn’t occur to me sooner. I tested this briefly by opening a serial terminal on my desktop and piping a file to it at 1200 baud and this is exactly the effect you see in game. So why try fake it, I can just connect my terminal to a computer at 1200 baud, it doesn’t get more real than that.

There are a few inconsistencies I’ve yet to reconcile, the in game terminal for example has a holotape deck, which does not gel with it being a true dumb terminal, we’ll have the introduce our own interpretations in these cases. Perhaps the holotape is more like an evolution of the punched paper tape on old Teletypes. These are all things I’ll cross down the road when we create this thing for real, stay tuned.