My Kingdom For An ANSI Terminal

It’s been an…interesting…two weeks since I last made a post here. I’ve really thought hard about what I need or expect out of an “everyday retrocomputer”, especially since I want to prove out the software stack before I commit to buying hardware. One thing I can say about modern computers is that they generally allow you to tuck the main part of the machine under your desk, but many retrocomputers don’t offer that kind of space saving. So, I want to know I’m choosing a machine that’s genuinely going to work for me long-term.

Ultimately, I’ve whittled down most of what I really, really need to one thing– a decent ANSI terminal. Give me the old familar 80x24, good cursor control, and preferably at least a tiny bit of text decoration if possible. Using a little Raspberry Pi telnet BBS, that means I can have mail and news through Alpine, a jumping-off point for secure shells for work, web browsing with Lynx or maybe even browsh, etc, etc.

Well, what a shaggy dog story that ANSI terminal has turned into. Pull up a chair.

First up, there’s the telnet program from Marinetti, which doesn’t support ANSI. To be fair, when I contacted the project leads about the possibility that I might add it myself, they were enthusiastic but also said that their telnet client was really just a “little tool” that most people don’t use, and that Spectrum already had a good ANSI terminal emulator.

So, off to grab Spectrum I go. I grab the .2mg hard disk image and pop it into GSPort, which prompty tells me there’s something wrong with the disk. I can’t boot the GS/OS 6.0.4 that’s on it, and I can’t run or copy files from it. Okay. So, the next thing that occurs to me is MAME/MESS, because it has an apple2gs emulator. After downloading it, setting it up, getting a ROM file, etc, I boot it and install Spectrum on my main hard disk image. Generally speaking, MAME tends to be a great go-to for emulator environments; I use it in my retroarcade machine a few times a month. Given that GSPort, while quite functional, shows signs of having been written to be “just enough to work”, and given the fact that I’ve had issues with certain disk image files, I start wondering if maybe Spectrum wouldn’t just run better on MAME anyway. Ah, but there’s a catch– it doesn’t have Uthernet support, so I can’t use Marinetti.

So, I spent the weekend porting GSPort’s Uthernet emulation to MAME in my typical slapdash fashion. At the end of the day…it worked! I’m actually on a side quest to more fully plug the Uthernet emulation into the MAME architecture right now! How very exciting! So, of course, thrilled by having Marinetti and Spectrum both working, it was time to fire up telnet.

I logged into my SDF SDF account, and went to check my mail. I typed pine. The terminal echo back said ine, and of course there is no ine mail client. The hell? After a great deal of poking and experimenting, I found one of the weirdest bugs I’ve ever seen in my life. On MAME’s apple2gs emulator, only when in a Spectrum terminal and nowhere else, I have no p key. The p key works fine in all other UI, and the Marinetti telnet client works just fine. I have even taken everything back to GSPort, since I’ve now installed Spectrum on my main hard disk, and tried using it there. I do get a p key in Spectrum’s terminals there. I asked Spectrum’s author if he had any idea as to why, and he had never heard of such a thing. I’ve tried every obvious thing I can think of; it’s not MAME’s control keys getting in the way (or it’d replicate on GS/OS standard UI), and it’s not a bad character mapping in Spectrum, since I have no character mapping set up. And, moreover this only happens in MAME and not in GSPort. I’m just one person, so given the choice between finding out what’s going on here or working on finishing the port of Uthernet to MAME, I’m going with the latter. I’ve tried using Spectrum on GSPort several times, but it’s just not really stable.

So, this leaves me back where I started. I have a few plans of what to try next, just for the heck of it:

  • GSPlus has a libpcap dependency and tfe directory, so maybe it has Marinetti support and is more stable than GSPort.
  • I punt on using a direct TCP/IP stack and go over to something based on the Super Serial Card and implement a SLIP server on my little RPi BBS.
  • I just buy some real hardware, since it’s clear I’m settling on the Apple IIGS anyway.

But we’ll see. The majority of my attention is necessarily going towards a CS8900A / Uthernet card emulation for MAME, since I’ve learned enough on this journey that I might as well land that feature.

The quest for a stable emulator and ANSI terminal goes on.