Daily Archives: June 13, 2011

Emulating the TRS-80

As time permits for the next little while I’m going to be exploring some of the works produced for the TRS-80, the most popular platform of the very early home-computer era. For anyone whose interest is piqued by any of what will follow, I thought I’d offer some hints on getting your own TRS-80 up and running via emulation.

The most popular and publicized emulator as I write this seems to be TRS-32 by Matthew Reed. It’s certainly the slickest and most polished that I’ve come across. In addition to being Windows only, however, it also has some problems running under 64-bit Windows 7: it hangs for up to a full minute before displaying file dialogs. And since it’s a closed-source application, I can’t try to fix it.

I’ve therefore been using a much more obscure emulator, SDLTRS, which not only runs properly on my Windows machine but also has versions for the Mac and for Linux. The MESS project also includes an emulated TRS-80 that works very well, but getting that up and running will take a bit more effort. And there have been a number of other emulators released in years past, but I believe most of these are obsolete now in one way or another. David Keil’s emulators, for instance, want to bang the hardware of their host platform directly, and so are subject to some limitations when running on more recent Windows variants that disallow that sort of thing.

Whatever emulator you end up choosing, you’ll also need the TRS-80 ROMs. These are still under copyright to Radio Shack, and not distributed with most emulators. I’m going to take the chance that Radio Shack no longer thinks or cares about them and host them here. (If I learn otherwise, I’ll of course have to take them down.) Included in the zip file are ROMs for both the original BASIC authored by Steve Leininger (“level1.rom”) and the much more usable Microsoft BASIC that Radio Shack released in 1978 (“level2.rom”).

If you should have any problems getting an emulator working, feel free to contact me and I’ll try to help out.

Update, June 17, 2011:

Well, SDLTRS isn’t working out for me that well, and you guys apparently aren’t too thrilled with it either. Its cassette management seems hopelessly bugged, amongst quite a number of other small niggles. So, I’ve decided to do what I’d been hoping to avoid, and make The Official Digital Antiquarian TRS-80 Emulator the one that’s included in the MESS Project. This emulator can be a right bastard to get set up and running, and it’s certainly got its fair share of quirks, but it’s the most complete and usable TRS-80 emulator I’ve found. So, MESS it is. Bear with me and I’ll try to get you going as painlessly as possible.

Download the latest version of MESS from the Mess home page. Stick the whole thing in a single folder somewhere. (I believe Linux users will have to compile it to get an executable.)

Next, download this little TRS-80 add-on kit I’ve created for you. Unzip it into the same directory where you put the rest of MESS, making sure your decompression program unpacks the full folder structure. In addition to a “mess.ini” file, it will create two folders, “roms” and “sta.” The “roms” folder contains the TRS-80 Level 1 and Level 2 ROMs, which are stored under MESS in a somewhat different format than under most emulators. You won’t need to mess with this folder, unless you decide to emulate more systems using MESS in the future. The “sta” folder is where your saved states will go. More on that in just a moment.

To get your TRS-80 running, you need to open a command prompt in the root directory of your MESS installation and type “messpp trs80” for the Level 1 BASIC TRS-80, or “messpp trs80l2” for Level 2 BASIC. (All of the resources I provide on this blog will be for the latter.) Note that I’m running the Windows MESS; it’s possible that the executable will have a slightly different name under another OS.

When I look at a work for this blog, I’ll provide a way for you to also have a look on the emulator, should you wish. Mostly I’ll distribute state files, as this seems the simplest approach on this platform. However, MESS is a bit buggy in handling these — well, okay, quite buggy. If you try to “Save State As…” while running the emulator, you’ll probably crash it. Likewise if you try to load a state from the menu. You can only save a state by doing a simple “Save State” from the menu, which will place it under a default name in the “sta/trs80” or “sta/trs80l2” directory. And you can load a state only from the command line.

Let’s say you want to bring up the Eliza program I am currently nattering on about as of this writing. You would place the state file I provided on the blog, “eliza.sta,” in the “sta/trs80l2” directory. Then you would start the emulator with “messpp trs80l2 -state eliza.” (Note that you do not include the “.sta” suffix.)