Famicom Family BASIC

I love BASIC! I don’t make a secret of it. It was the product, even before DOS, that launched Microsoft. It was invented to be the language to bring programming to the masses, and, for a short time, it fulfilled that function. (These days, if you want to learn coding, I suggest Python. Not only is it a lot more capable and modern, but you can actually get a job writing it.)

Used to be if you had a new computer you wanted families to buy, you had to have a version of BASIC to ship with it. The Apple II had two, one written by Steve Wozniak himself. Right off the top of my head, computer systems with BASIC, go! Altair, Apple II, Commodore Pet, Vic-20, 64, 128, Plus-4, 16, Atari 8-bit, TRS-80, MS-DOS, Windows (Visual BASIC carried the torch for many years), and, most improbably, the Atari VCS/2600, in its BASIC Programming cartridge, an effectively useless cart for its stated purpose that’s nonetheless an excellent hack. The machine has 128 bytes of RAM, but it can still run BASIC, by jove.

The Famicom has a version of BASIC too, coming in at the end of the language’s heyday. Over on the Peertube instance diode.zone, user RE:Enthused did a two-part introduction to it that may be of interested to people who still think in terms of FOR/NEXT loops.

Let’s look at Family Basic on the Famicom, Part 1 (8 minutes) and Part 2 (17 minutes).

Reimplementations of the Contents of BASIC Computer Games

When we talk about the old days in computers, there’s easily several eras we could be talking about. There are people who consider the Wii/PS3 era to be the Ancient Times, for after all they were both released in 2006, 17 years ago. They’re almost old enough to drive!

I consider the “modern era” of gaming to have begun with the Dreamcast/Playstation 2/Gamecube era, for in my view that was when, with skilled art design and coding, and modest requirements, one could reasonably generate a realistic scene. Take a look at Crazy Taxi and Soulcalibur on the Dreamcast, both have graphics that seem a little simple now but easily hold up, while the Nintendo 64/Playstation generation has to cut too many corners with their 3D graphics generally.

You can from there go back through the generations: the 16-bit era, the NES/SMS era, then the Atari VCS/Intellivision/Odyssey2/Colecovision era. There’s also the era of home microcomputers, Apple IIs, Commodore 64s and Atari 8-bits, among others, a time that really has no comparison before or since.

But even that wasn’t the beginning of computer gaming. Know, oh prince, that between the years when the oceans drank Atari and the gleaming manufacturers, there was an age undreamed of, when shining timeshare systems lay spread across the world like Big Blue mantles beneath the stars. That was when computing may well have not even meant using a monitor, but instead entering data through a kind of typewriter, with your text appearing on paper, and the machine’s output would also appear on that paper. While that was a time where computing was still new and expensive, and people rented time on big mainframe machines with, at the time, ludicrous resources. The IBM System/370 Model 145 had 500 whole kilobytes of memory, and 255 megabytes of disk space. Such a machine would be partitioned out to many users, who each had accounts on it, and would be served by the processor concurrently. And they liked it!

Two covers for BASIC Computer Games, the common later “Microcomputer Edition” and an earlier one.

And before even teletype machines, there were punchcard systems, and the oscilloscope screen on which Tennis For Two was played, but for this post that’s going back a little too far.

This was the time in which David Ahl’s book, BASIC Computer Games*, appeared on store shelves. It was first published in 1973. When I was younger I had a copy of it, given to me by a relative, but it was already a relic by then. I once spotted it on a store shelf, gamely offered for sale despite it being probably around 1991 at the time, a good lifespan in a genre of book nowadays considered disposable. Remember, Pong debuted at Al Capp’s Bar in 1972**. There was a thriving culture of computer gaming even before the first commercial video games were sold.

(* Note 1: While it’s often forgotten now, BASIC is properly written with capital letters. It’s an acronym that stands for Beginner’s All-purpose Symbolic Instruction Code. That’s not as tortured as, say, “GNU’s Not Unix.”)

(** Note 2: Pong wasn’t the first commercial video game. That was likely the Odyssey, or Nutting Associates’ Computer Space. I don’t want to get into it here. This comment is here largely to satisfy my own obsessive/compulsiveness.)

