Pacific Connection(英語)

Old Software Never Dies....It Just Become Antique

When Walter Toomey was a university student in 1994, he just missed out on UNIX. The operating system had run on his school's DEC PDP-11 minicomputer-before it was replaced with a mainframe. "I heard about this mysterious UNIX thing and I could even walk up to the room where the old PDP-11 was sitting," he recalls. "I just wished I'd been there to see it running." That regret stayed with Toomey even after he got his hands on later UNIX versions. "I always had this desire to see what it was like back in the old days."

Now Toomey knows. The UNIX Heritage Society (, which he founded, has become the Web's largest collection of UNIX distributions from the past. The site has amassed most research versions of the operating system all the way back to binaries for the first version, released in 1971. Toomey has collected most versions that ran on the PDP-11, most of the Berkeley releases, and various versions for platforms from the early 1980s. Past that, public archiving becomes more difficult because the commercial versions are still covered by copyright. That rules out posting early versions of Solaris, for example.

Even so, if you scour the Internet for old software, you will come up with a treasure trove of "antique software": languages, applications, operating systems and games. Some of it is posted illegally, but the copyright holder, long out of business, takes no notice. Other programs are made available online with the blessing of their copyright holder. Lotus, for example, has allowed free downloading of the 1981 version of VisiCalc, the grandfather of today's electronic spreadsheets. It still runs in DOS emulation mode under Windows and is a model of compact programming: just 27,520 bytes. Meanwhile, Symantec gave Dave Winer permission to post ThinkTank and More, two outliner programs that are still useful for organizing thoughts. There are multiple online versions of Pong, the first video game. And there is a parallel movement in which people create new emulators of old computers.

The people working to save, archive and post antique software are largely hobbyists, not academics. The same is true for people who would keep a refrigerator-size PDP minicomputer around the house. I suggested to Toomey that these collectors they have something in common with people who restore antique cars. "Yes, exactly," he says. "They take them out and 'drive' them around once or twice a month, and they feel happy about it. Then they turn them off, and do it again next month. And when it's cold, they turn them on because it keeps the house warm."

If you're looking for a professional antique software archivist, Sellam Ismail may be as close as you'll get. Ismail is curator of software for the Computer History Museum in Mountain View, California. When I first wrote about the museum for Software Design back in early 2003, the museum was housed on a nearby Air Force base. Now, it occupies the sleek ex-headquarters of SGI, keeps regular hours (no appointment necessary) and is a must-see for anyone interested in the history of computing. The museum's current collection goes back to the 1950s. "We have tons of punch cards, literally, as well as paper and magnetic tape," he says. "The software collection takes of up a small room with an adjoining room containing several hundred reel-to-reel magnetic tapes."

Ismail says that the museum is still trying to figure out what kind of software collection it wants to amass. His criteria is broad. "Operating systems are certainly important, especially UNIX and it's early predecessors, as well as early versions of Microsoft operating systems, because of their impact on society." Ismail is interested in early PC applications like VisiCalc, Microsoft's MS-BASIC, the WordStar word processing program and MicroChess from Peter Jennings (, which he believes is the first commercial microcomputer game ever sold-back in 1976. Ismail also wants to preserve earlier "home-grown" software developed before the commercial software industry took off. Some programs are interesting for the algorithms they contain, as is anything that ran on the earliest commercial computers, like the UNIVAC. "Fifty years from now it will be nice to see what that software environment was like."

Ismail notes that some "early" software is still in use. "There are tons of people still using CP/M for practical use. And of course, there are embedded systems running software from the 1970s that do their job just fine, rarely if ever crashing. Replacing them might cost tens of thousands of dollars-which means it's cheaper to repair than replace. Most of the systems that modern society runs on were written in the 1960s and they've just been upgraded and enhanced and ported over the years, in some cases even running on emulation.

The Retrocomputing Museum

A different sensibility (one that might be appreciated by Penn & Teller) informs the online collection at the Retrocomputing Museum, founded by Eric Raymond around 1998. Raymond is author of The Cathedral & the Bazaar, the seminal essay of the open source movement, as well as editor of The New Hacker's Dictionary. To get in the Retrocomputing Museum, a program must not only be old, but in some respect strange. "The museum is dedicated to freaks, jokes and monstrosities," Raymond says. "A program has to strike me as conveying something about the hacker spirit. It has to illustrate some kind of entertaining extreme or encapsulate some interesting piece of history. Preference is given to software which is both historically interesting and gloriously perverse."

Raymond says that, judging from his email, most people perusing the collection are senior programmers-people who have been around for a while. "Some of them remember using some of this stuff." Most, like Raymond, look at programming as a craft with its own history and tradition."

The museum is strong on obscure languages, some of them really obscure. Raymond prefers languages that illustrate techniques that are "really bad ideas." But occasionally, a languages "will show you something that modern languages should be doing, but aren't. For example, MAD [a 1959 language called Michigan Algorithmic Decoder] has some interesting ideas about ways to handle variable dimensional arrays."

The piece de resistance of the collection, as well as the kernel of its beginning, is a language called INTERCAL. "There's an entire subculture, an entire wing of websites devoted to bizarre, intricate, odd computer languages that are basically written as jokes," Raymond says. With the original INTERCAL compiler lost to the ages, Raymond built his own based on the original specs. He did the same for the MAD compiler, completing it last January, "There are a couple programs that are of cultural and historical importance to hackers. One is the Adventure Definition Language compiler, a program that is culturally important to the people who make up the open source movement because a lot of us played Adventure long ago. Even for those who did not, there are phrases and ideas from the game that have permeated the culture." Example: "You are in a maze of twisty little passages, all alike."

Raymond does not collect early UNIX versions "because they aren't grotesque enough." But he obtained an off-site link to Plankalkul, the first ever computer language. "It was designed in the 1940s by a German engineer, Konrad Zeus, who claimed to have built the first digital computer. Unfortunately, he did it for a Nazi." The museum includes COBOL, a language that is still in use, though many argue it should be dead.

The Retrocomputing Museum's collection is far from complete. Raymond, for example, is still on the look out for a language called IPL-V, which was "devised in the 1950s by a couple of early artificial intelligence researchers at Carnegie Mellon University." Indeed, he is interested in machine readable specifications, including scans, for any ancient language. "Please send me that specification and I will put five million bolts through it and make it alive again." You can write him at

Emulators: The Computer History Simulation Project

While not strictly antique software, Bob Supnick's online collection of hardware emulators stems from the same preservationist impulse. Supnick is vice president of engineering at SiCortex, a Boston- company involved with Linux clusters. His interest in emulators began in the late 1960s when he worked for Applied Data Research, which built commercial-grade emulators. He spent most of his career doing hardware development, including running the microprocessor development group at DEC. "Then in 1993 as we were making the transition from the VAX to the Alpha [DEC's RISC chip], one of the researchers, Larry Stewart, pointed out that the DEC's own history was leaving the company. "The early developers were retiring, machines were being thrown out." Stewart told Supnick that he ought to do something about it. "He said that because I'm a history major by training and he knew it would strike a chord."

