This is a virtual DEC PDP-1 emulated in HTML5/JavaScript running the original code of "Spacewar!", the earliest known digital screen game. This is essentially the same emulation as the one found at www.masswerk.at/spacewar/, but here wrapped in an alternate UI.
Spacewar! was conceived in 1961 by Martin Graetz, Stephen Russell, and Wayne Wiitanen. It was first realized on the PDP-1 in 1962 by Stephen Russell, Peter Samson, Dan Edwards, and Martin Graetz, together with Alan Kotok, Steve Piner, and Robert A Saunders. – Spacewar! is in the public domain, but this credit paragraph must accompany all distributed versions of the program.
This implementation by Norbert Landsteiner, www.masswerk.at, 2012–2016.
The emulator is based on code by Barry Silverman, Brian Silverman, and Vadim Gerasimov. The emulation was substantially extended to support additional instructions and auxilary hardware. Especially the shift/rotate instructions and the arithmetics were rewritten and now include an emulation of the automatic hardware multiply/divide option. Further, cycle counts were added for accurate timing and frame rates. Some importance was put in the recreation of the appearance of the original CRT display and the unique experience conveyed by it. Moreover, a splash-screen was added, rendering original character definitions from 1964.
For further information and credits, for more programs and emulation options, as well as for a prensentation closer to the original experience, see the main page, www.masswerk.at/spacewar/.
Spacewar is game for two human players engaging in the epic battle of two spaceships, the Wedge and the Needle. Please mind that the spaceships have just a limited supply of torpedoes and fuel. Moreover, the ships are subject to the gravity exerted by the central gravitational star (also known as the Sun). It is stricktly recommended to not fight gravity, but rather use it instead as an aid in fighting the opponent. A well known pattern for this is the so called "CBS Opening Maneuver", where the ships are turned perpendicularly to the gravitational star in the center and orbits are optained by giving thrust for a few seconds.
This emulations features Spacewar! in three original versions and in an additional bonus feature (see the pop-up menu at the upper right):
This is the earliest known version of Spacewar! and represents the game as presented at the MIT Science Open House in May 1962 to an amazed public. This is also the very version of the game Peter Samson's "Expensive Planetarium" (stars by prs for s/w 2b, 3/13/62) was written for, a program-in-the-program depicting the moving stars of the night sky in a cyndrical segement between
Moreover the game includes the original hyperspace patch by Martin Graetz, featuring the "Minskytron hyperspace signature" (named after Marvin Minsky's Tri-Pos Display), said to be caused by "a local distortion of space-time resulting in a warp-induced photonic stress emission." (J.M. Graetz, The Origin of Spacewar.) As opposed to later versions, it features exactly 3 jumps to hyperspace per player.
Finally, the game also includes an augmented version of the auto-restart patch: While the core program provides only a single game of Spacewar! and has to be restarted for another one, this patch adds a facillity for continous gameplay. The version of the auto-restart patch included here is a carefully extended and newly assembled version of the original code recovered from disassembly (N.L., March 2016). The modification fixes an edge condition where two motionless, or nearly motionless, spaceships keep colliding in an infinite loop. (The extended patch adds 50 microseconds of runtime in normal operations, which are compensated by the emulation environment. Thus, the game may be still experienced as if running the original code.)
This one may be regarded as the standard version of Spacewar!, since it represents the game in its final state as far as its original authors were involved. All later versions were building on this code, as devised by Steve Russell.
Spacewar! 3.1 introduces a new hyperspace routine, stripping the original animation. Now there is a chance of the ship breaking on reentry, increasing with every jump to hyperspace. Moreover, a tiny bright spot will disclose the exact position of reentry to a careful observer of the screen. Firing a torpedo into this spot, will cause the ship to explode while still hidden in hyperspace.
This is the final and latest known version of the original MIT-Spacewar!. It features revised computations of gravity for use with the automatic hardware multiply/divide option of the PDP-1 (originally introduced with Spacewar 4.0 by ddp, D.D. "Monty" Preonas, Feb 2, 1963). This version also features a visual score display, prepared by Peter Samson as a separate patch to the game. (Scores are shown after each game, and only when the related switch on the lower right is activated. If the scores switch is deactivated when resuming from the on-screen score display, all scores are reset to zero.) This is also the score display that may be seen in the version of Spacewar! running on the restored PDP-1 at the Computer History Museum (CHM) in Mountain View, CA.
The following programs are not authentic ones, but new code devised by me, Norbert Landsteiner:
This is a reconstruction of Spacewar! in the making, based on J.M. Graetz's account in "The Origin of Spacewar", the oral history interview of Steve Russell, and quotes in "Spacewar – Fanatic Life and Symbolic Death Among the Computer Bums" by Stewart Brand.
The intention of the recontruction is to show what the original core program MAY have looked like in a state before any of the additions by the "Hackers" were applied. Mind that this reconstruction is entirely speculative and any resemblance to the real program would be rather accidental.
The code is derived from the source code of Spacewar! 2B with the following changes applied:
• No gravity (optional gravitational star).
• Ships are drawn using a slower outline interpreter (as compared to the outline compiler by Dan Edwards).
• A random-generated field of uniform stars is used for a static background.
• Spaceship rotation is by angular momentum ("rocket thrusters") only.
• No hyperspace nor other patches are applied.
All constants, like accelerations, are as in Spacewar! 2B, but — with respect to the slower outline interpreter — may have been different. (The observed pace of the program results from the runtime of the outline interpreter and the constants used to determine the acceleration of spaceships and torpedoes.) However, the overall performance is, while a bit slower, not that much different from Spacewar! 2B in a similar configuration (which has to serve a more costly implementation of the background starfield).
Provided we are not too far off with this piece of experimental software archeology, we may observe that this is an entirely different game where the spaceships are apparently of a different scale. It's much more like maneuvering heavy battleships than the agile space corvettes of later versions, being all about foresight, anticipation and planning. What may become understandable in this simulation is the need for a background to provide some positional markers (esp. for assessing trajectories), and also the want for hyperspace to escape collisions that seem to be else unavoidable by the sole means of conventional maneuvers.
Please mind that this is not an original game, but new code prepared by me, Norbert Landsteiner, in 2016.
This is my own tour de force on Spacewar!: Like the version seen at the CHM, it is based on Spacewar! 4.1/4.2 (dfw, 20/22 Feb 1963). It highlights some of the features that I was able to unearth while engaging in a thorough investigation of the source code of Spacewar! and its various versions (compare the series of writings under the title "Inside Spacewar!"):
• A comeback of the "Minskytron hyperspace signature" of Spacewar! 2B, but this time in connection with the standard hyperspace routine as introduced with Spacewar! 3.1.
• A visual score display, much like the one of the scorer patch for Spacewar! 4.8, but including some visual effects of an earlier on-screen score display to be found in Spacewar! 4.2 and 4.3 by D.D. "Monty" Preonas (ddp, 11 May 1963 and 17 May 1963).
• A special mode to be activated by sense switch 2, featuring a polar view with the Needle fixed to the center. This is based on the rather enigmatic "Twin Star Mode" (my naming) found in Spacewar! 4.3, but here including some minor fixes to show this feature as originally intended.
Please mind that this is not an original game, but new code prepared by me, Norbert Landsteiner, in 2015.
All programs running in the emulated hardware were written in the "Macro" assembler for the PDP-1. The programs are loaded from digitized paper tape images into the virtual machine by the means of an emulated paper tape reader (in the case of Spacewar! 2B from multiple tapes, including patches) and then executed in the emulation environment.
The code was retrieved from public archives as available at bitsavers.org (also mirrored at textfiles.com), for Spacewar! 2B as images of the binary tapes "spaceWar_SA-5.bin", "hyperspace85.bin" (Hyperspace VIci, JMG, 2 May 1962), and "spacewAutoRestartPatch.bin" (here included in extended form based on its disassembly). Spacewar! 3.1 is loaded from a digital image of a binary paper tape "spacewar3.1_24-sep-62.bin". Spacewar! 4.8 was newly assembled in February 2014 from original sources to include the scorer patch (which is available in source code only). The sources used were "spacewar4.8part1_engl.txt", "spacewar4.8part2_engl.txt", and "spacewar4.8_scorer.txt".
The source code used to assemble the experimental reconstruction of Spacewar! 1 is available here.
Finally, Spacewar! 2015 is a new program and was genuinly assembled into a binary paper tape image in March 2015.
Links to the various files are to be found at the main page, www.masswerk.at/spacewar/.
— Have fun! —