Inside Spacewar!
A Software Archeological Approach to the First Video Game

Inside Spacewar!

This is a loose series of articles on software archeology dedicated to Spacewar!, the eariest known digital video game*.

The code of Spacewar! 3.1 is fully analyzed (parts 1 – 8) and significant parts of versions 2b (distributed over various episodes) and 4.x (parts 6 and 9) are covered as well, but there's still more to come …

The Episodes

Resources

External Link:

Proof of Concept:

JS-Spacewar 3.1, a genuine port of “Spacewar 3.1, 24 Sept 1962,” to JavaScript.
Meant to verify the code analysis and to illustrate the logic in a modern lingua franca
(also providing the final transformation without which no software archeology would be complete).
See the source code here.

Emulation:

Play the original code of Spacewar! running in an in-browser emulation (JS/HTML5).

Play the original code of Spacewar!, alternate presentation / UI
(same as above, but doesn't mimic the PDP-1: more detailed rendering [125%] and other options)

Play the dual-display version Spacewar! 4.4 running in an in-browser emulation (JS/HTML5).

Assembler code sources related to the articles can be found here.
Maybe of help: A reference of the PDP-1 instructions.

Please mind the font controls floating at the upper right corner of the screen.
Select size and style in order to adjust these pages for personal reading comfort.

About this Project

Let's face it, software has become a part of our cultural heritage. And the first interactive demonstration program addressing a non-technical audience by simulating a virtual environment, which happens to be the earliest known digital video game* at the same time, might serve as a prominent example. But how to deal with it?

On the one hand, there is the preservation of the actual experience, like by restoring and maintaining the original hardware as in the Computer History Museum's PDP-1 Restoration Project, or in emulation. While the first one is as close as you can get in terms of the experience conveyed by the software in its time, emulation is opening up this experience to a broader audience, even, if there may be some trade-offs. (The great feat in preserving and making available historical software and documentation in digitized copies accomplished by Al Kossow's bitsavers.org and by archive.org should not go unnoticed in this context.)

On the other hand, there is a rich tradition of textual analysis, focussing on the aspects of its object as a socio-historical production, which may be providing some deeper insight and may be of help in understanding. Probably, this is only going with some kind of preservation of the experience, like in the tandem of actually watching a movie and reading the film analysis. Given, we would support this position, there's always the question what the text would actually be. Is it the experience conveyed by the technical contraption, is it the software, is it the code in its textual appearance, is it the code as moving numbers? Can we even isolate the software, without discussing the platform it is running on?

Some argument has been made that software could only be comprehended by a stepwise procedure, following it in its very motion. This might even be more true for a software written for a platform that is notoriously demanding self modification in code. While there's some to this argument, this is an approach to encounter the source code as a textual object. An object that is static and in potential motion at the same time. While this might be quite a low level approach, it also provides the means to investigate the code as an object of some “solidity” and conveys a chance of appreciating its expressive qualities at the same time. Last but not least, it's probably the only way to come back from this walk-through with some kind of proof of what we would have found inside.

Let's see, where this journey will take us …

 

*) The term “digital video game” is meant to denote both the first known “interactive visual realtime game for a digital stored-program computer” (seriously, there is no shorter term for this) and its contribution to the more general category of electronic realtime gaming devices (being implemented in software and/or hardware) following since. Moreover, this term is referring not that much to the concrete technical implementation of the hardware driving the display, but more to the relation of the human player(s), the electronic device serving as the platform, the very experience conveyed by the participatory scene exhibited on its screen, and the domain of quick motor reaction and tactical deliberation specific to the genre, as well as to the various implications of this as a cultural entity.

Other definitions:

video game
noun

“a game played by electronically manipulating images produced by a computer program on a television screen or other display screen.”
Oxford Dictionary

“an electronic game in which players control images on a television or computer screen”
Merriam-Webster Dictionary

electronic game, also called computer game or video game, any interactive game operated by computer circuitry. The machines, or “platforms,” on which electronic games are played include general-purpose shared and personal computers, arcade consoles, video consoles connected to home television sets, handheld game machines, mobile devices such as cellular phones, and server-based networks. The term video game can be used to represent the totality of these formats, or it can refer more specifically only to games played on devices with video displays: television and arcade consoles…”
Encyclopedia Britannica

Norbert Landsteiner
Vienna, 2014 – 2015
www.masswerk.at