David Donachie's Website

Skip Navigation

Waxing Lyrical about Hypercard

Apple's late lamented Hypercard (lamented by me at least) was my first real brush with computer programming. It certainly led me to become a programmer, and it probably had a lot to do with my later interest in MUSHes and MUDs (which had some coding similarities), which in turn is how I met my wife — so you could say it was moderately influential on my life.

What was Hypercard?

Hypercard was what you'd now call an app development tool, but in black and white bitmaps on old Apple Macs in the 1980s.

If that sounds dry, it wasn't. Hypercard appeared, for free with every Mac, in an era when websites were unknown, and writing software for PCs and (especially) Macs, was a full-time undertaking with a massive learning curve. In that era of gated programming, Hypercard let you create your own software with a few clicks of a mouse, and share it with other people. Hypercard stacks came free on the CDs on the fronts of magazines. You could subscribe to user groups that would send collections of stacks around on floppy disk. Hypercard scripts appeared in fanzines, in much the same way that BASIC scripts had been listed in the gaming mags of the Commodore and Spectrum era.

Grimmoire Hypercard Stack
You want a picture, here's one of my stacks

How well I remember the joy of getting a new Hypercard disk in the post from one of the members of my fan group. I even sent out a few of my own, if I remember rightly (it was 30 years ago). Yes yes, you get all that joy now on the Internet for a fraction of the work, but that was then.

Hypercard also became a commercial tool of choice. If you bought yourself an electronic encyclopedia, catalogue, or educational program for the Mac in the late 80s and early 90s it probably came in the form of a Hypercard stack.

How did it work?

Hypercard let you create stacks. Stacks were a series of cards (screens) each of which had numerous objects (fields, buttons, menus) and a graphical layer on which you could draw those previously-mentioned bitmap pictures. (You could add pictures to buttons too). Cards also shared one or more backgrounds which were cross-card objects (that could contain other cross-card objects). Every object then had a script, written in Hypertalk — as did the card, background, and stack itself — which allowed you to control what happened when the object was clicked, written on, navigated too, and so forth.

Hypercard was (without using that langauge) an object-based message-passing architecture. Each event triggered messages that were sent to the frontmost appropriate object (like keydown, mouseup, click, etc.) and then passed through handlers. Each object's script was in essence a language object full of methods, though there was no inheritance or anything like that ... if you wanted behaviour that applied to multiple objects you put it on the card, or the background, or the stack.

Hypertalk was also "natural language". You didn't say "x = y" you said "put y into x". You could also say "select words 1 thru 10 of paragraph 2 of field 10". Concise it wasn't But it was usually a pleasure to read.

Here's an example of some Hypertalk code

on openCard
  global location
  put 1 into location
end openCard

on closecard
  hide btn "guide1"
  pass closeCard
end closecard

Games, Grimoire and more

Hypercard had a long association with games — famously Myst was written in Hypercard — but I started out with more prosaic informational stacks of the sort I suspect the designers intended.

I wrote a stack to organise my Dad's record collection. I wrote a stack to teach you the most common constellations. I wrote a stack that was a guide to archeological sites on Orkney, complete with 1 bit raster versions of photographs of the antiquities (I was very proud of that one).

Later I branched out.

I wrote an agonisingly slow simulation of wandering herbivores and the carnivores that preyed on them, as a very simple sort of AI. The plants would grow, the herbivores would graze (or starve), and the carnivores would hunt them down and eat them.

I wrote a space-invaders-esque shooting game where you controlled an astronaut (with a keyboard) trying to shoot things before they shot him. I remember that the speed of the game was "as fast as the computer could manage". When I got a new computer the game got harder.

The pinnacle of my Hypercard career was probably Grimoire (the stack in the illustration above). Grimoire was an interactive adventure which saw you exploring a small and mysterious spherical world through the medium of a book (the grimoire of the title). Each card was a single spread of the book, with text on the left and a picture on the right.

Grimmoire Hypercard Stack
Another illustration from Grimoire

It wasn't just text and images. There were puzzles hidden throughout the game. Things to click on, codes to enter, devices to play with. In many ways it operated in the same mode as Myst, but without the special colour image plugins that they developed.

Grimoire was my most successful stack. It was the one people requested copies of, and the one I sent out on floppy disks to others. Later it was available on my website (when I had one).

So what happened to Hypercard?

Hypertalk (and Hypercard) are no longer with us. It had a long and complex history (which is pretty well explained on its wikipedia page so I won't repeat it here) that saw it hived off to Claris, converted into a paid application, and eventually lose its market share entirely.

For a while it lived on as Supercard — a compatible program that added colour (Hypercard itself was black and white till the end) — and in another universe LiveCode, another app creation platform still available today.

It had a greater legacy, however — many of Hypercard's concepts became part of the World Wide Web that we know today. Its navigational model inspired Robert Cailliau when he was creating the first web browser, and many features of Hypertalk passed into Javascript (and also into Adobe's ActionScript family of languages inside Flash, which also drew elements from Hypercard).

So in a certain sense, we are all still using Hypercard.