Supnick went to work. "I wanted to preserve those machines and, particularly, the software that they ran, because I thought they had historical significance and might be worthy of study later on-things like the history of UNIX and the other major operating systems, how timeshare came about, how did computer architecture develop and change, and what that did to the software." Along the way, Supnick noticed that while few people could afford to renovate an old computer, everyone with a PC could run an emulator. "PCs were now fast enough that the emulation provided a realistic environment for these old machines. Now, 10 years since the project started, I can carry around the history of computing, representing more than 20 machines, including full-blown copies of time shared-operating systems like VMX. And the whole thing takes up just a fraction of the hard drive on my laptop.

His first simulator was of the PDP-8, which he wrote in 1993 as part of learning how to program in C. ("Prior to that my programs had mostly been done in VAX microcode. Many people will tell you that C isn't all that different.") He created an emulator that was capable of supporting multiple simulators. The result was SIMH-a core set of libraries and common interface into which can be plugged instructions and I/O emulators. The libraries include simulated tapes, network drives, and terminal multiplexers. "We're adding one for graphics and one that will enable you to take a hard drive off an old machine and interface it to a PC."

The Internet attracted collaborators, people who share Supnick's "affliction." He now works remotely with people who specialize in transcribing old documentation, locating and testing old software, and, like Supnick himself, writing the debugging code. This loose collective of about two dozen people is spread over North America, Europe and Australia. "Recently there's been an upsurge of interest from Russia and other former Soviet Republics where these old machines are more common than here."

