Recovering Software for the Whirlwind Computer

Author: Guy Fedorkow
Affiliation: Independent Scholar

This web page includes publications and background material for work on recovery of software written in the 1950s for the Whirlwind computer at MIT.


Recovering Software for the Whirlwind Computer, published in IEEE Annals of the History of Computing, Vol 43, number 1 (Jan-Mar 2021).

Article Preprint: Recovering Software for the Whirlwind Computer v6d

Published Article: Recovering Software for the Whirlwind Computer

Draft Notes on Track-While-Scan Program Recovery: WW-Track-While-Scan-Draft-Notes , video demo: demo-mp4

Blog Articles

There are a number of blog articles on Whirlwind posted at CHM

The Whirlwind Computer at CHM

Jingle Bits: Auditory Maintenance, Whirlwind Holiday Songs, and the Dawn of Computer Music

Gambling on Whirlwind: How the US Navy Spent $3M and got a Computer Game

(Try playing Blackjack against Whirlwind: Play)


There are many sources for additional information on the Whirlwind project.

A key source for dates and project information on Whirlwind is Project Whirlwind: The History of A Pioneer Computer. By Kent C. Redmond and Thomas M. Smith. Bedford, Mass., Digital Press

The critical document for understanding the Whirlwind instruction set is the Programming Manual, 2M-0277 at


Many online documents from the Whirlwind program itself can be found in the following archives. All links mentioned were valid as of July 2020.

Whirlwind, the Physical Artifact



Example Code

The code used to generate the Bounce program flow graph is given at the following link. This code is bit-for-bit identical to the binary image found on tape 102663328_fb131-0-2690_new_decoders_3of4.7ch, but given in source code format with modern labels and comments added.

While labels, assembler directives and comments are modern, the instruction format adheres to the functional model outlined in the 1958 Programming Manual,

The flow graph showing the bounce program as run on the first three screen-refresh cycles is given at Bounce-Flow-Graph.svg

Flow graphs such as this are extracted from simulation runs; the simulator keeps track of which instructions execute, how many times, and where branches go. Due to the common practice of modifying branch addresses dynamically, static analysis won’t tell us much. But operation of the program can be understood much more easily by watching how it actually flows.

Each bubble in the flow graph represents a single code block, i.e., sequential instructions containing no conditional branches, that have one entry and one exit point. The bubble gives the label associated with the start of the block (if any) and the first and last instructions of the block. Branches between blocks are represented by arrows with a number showing how many times the branch was taken, allowing the analyst to easily see ‘hot spots’ where the program spends the most time.

(c) Guy Fedorkow, Feb 2021