Super Star Trek. The text of the book indicates that versions of the Star Trek text game existed since “the late sixties.” Remember, the show aired in the late sixties. People were playing Star Trek on computers while Star Trek was airing on television in first broadcast.

BASIC Computer Games, and its sequels More BASIC Computer Games and Big Computer Games, record, as program listings, a couple hundred old computer games and other entertainments much as they existed at the time, which makes it an incredibly important book for software preservation and computer historians, I’d think anyway. It has listings for a version of the “Star Trek” text game that was popular at the time, and that even once inspired a vectorscan arcade game from Sega, as well as a good number of other amusements.

I say game design doesn’t go obsolete, but it’s true that current expectations of what computer programs should do, let alone games, are not met well by the programs in the books. Still, they can be fun to interact with, for a while at least, and a project exists on Github to update all of the programs to a variety of current (I refuse to say modern) programming languages.

You can also obtain the software in .bas files compatible with Vintage BASIC, a reimplementation of classic Microsoft BASIC for current OSes including Windows, Mac and Linux.

PDF of Basic Computer Games (annarchive.com)

Compilation of programs from BASIC Computer Games converted to current languages (github)

Vision BASIC for the Commodore 64

The Commodore 64 was, for its time, quite a wonder, an inexpensive home computer with 64K of RAM and excellent for its time graphics and sound capabilities. Sadly, it came with one of the more limited versions of Microsoft BASIC out there.

Microsoft BASIC had its strengths, but many of them were not a good match for its hardware. The C64 had no commands to take advantage of any of its terrific features. To do nearly anything on the machine besides PRINTing and manipulating data, you had to refer to a small number of cryptic-yet-essential commands: POKE for putting values into arbitrary memory addresses, PEEK for reading values out of them, READ and DATA to read in lists of numbers representing machine language routines, and SYS to activate them.

And getting the values to do those things required obtaining and poring over manuals and the venerable C64 Programmer’s Reference Guide. Even then, Microsoft BASIC was notably slow, especially when doing work with numbers, due to its dogged insistence of converting all values, including integers, into floating point before doing any math on them. So while BASIC supported integers, which required less memory to store, actually slowed the machine down due to the need to convert to and from floating point whenever an operation needed to be performed on them. This doesn’t even begin to get into the many inefficiencies of being an interpreted language.

Vision BASIC, an upcoming commercial compiled language for the Commodore 64, looks to remedy many of these faults. The above video is a nearly 40-minute explainer and demonstration of the system. It requires the purchase of a memory expansion unit in order to be used on a physical machine, but it can produce executable code that can be run on a stock C64 as it came out of the box.

It’s not free, and at $59 for the basic package it may seem a little high for a system for developing software on a 40-year-old computer, but that price includes the software on floppy disk and a USB drive. It’s certainly capable, and runs much faster than many other compiled languages on the system. It’s definitely something to look into for people looking to make games on the system without digging deep into assembly, and if you have a desire to do that it has a built-in assembler for producing in-line machine code too! It is an intriguing new option for Commodore development.

Commodore Basic 2.0 for Other Systems

Say what you will about Commodore BASIC 2.0, the built-in programming language and makeshift shell for the Commodore 64, written by Microsoft employees and descending from code written by Bill Gates himself, it’s certainly, um, basic. Nearly everything that takes advantage of that machine’s graphics or sound features involves POKEing values into memory at various locations, requiring a programmer to memorize a long list of important numbers.

Because it doesn’t interface with the system’s unique features to any great extent, it’s a very generic version of BASIC. But this means it can be ported to other systems without tremendous effort. Fancy-pants commands don’t have to be converted to another architecture’s norms, because there aren’t any! And lots of systems used the instruction set and general capabilities of the MOS 6502, upon which the Commodore 64 is based, so now we have versions of its BASIC that work on the Nintendo Entertainment System and the Atari 800. They’re both based off of Project 64, an annotated disassembly of the C64’s BASIC and Kernal ROM code.

The NES port should be able to run on actual hardware, but you’ll need the Family Keyboard that was made to work with the Famicom’s own official BASIC to use it, which was only released in Japan.

By the way, the reason that I write BASIC in all-caps is, it’s an acronym! It stands for Beginners’ All-purpose Symbolic Instruction Code.