[email protected]
Engineering

GOTO 1985

What we can learn from recreating old software

By

Transcribing 35-year-old computer programs is a meditative, maddening exploration of constraints. It’s also an almost complete waste of time. Right up my alley.

In the early days of personal computing, most machines had a BASIC interpreter built in, and users were invited (expected!) to create their own small programs in addition to buying disks or cartridges. Because a BASIC program’s all plaintext, books and magazines could just print the listing, and a user could carefully copy the program to their own machine (and even save it, if they had a storage accessory).

Browse the archives of an early-80s computing magazine like Compute! or Creative Computing and along with the disk utilities and tech demos, you’ll find listings for programs not unlike apps you might download today: games (so many games!), word processors, recipe managers, address books, quiz builders. Computers are good at the kind of things computers are good at.

Actually getting those program listings in a usable state, though, was a fraught and inscrutable process. Just look at the guide Compute! included:

If a single number in any one DATA statement is mistyped, your machine could “lock up,” or “crash.” The keyboard, break key, and RESET (or STOP) keys may all seem “dead,” and the screen may go blank.

And that happens! Typing big arbitrary blocks is hard — and who knows if the person laying out the magazine transcribed it correctly, even!

Once you’re typo-free, though, these programs work, and yield the same small satisfaction that any successful programming task does. Many of them are still useful, too. The web and app stores have fact-finding and communication covered, but there’s a surprising amount of doing stuff that’s best done on your own machine.

Or your own very old machine

I still can’t hang with the fact that “ is FCTN-P

If you’re lucky enough to have a working TI-99/4A like I do, you can hook it right up to your big ol’ 4K HDR TV, flip it on, and type away. If you have made more traditional life choices and don’t still have your first computer, however, online emulators and interpreters are the best place to start. I’ve used Joshua Bell’s Applesoft BASIC in Javascript.

Using an emulator means you can type up the listing in your everyday text editor (with syntax highlighting!) rather than pecking lines out one at a time on an old keyboard and reflexively reaching for a nonexistent “Save” key combo every five seconds. Fun, right? There’s a whole world of small programs to peck through in your downtime. Read, type, check your work, run, double check, fix typos, run again.

Finding the programs

The Internet Archive has a wealth of old computing magazines, tidily scanned and categorized. Thrift store bookshelves seem to be shrinking, but they’ll still cough up a gem here and there, like the book I’m working through these days, Celestial BASIC: Astronomy on Your Computer by Eric Burgess.

Celestial BASIC is a collection of programs to calculate the positions of astral bodies, convert units of measurement, and make the skies friendlier for amateur astronomers. You can mostly replicate the results by putting together the right query in Wolfram Alpha, but some of these tools aren’t easily found online. Here’s the listing for ECLIP, a program to show the umbral lunar eclipses for a given year:

https://gist.github.com/droob/009ab646282cf4545e25f9b4c560a570

If you’re a programmer, some things may stand out.

  • Those variable names sure are… terse, huh? Applesoft BASIC allows longer variable names, but only the first two characters are used for assignment and comparison. 😑
  • Decrementing an integer in a loop is used as a timer.
  • A lot of code is just there to manually format the UI.
  • Control flow is handled in conditionals with GOTO statements.

Despite all that, everything works, and it’s a grokkable 90 lines of code. When you’re focused on best practices and elegance by day, it’s liberating to copy out a program with a very different set of concerns after hours. You can take a lot of inspiration from the directness and pragmatism of a small program designed for a tightly constrained machine.

Which is all to say

Using an underpowered old computer is empowering, in the way that making your own pasta for the first time is (“But this is just a pile of flour! That’s all it takes?”). New tools might make your work easier, or let you complete it faster, but your old tools aren’t keeping you from making things. No matter how old or simple or busted the tool, somebody out there is creating useful, lasting things with it.

Drew Bell is an engineer at Postlight.

Story published on Jan 10, 2018.