The VAX emulator, developed about four years ago, is the first machine the group emulated that is still in active use worldwide-even though the last VAXes were manufactured in the late 1990s. Supnick helped one company transfer an operational weapons system from a VAX to the simulator. As a result, the build time decreased from more than two hours to 14 minutes. "That's a testament not only to how much faster PCs are, but more importantly, how much faster the disks are from the ancient drives we used 20 years ago."

Says Supnick, "For every generation of software developers that is, ignorance of the past recreates the mistakes of the past. For example, very few people understand the art of programming for small memory because, after all, who cares? But at the heart of your 3GHz Pentium 4 there is a 32 KB primary cache with an instructions list-but data lives there too. That's one of only two places where the machine actually runs at speed." Supnick argues that learning how to program that cache is not much different from learning how to program a PDP-8. But there's another reason to care about old software and hardware. "It's just fun. It's the same impulse that gets people to tinker with old cars and renovate World War II aircraft. It's fun tinkering with old stuff that is put together with spit and baling wire under very limited resources. Today, a modern operating system is beyond one person's comprehension. A modern UNIX implementation probably has 10 million lines of code." But with the old code, "you can go under the hood and see exactly how it was done."

Sidebar 1: A conversation with Walter Toomey

Walter Toomey, creator and keeper of the UNIX Preservation Society, is an assistant professor of information systems at Bond University on Australia's Gold Coast, where he teaches a combination of networking, Internet protocols, and "any programming courses they deign to throw at me." I spoke with him from his office by phone on a Monday afternoon where he was sipping his Tuesday morning tea.

What is the attraction for people who come to the site?
It's mostly historical. It mainly caters to those who want to revisit the systems they used when they were a lot younger. What you see is how much sophistication and flexibility the developers get with such a limited amount of RAM. I've got a UNIX with a kernel that is just 16Kb.
Where do they come from?
It's a grapevine sort of thing - they just go "ahhh, I've heard that you've got this archive and would you like a copy of this"-and I usually say yes. Most of it is source code. It's hard to get binaries because most people still have their old source tape lying around, but not many people have archived working backups of their binaries.
When did you actually start archiving on the Internet?
In the early 1990s, someone gave me a copy of the Lion's Commentary on UNIX 6th Edition. John Lions wrote it back in 1977 and used it for teaching operating systems at the University of New South Wales. It was a great read, but I wished I had a working copy so I could see it in action. When UNIX become commercial, AT&T stopped distribution of the book-because it had the whole source code to 6th edition UNIX in it. After that, the book was photocopied many times throughout the 1980s and 1990s, until 1998, when Dennis Ritchie and a few other people convinced whoever owned the copyright to let the book be published properly. Of course, you couldn't get the source code on the Internet because anyone doing it would have their butts sued off. After talking to enough people for about two years, I eventually found someone who was prepared to send me a tape image. That's what got me going.
You put it online?
Not at first. But we lobbied "old SCO" [the pre-Caldera, pre-lawsuit SCO], who at the time had the copyright, to create a hobbyist license-and eventually they did. So for the early PDP-11 versions of UNIX there is now a hobbyist license. It's basically a BSD style copyright. You can put out the source code and anyone can download it. There's not many restrictions on what you can do with it.
You have the most complete, probably only, UNIX archive.
I have the only old UNIX archive, yes.
Is it of interest to collectors, technology historians, or both?
At present, it's at the collector stage. The likelihood of me, or anyone, being able to teach a "history of operating systems" course is really low. Only a very large university like MIT would have a chance.
Bob Supnick has a website devoted in part to emulating PDPs-old machines simulated on new equipment. Your software actually runs on the old hardware.
Actually, I've never owned a PDP. I came that close to buying one but we're talking something the size of a fridge and I was moving around at the time and didn't have the chance to grab it and store it. I'm an emulator guy because I never had the real hardware to play on.
You mentioned that your collection is limited by copyrights.
That's going to be the big problem with all computing history. Copyrights and patents are going to get in the way of releasing old information. But collecting software is important. When "new SCO" claimed that Linux has contained AT&T copyright code, it wasn't difficult for the people to find out whether they were telling. We just peek through our archives and see what we can find. SCO had this presentation of about 10 lines of supposed AT&T code that was in the Linux kernel. We found it was written back in 1973 by Dennis Ritchie and it was based on an algorithm published in 1968 by Donald Knuth. His algorithm and snippet of code had been publicly available since 1968.
Doesn't that point to at least one reason why this stuff is important?
History is always important. You learn from past mistakes. And you also learn how we got from where we were to where we are now.

