Software Gems: The Computer History Museum Historical Source Code Series
The roots of the modern personal computer
Depending on your age, your first computer might have been an Apple II, a Radio Shack TRS-80, an IBM PC, an Apple Macintosh, or another of the early personal computers. If you missed these early machines the first time around, perhaps you have seen them in the Personal Computer section of the Revolution exhibit at the Computer History Museum.
I’m old enough that the first computer I used was a large mainframe in a distant building that I never actually saw. I was a senior in high school (1966-1967) taking a class that included FORTRAN IV programming. We punched our programs into 80-column IBM cards, and several weeks later we received our printouts. That was strong motivation to think carefully and double-check everything!
Even so, the experience was so compelling that I spent my career in computer software, starting with an intern job that spring. Microprocessor chips began to appear in 1971, and my friends and I began dreaming of the day we could afford our own computer. In the meantime I continued using batch-processing mainframes, and eventually timesharing systems.
In the early 1970s, hobbyists and other “early adopters” used the new microprocessors to build homebrew computers. Some began selling kits and even fully-assembled computers, such as the Altair 8800, IMSAI 8080, and Processor Technology Sol-20. These computers had tiny memories and only a cassette tape or floppy disk drive for storage. The user sometimes interacted with them via front-panel lights and switches, or perhaps with a keyboard, and a TV as a display. Each personal computer was isolated, with no way to network to other computers. Despite their limitations, these early machines excited the imagination of many. Len Shustek described some of this activity in a previous @CHM post, The Homebrew Computer Club 2013 Reunion.
My first opportunity to use a personal computer arose differently. In 1970 the Xerox Corporation, which had become very successful in the 1960s with its 914 copier and related products, established the Palo Alto Research Center (PARC). The goals were to develop an “architecture of information” and lay the groundwork for future electronic office products. A 1972 Rolling Stone magazine article by Stewart Brand, with photos by Annie Leibovitz, provided an early look at the computer research scene at PARC, the Stanford AI Lab, and other Bay Area locations.
By the fall of 1976 PARC’s research was far enough along that a Xerox product group started to design products based on their prototypes. That was when I interviewed for a job, and was invited to try out an Alto personal computer.
It’s hard to explain just how advanced the Alto seemed at the time. It had a full-page graphics display with 606 by 808 black & white pixels, a keyboard, a mouse, a fairly powerful processor with 128 KBytes of main memory, a hard drive with a 2.5 MByte removable cartridge, and a 2.94 Mbit/sec Ethernet interface. The Ethernet connected Altos together into a local network that included a high-performance laser printer, an Alto-based file server with hundreds of megabytes of capacity, and gateways to local networks at other Xerox offices and to the ARPANET.
The Alto software included Bravo, the first WYSIWYG (What You See Is What You Get) word processor, Markup, a pixel-oriented drawing editor, and Draw, a vector-oriented drawing editor. That fall day I had my first taste of the world that we now take for granted: the ability to create and modify digital documents containing text and graphics, store them, and transmit them “at blinding electronic speed”. I took the job, and for the next four years I used an Alto to develop some of the software for Xerox’s Star office automation system.
In 2014 we take the personal computer and the Internet for granted. Most homes and offices have desktop or laptop computers, and almost all of them are attached to the Internet via WiFi or Ethernet. Our mobile devices — smartphones and tablets — let us continuously participate in the digital world. The pioneering Alto project that began in 1972 invented or refined many of the fundamental hardware and software ideas upon which our modern devices are based, including raster displays, mouse pointing devices, direct-manipulation user interfaces, windows and menus, and Ethernet.
The first Altos were built as research prototypes. Ultimately about 1500 of them were built and deployed throughout the Xerox Corporation, as well as at universities and other sites. But this groundbreaking machine was never sold as a product; its legacy is as inspiration for what followed.
The Alto software included four different programming environments: BCPL, Mesa, Smalltalk, and Lisp. There was a single-user operating system (compatibly reimplemented in each of the four programming environments), a set of utility programs, application programs such as the Bravo word processor, the Markup, Draw, and Sil drawing programs, and the Laurel email program. Altos were also interfaced to specialized hardware such as large disk drives and laser print engines; these Altos then typically ran server software and allowed that specialized hardware to be shared by a community of users.
Ethernet was developed for the Alto system. The networking software, called Pup (for PARC Universal Packet), anticipated the Internet by allowing multiple Ethernet local area networks to be interconnected by leased phone lines, radio links, and the ARPANET (which at this time connected a handful of computers at ARPA research centers). The Alto had an indirect but large influence on the mass-market personal computer hardware and software of the 1980s and beyond.
With the permission of the Palo Alto Research Center, the Computer History Museum is pleased to make available, for non-commercial use only, snapshots of Alto source code, executables, documentation, font files, and other files from 1975 to 1987. The files are organized by the original server on which they resided at PARC (Filene, Ibis, Indigo, Io, Ivy, and Pixel), plus two additional groupings (_cd6_ and _cd8_) that correspond to files that were restored from other archive tapes. For each server, there are one or more top-level directories containing subdirectories and files. Each file is generally presented two ways: in a viewable format (e.g., HTML, PDF), and in its original format (referred to as “raw” in the directory listings).
We invite you to explore the archive itself. Alternately, you may prefer a walk-through of the archive describing what is there and who wrote the various programs. More detail about the archive (provenance, naming conventions, file types, etc.) is available here.
We celebrate the creators: Bob Taylor inspired PARC to invent the Alto, Chuck Thacker designed its hardware, Butler Lampson architected its software, Alan Kay envisioned its use as a personal dynamic medium, and many people at PARC and throughout the Xerox Corporation contributed to fulfill the vision.
We thank those whose efforts allowed us to preserve and exhibit these historic files: Tim Diebert wrote the program that archived IFS files to 9-track tape, James Foote wrote the program that transferred those 9-track tapes to 8mm tape cartridges, and Dan Swinehart and others secured PARC’s permission to release these files.
I thank Len Shustek for encouraging me to take on the project that led to this post (restoring 35-year old archive tape images to a form viewable with a modern web browser), and for suggesting improvements to this blog post.
Finally, I thank Al Kossow, who has been collecting Alto hardware, software, and documentation since the 1980s. Before becoming CHM software curator, he worked under NDA at PARC to transfer the 8mm tape cartridges to DVD, and most importantly to sift through the archive to find everything Alto-related, which he put on a CD that sat at PARC for years until the PARC-CHM agreement was completed. Without Al’s efforts, this software might never have seen the light of day.
Historical Source Code Releases @CHM
- MacPaint and QuickDraw Source Code, July 18, 2010
- APL Programming Language Source Code, October 10, 2012
- Adobe Photoshop Source Code, February 13, 2013
- Apple II DOS Source Code, November 12, 2013
- Microsoft MS-DOS Early Source Code, March 25, 2014
- Microsoft Word for Windows Version 1.1a Source Code, March 25, 2014
- Early Digital Research CP/M Source Code, October 1, 2014
- Xerox Alto Source Code, October 21, 2014
- Electronic Arts DeluxePaint Early Source Code, July 22, 2015