A month or two back, I was joking about with some folks on an IRC channel. We got to talking about retro things on the intertubes, which isn’t a stretch given the general topic of the channel. Eventually, the topic of MUDs came up. Now I used to run a MUD myself so it piqued my interest.

First, I looked around hard to see if I could find the old source code for that MUD I used to run. Alas, one two many hard drive moves before the era of terabyte plus hard drives for less than a C-note means that unless I somehow get instanely lucky and find a burned CD somewhere or somebody out there has the source on their hard drive, the source code for AugMUD (the MUD I used to run) is long lost in the great bitbucket in the sky. But I didn’t let that stop me, for I remembered that AugMUD was based on the CircleMUD codebase.

The first thing I did was download the version AugMUD was based on and discovered that it doesn’t build on a modern system. I looked at a newer version and found that it was all cluttered up with portability cruft. I wasn’t happy with either option. Fortunately, I have a decade and change more experience with C programming since then and I had this brilliant notion. I thought to myself, “I can write a MUD!”

I cranked up my text editor and set my programmer-fu loose on it. In relatively short order, I had a function communication framework. Then, using the CircleMUD code base as a guide (since I wanted the general CircleMUD feel), I rapidly fleshed out the system until I had a playerable game. I even managed to build a tool to import data files intended for CircleMUDs and convert the areas that came with CircleMUD 2.2. Then, finally, just around Christmas, I completed the last showstopping missing feature (magic). That meant the game was now playable.

Since then, I’ve done various updates, expansions, and renovations to the world, but it has remained playable. So with that, I am happy to say to anyone who remembers the old days of text based multiplayer dungeons or anyone who wants to try one out, NostalgiaMUD is open for business.

You can connect to NostalgiaMUD on port 4000 at (This link might work if you’re lucky: telnet:// You will need some sort of terminal program that supports the telnet protocol, or, if you want the heyday experience, a MUD client. Anyway, feel free to drop in and check it out.

Edit 2016-01-19: There’s a web site at now.

Remember the Hampsters?

I was poking around in my old bookmarks today and I ran across a link to a site hosting a copy of the old site, circa 1997. That got me feeling somewhat nostalgic so I let it run for a few minutes. Then it occurred to me that this icon of fads was in danger. I mean, sure, you can find the pieces of it all over the place but how many folks have the original page largely unmodified? So I grabbed a copy of the site from my bookmarked link and set up my own classic Hampsterdance mirror.

NOTE: I cannot be held responsible if the above link makes your ears bleed or otherwise causes inconvenience.

Coco Project

I started a while back writing an assembler for 6809 and 6309 CPUs. While there are lots of decent assemblers for those CPUs available, none of them behave quite the way I want them to. The ones that handle forward references in a useful manner don’t support macros. The ones that support macros and forward references target a specific operating system. Many suffer phasing errors when forward references are present which is, to say the least, annoying. The one I had been using seems to handle most of the situations well enough but it doesn’t have macros and it is not open source so I can’t add them.

The upshot of all of that is that I decided to write my own assembler that will support the features I want. Today, I have it assembling a real source file from one of my projects almost correctly, with only two bytes wrong (on indexed instructions) which will, of course, require debugging. But the rest of the code is completely correct.

There’s still a long way to go to get it to be truly useful, including adding a LOADM file format for the output and implementing all the pseudo operations correctly. But, hey, it produces semi-pretty program listings.