SIDEBAR 2: Excerpts from the INTERCAL Programming Language Reference Manual

The crown jewel of the Retrocomputing Museum collection, the INTERCAL language ("Compiler Language With No Pronounceable Acronym") was created on May 27, 1972 by Donald Woods-the co-inventor of the classic Adventure game-and James Lyon. Both were then undergraduates. "Our compiler was written in SPITBOL (a compiled version of SNOBOL), and generated SPITBOL code as an intermediate step," recalls Woods in an email exchange. "We represented data as character strings containing only 0's and 1's. Small wonder that a single 16-bit division took over 30 seconds on what was then a top-of-the-line IBM mainframe."

Another INTERCAL weirdness was that each command could be optionally be preceded by the word "please": as in "PLEASE DO" "PLEASE FORGET" "PLEASE INPUT" "PLEASE GIVE UP." Woods says that a nearly undocumented rule was that "you had to use PLEASE at least a certain percentage of the time or your compilation would fail with the error, 'PROGRAMMER IS INSUFFICIENTLY POLITE.' If you used PLEASE too often, however, you'd instead get the error, "PROGRAMMER IS OVERLY POLITE." The one other student who tried using our compiler says he got that error on his first attempt. 'I thought I'd seen every possible error message come out of a computer, but I was wrong,' he said." Programmers can also specify a 0-100 percentage for each command, which determines its probability of actually being executed.

Here are some excerpts from the INTERCAL reference manual:

[INTERCAL] was inspired by one ambition; to have a compiler language which has nothing at all in common with any other major language....For the most part, INTERCAL has remained true to this goal, sharing only the basic elements such as variables, arrays, and the ability to do I/O, and eschewing all conventional operations other than the assignment statement (FORTRAN"=").

INTERCAL's main advantage over other programming languages is its strict simplicity. It has few capabilities, and thus there are few restrictions to be kept in mind. Since it is an exceedingly easy language to learn, one might expect it would be a good language for initiating novice programmers. Perhaps surprising, than, is the fact that it would be more likely to initiate a novice into a search for another line of work. As it turns out, INTERCAL is more useful (which isn't saying much) as a challenge to professional programmers.... Those who doubt this need only refer back to the sample program in section 2.1. This 22-statement program took somewhere from 15 to 30 minutes to write, whereas the same objectives can be achieved by single-statement programs in either SNOBOL...or APL....

The other major importance of INTERCAL lies in its seemingly inexhaustible capacity for amazing one's fellow programmers, confounding programming shop managers, winning friends, and influencing people. It is a well-known and oft-demonstrated fact that a person whose work is incomprehensible is held in high esteem....

The statement DO ABSTAIN FROM ABSTAINING is perfectly valid, as is DO ABSTAIN FROM REINSTATING (although this latter is not usually recommended). However, the statement DO ABSTAIN FROM GIVING UP is not accepted, even though DON'T GIVE UP is.