August 5, 2026

101 BASIC Computer Games: Redux

This is a follow-up to my post “101 BASIC Computer Games for Ben Eater’s 6502

In that post, I talked about porting games from David Ahl’s classic, 1973, book “101 BASIC Computer Games“, which contains 101 games, and a few other programs, in various minicomputer and mainframe BASIC dialects, so they could be run, without changes on a Ben Eater 6502 breadboard computer using early (mid-1970s) MS-BASIC (the 6 digit floating point version).

When I made that post, I was about 1/3rd of the way through porting the programs.

And at the time, I didn’t know if all could be usefully ported.

I do know now, however.

And the answer is …

YES.

Yes, they can!

I have finished porting ALL of the games, and other programs, from the original book. You can open the relevant .bas file from my repository, paste it into MS-BASIC via your serial-terminal, and once it has finished transferring, type RUN, and then just play the game.

My favorite is SPCWAR.BAS1, which is, of course, itself a port of Mike Mayfield’s original “Star Trek” game:

System Requirements & Compatibility

All testing was done with the stock, complete, Ben Eater 6502 build, with its default memory map (16KB RAM, 32K ROM), running the “master” branch of his MS-BASIC build, on a 80×25 serial terminal (hardware or software; I use software).

Beyond that …

Any machine (or emulator) capable of running the mid-1970s MS-BASIC (6-decimal floating-point version), with 16KB of RAM and 15,359 bytes free when BASIC has initialized should be fine.

Fidelity & Liberties

To the greatest extent possible, I tried to keep the code as close to the original listing as I could. Where changes were necessary, and with a handful exceptions they were, I tried to keep them as minimal as possible.

The original post talks about the general classes of modifications needed.

As I got further into porting, and on to the more complicated/advanced programs, I found situations not covered by that post. For example, canam.bas made use of multi-terminal control commands for simultaneous multi-player support using multiple physical terminal (details here). Another facet was any kind of reliance on file systems and file storage; which had to be simulated or eliminated as our target version of MS-BASIC has no standard support for this.

With those types of programs I had to take a number of liberties; either completely dropping features, replacing multi-player with multiple computer-controlled players, in-memory data systems in place of file systems, and so on.

So, the “ports” run the gamut from “original code runs 100% as-is” to “almost a complete re-write”. BUT … more than 90% are firmly in the “fix the OCR/transcription issues and make the minor syntatic and not-always minor dialect accommodations.

One particularly common dialectical difference was how FOR/NEXT loops are executed.

Many, even, most BASICs in the book do not execute the code within a FOR/NEXT loop if the exit criteria is already met. MS-BASIC, and variants there of, as well as most of-the-era “home computer” BASIC dialects, will, on the other hand, ALWAYS execute the loop at least once.

This broke many programs; and the typical symptoms where either an infinite loop or out-of-memory errors.

Similarly, more sophisticated BASICs on “bigger” systems, would cleanly handle stack/loop clean-up when arbitrarily exiting a FOR/NEXT loop (i.e., via a GOTO) without meeting the exit criteria. MS-BASIC does not like this sort of thing at all, and it seeds a lurking horror that, at some point, catches up to the running program and either throws “next without for” or “out of memory” errors.

The Details

The details for what OCR/transcription changes were made, what was involved in porting, and any other notes on differences between my ported version, and the original, can be found in the .md files that accompany each .bas file.

Some of these are more detailed/involved than others.

AI Usage (or lack thereof)

The joy, for me, in retro-computing and programming is about nostalgia. Porting these programs was, while at times frustrating (as all programming efforts can be), very fulfilling. It was a transport back-in-time. It was an experience. And carried some most enjoyable “learnings” (learning is my very favorite thing to do).

Turning it over to AI would have robbed me of that.

Thus, while it was not an explicitly stated “goal” to avoid using AI here, if that had been the “plan” I’d just as soon not have bothered, so there is very little of it.

At the same time, I’m not a masochist.

AI was used in correcting the OCR/transcriptions and porting code for, I think, just five of these programs. The companion “.md” files call out where this was done everywhere it was done. And in every case, I’d done substantial work on the corrections and porting myself already. I pretty much only invoked AI (OpenAI Codex in this case, on Sol 5.6) when I’d already spent more time than made any sense on a specific problem and wasn’t making any progress.

Also, there were a few cases (again, all explicitly called out in the companion “.md” files) where I got so engrossed in trying to fix a gnarly/subtle issue that I forgot to make notes on what I was actually correcting or fixing. So, to complete the details for the “.md” files, I had AI analyze and narrate the diffs to create those sections.

The “Bunny Bonus” (aka “The Missing Listing”)

The original book does not seem to have included a listing for this program, which is supposed to print a picture of the “Playboy Bunny”.

Since I achieved my goal here, I felt I should “put this right”.

I consider this an entirely self-indulgent “celebration” of the culmination of a, for me, fun and rewarding little project.

I consider this an entirely self-indulgent “celebration” of the culmination of a, for me, fun and rewarding little project.

So, here you go … bunny.bas.

The original picture in the book (on the left) shows a “Playboy Bunny” constructed purely of the characters in “BUNNY” repeated over and over. The characters aren’t random.

The printout is what you’d get if you printed 49 lines of “BUNNYBUNNYBUNNYBUNNY … BUNNYBUNNY” all the way across one sheet of paper, and then cut-out a stencil to reveal the image you wanted to show.

  1. If you are running a build with 16KB of RAM, you’ll need to run the cut-down port (which just omits the in-game instructions) I created, SPCWAR-16K.BAS, as the original SPCWAR.BAS does not fit into 16KB. ↩︎