World’s Worst BASIC?

I’ve heard people claim that the Timex-Sinclair 1000 / Sinclair ZX81 is the worst BASIC programming environment ever. That’s not even close. Borrowing the old Beatles drummer joke, the ZX81 isn’t even the least-capable computer made by Sinclair. The older ZX80 has half the memory and a smaller ROM. You kids were just spoiled by the ZX Spectrum having fancy features like color, a Chiclet keyboard, and sound.

And there’s a BASIC interpreter out there that makes the ZX80 look like a supercomputer.

A “Hello, World!” variant, in Atari BASIC Programming.
(You can see it running here, if the excitement won’t be too much.)

Back in 1979, people were designing all kinds of cool games for the Atari VCS (Atari 2600). This was a hastily-designed (but insanely popular and fun) video game system that was intended to be an upgraded version of Pong. It was designed to implement two player sprites, a missile sprite, static background graphics, and on-screen numeric scores. Famously, it didn’t even have a video buffer, so each line of video had to be drawn in real time by the program. (There’s a great book — Racing The Beam — that talks all about it.) It’s really a glorified, generalized Pong implementation. The tricks developers had to do in order to create the games I loved as kids don’t lose a bit of the magic when you start to understand how they’re done. Instead, you understand just how creative the developers had to be.

Despite the overall system being designed to handle games roughly as complex as Atari Combat (at best), creative programmers were able to use system features off-label to make the system do amazing things. The Atari graphics system provided for two player sprites, two scoreboards, and a “missile” sprite, in addition to a rudimentary background graphics system. (If you’re familiar with Atari Combat, that’s the sort of game that was envisioned.)

Warren Robinett’s “Adventure” was one of the first examples that really showed what the platform could do, despite all of its design limitations. By creative use of the background and sprites, and triggering the loading of different screens when the player moved offscreen, a multi-room Adventure was possible, with dragons, swords, chalices, magnets, bridges, and the world’s most annoying bat. (Seriously — Rhindle the Red Dragon is just misunderstood, but that thieving bat has to go!)

Adventure was one of two cartridges Robinett wrote while working at Atari. The other was BASIC Programming. This isn’t so much a practical IDE for creating programs as it is a proof that with sufficient creativity and determination, a talented programmer could bludgeon the 2600 into doing just about anything. Even the much-maligned Atari port of Pac-Man was an impressive feat of programming, given the platform. To actually implement a BASIC interpreter is straight-up mad scientist level stuff.

Still, given the environment, Atari 2600 BASIC is necessarily limited. While you can technically have up to 26 variables, you probably couldn’t use all of them at the same time, due to the 63-character memory limit for programs(!) Variables are two-digit unsigned BCD integers, storing values of 0-99. There’s support for graphics (moving white and red dots around a blue field) and sound (playing one of eight notes). Input is actually BASIC Programming’s strong point, since it is able to handle four channels of analog input — two channels each of horizontal and vertical. (Presumably, this is done with four paddle controllers.)

BASIC Programming for the Atari 2600 is probably the single worst BASIC implementation I’ve ever come across, in more than four decades of programming every BASIC implementation I could get my hands on, from the Timex-Sinclair 1000 to the Tandy PC-6 and Model 100 to the IBM PC to 1980s smartwatches programmable by a custom app.

But it’s also probably the most impressive BASIC implementation, too — and no doubt inspired lots more games that the 2600 really shouldn’t have been able to play.

This entry was posted in BASIC, Coding, Nostalgia, Reviews, Toys. Bookmark the permalink.

Leave a Reply