The Everyday Retrocomputing Project has been sliding off my mental radar for the past few months. The reasons are pretty obvious…there’s the typical madness of working for a living, and then add to that the weird monasic life of being on intense COVID lockdown, and then there’s the holidays, the mental slowdown winter brings, and, oh yeah, my home country turning into an utter political nightmare.
But, as so often happens, I turn to my hobby projects when I feel work burnout creeping in and threatening to suck the last ounce of passion out of me. Like a defense mechanism, a voice says “Hey…you ported Uthernet support to MAME last year. Remember how good that felt? Let’s go get obsessed again.” And I think “Heh. Yeah, well, maybe I could make sure I really did try every possible telnet option for the Apple iigs.”
I’m glad I did that, because I’m pretty sure I’ve found at least an interim solution that keeps the Everyday Retrocomputing Project alive. I’m talking about Telnet65. Part of the ip65 project, itself part of the cc65 project, this is actually a PRODOS utility and works on a variety of early Apple computers. It does, however, have a couple of things going for it. It’s quite fast because it uses the standard Apple text terminal rather than a graphical terminal. Its reliance on PRODOS and older Apple features makes it very solid on emulators. And it’s got pretty good ANSI vt100 terminal emulation, so alpine, lynx (or links), and ncurses-based utilities work on it.
Oh, and its p key works.
So, aaaanyway, if you want to try this out, some things to keep in mind:
- ip65 requires ca65, part of cc65. So, you need to fetch and build cc65 and make sure that ca65 is on your PATH
- ip65 also has a dependency on
AppleCommander. You need to have a
copy of the
ac.jar
file in theapps
directory, and it must be calledac.jar
. Obviously, you’ll also need Java. - telnet65 doesn’t use Marinetti (it doesn’t use GSOS at all) and instead uses
its own TCP/IP stack. This means that your configurations from Marinetti won’t
be carried over. It also means that much of its configuration behavior is
hard-coded. To change your config, you have to change the code. For example, I
prefer a fixed IP assignment of
192.168.128.58
rather than rely on DHCP. To achieve that in telnet65, I had to:- Go to the file
apps/telnet65.s
and comment out the following lines of code:jsr dhcp_init bcc :+ jsr print_error jmp error_exit
- Go to the file
ip65/config.s
and manually set my IP address, netmask, and gateway.
- Go to the file
But, after this, I’ve got a reliable, fast, and good telnet client. I’ve got access to mail via alipne, a browser via links, and Mastodon via tui. It’s definitely a start.
I’ll still be hunting for better, or maybe writing better, though, because there are some limitations that I don’t find super comfortable long-term. The big one is telnet65 doesn’t support vt100 bold or underline. The latter’s not a big deal, but the former is used heavily in ncurses, so it makes things a bit…janky. I can’t help but wonder if maybe mapping the bold mode to the reverse or even the flashing text modes might end up helping a little.
That’s an adveture for future me, I reckon.