The Retrocomputing Museum

The Retrocomputing Museum

The Retrocomputing Museum is dedicated to programs that induce sensations that hover somewhere between nostalgia and nausea -- the freaks, jokes, and fossils of computing history. Our exhibits include many languages, some machine emulators, and a few games.

Most are living history -- environments that were once important, but are now merely antiques. A few never previously existed except as thought experiments or pranks. Most, we hope, convey the hacker spirit -- and if not that, then at least a hint of what life was like back when programmers were real men and sheep were nervous.

The curators of the Museum are Eric S. Raymond <esr@snark.thyrsus.com> and John Cowan <cowan@locke.ccil.org>. See Eric's offer in the file CHARTER for more about the kinds of things we build and collect.

If you've visited before, check out the what's new and coming soon sections. You, too can contribute to the Museum! If you think something belongs here, tell us about it. Take a look at our want list of things we're looking for. Finally, you can browse a list of related resources.

What's New

We now have a pre-alpha implementation of Turingol (front end only).

Languages

All these packages include documentation and example programs.

ADL

Adventure Definition Language. Ross Cunniff & Tim Brengle, 1987. An adventure language, semi-object-oriented with LISP-like syntax. A superset of the infamous DDL (Dungeon Definition Language). Available for Unix, MS-DOS, Amiga and Acorn. You can find other adventure-writing languages at ftp://ftp.gmd.de/if-archive/programming.

algol-60

An interpreter for Algol-60, the common ancestor of C, Pascal, Algol-68, Modula, Ada, and most other conventional languages that aren't BASIC, FORTRAN, or COBOL. Correctly described by Edsger Dijkstra (one of its co-designers) as "a great improvement on many of its successors". This distribution includes TeX source for the Algol 60 Report.

ADVSYS

ADVenture SYStem, another adventure-writing system by David Betz, 1986. The language describes it as "LISP-like and object-oriented". We carry it mainly for comparison with ADL. You can find other adventure-writing languages at ftp://ftp.gmd.de/if-archives/programming.

apl-11

A very old and very weird APL implementation. Said to contain substantial amounts of code written by Ken Thompson, one of UNIX's coinventors.

bloop

The BlooP and FlooP languages from Chapter XIII of Goedel, Escher, Bach: An Eternal Golden Braid by Douglas R. Hofstadter. BlooP mechanizes primitive-recursive functions, FlooP mechanizes general-recursive ones. Thoroughly primitive otherwise. Implemented as a Perl interpreter which generates Perl and promptly interprets it (how Hofstadterian!), by John Cowan .

BASIC

BASIC lives -- unfortunately. This version implements most of the notoriously bad ANSI X3.113-1987 standard for Full Basic. As the Computer Contradictionary suucinctly observes, "Shit with icing".

BCPL

The design of C was based on an earlier language, B, which was an interpretive typeless subset of BCPL. The bcpl package enables you to bootstap up a BCPL compiler on any machine with a working C. We also carry a B-to-C translator.

cfoogol

A compiler for a very, very tiny subset of Algol (no procedures, even). More a demonstration on how to write a recursive descent parser than anything else. Generates stupid but portable C code.

cupl-1.1

Another hideous old design, CUPL -- Cornell University Programming Language. It looks something like a really archaic BASIC with linear-algebra builtins. This 1.1 version now also interprets and documents CUPL's immediate precdecessor, CORC (Cornell Computing Language). I (esr) reverse-engineered it from the original manuals, written in 1966 and 1962; the language-description parts of the manuals are included in the docs. If you want to know what programming was like before interactive time-sharing, build this and find out. Requires either lex or flex, and bison or yacc.

focal

A very archaic educational language, a sibling of (and closely resembling) MUMPS.

intercal

A computer language designed by Don Woods and James Lyons in 1972. INTERCAL is purposely different from all other computer languages in all ways but one; it is purely a written language, being totally unspeakable. Said by the authors to stand for "Computer Language With No Pronounceable Acronym". INTERCAL devotees hang out on the alt.lang.intercal newsgroup.

kvikkalkul

A very odd little language, probably a joke but alleged to have been used for embedded-systems control on Swedish nuclear submarines in the 1950s. Notable for its probabilistic-jump instruction.

logo

The language that gave us "turtle graphics" -- intended (in the approximate words of one coauthor) for 5-year-old children and less educable beings, such as corporate executives. Rather advanced for 1968; it was really a sort of stealth LISP with pretty displays.

(Note: we don't carry this locally -- we don't know the state of its documentation, or whether it includes examples.)

mixal

An implementation of the MIX pseudoassembler used for algorithm description in Donald E. Knuth's The Art Of Computer Programming, vol I. This preliminary release doesn't do floating point and has little documentation as yet, but it works well enough to be used in conjunction with the book. Also as binary RPM or source RPM.

orthogonal

Finally, a truly orthogonal language! This unique design, inspired by a speculative thread on alt.lang.intercal in September 1994, is an interpreter for a simple language with two-dimensional control structures...your control flow can go forwards, backwards, or sideways (or even diagonally!).

pilot

The reference implementation for IEEE standard PILOT, a horrible language designed in 1962 on IBM mainframes that a group of ancient academics was still insane enough to be using in 1990 --- and not only using but standardizing. I (esr) wrote this implementation as a weekend hack.

plankalkuel

HTMLized version of the CACM paper describing Zuse's Plankalkuel design. Note: the diagrams and some of the glyphs in this paper are GIF images. We want to do a Plankalkuel implementation.

PL/M

Once upon a time in the early 1960s, there was a monster called PL/1 that was IBM's attempt to create The Final Language. Ten years later Gary Kildall wrote a compiler for a tiny subset he called PL/M as a development tool for 8080 micros (and wrote CP/M as a demonstration project for the language). This program is a PL/M-to-C translator by Robert Ankeney.

Smalltalk

Starting in 1972, Adele Goldberg and other researchers at XEROX PARC began experiments with personal interactive computing that were to tremendously influence many later environments, especially including the Macintosh. The language they designed for development in their icons-windows-and-mice environment was Smalltalk. We offer an implementation here.

snobol4

One of the most interesting, original, and influential languages of the 1960s, SNOBOL was designed around string-processing, pattern-matching, and textual transformation. Like many other one-idea languages (TRAC, APL) it was extremely powerful and elegant within its problem domain, but weak outside it (there also seems to be a law that such languages must have obscure syntax). It strongly influenced UNIX regular expression notation. Docs and example programs are bundled with the so-called `vanilla' distribution. (Note: we don't keep this locally.) (You may also want to check out the Icon home page.)

teco

Yes, it's the Editor From Hell...the infamous TECO, bane of lusers and tricky, unforgiving tool of master hackers. Build this to find out (a) what we lived with before Emacs, and (b) how expressive line noise can be. This is Sander Van Malsen's ANSIfied version of TECO for Ultrix. For other versions of TECO, see the TECO archive at ftp://usc.edu/pub/teco.

trac

An extremely funky computer language based entirely on macro processing. There is an interpreter written in Perl, and a text file documenting the language and the implementation. This implementation is by John Cowan .

Turingol, a language for programming Turing machines. Invented by Donald Knuth to demonstrate some technical points in compiler design (featured the first construction of a nontrivial attribute grammar). See "Semantics of Context-Free Languages", D. Knuth, Math Sys Thy 2:127-145 (1975).

(This is presently just a front end. The code generator remains to be written.)

Emulators

oisc

You've heard of RISC, Reduced Instruction Set Computers? Well, here is the concept taken to its logical extreme -- an emulator for a computer with just one (1) instruction (Subtract and Branch if Negative)! Sample programs in the OISC machine language are included.

urisc

There have been several demonstration emulators for machine architectures with single instructions. This is another. Examples of its unique assembly language are included.

PDP/8

The DEC PDP/8 was the world's first minicomputer, and the best-selling computer in the world until the advent of the Apple II. However, we don't maintain PDP-8 software here, because there is an excellent archive at sunsite.unc.edu in the `/pub/academic/computer-science/history/pdp8' directory; various emulators are available in the `emulators' subdirectory. On a modern RISC box, an emulator can run faster than the ancient TTL hardware it is emulating!

Games

wumpus

A faithful clone of the classic Hunt The Wumpus game, exactly as it appeared in 1972 on the Dartmouth Time-Sharing System. Also includes an original but strangely similar game, superhack.

Coming Soon to the Museum

Magnus Olson is working on a B-to-C compiler.

Jonathan Chandross is building a better FOCAL.

Kirk Hayes , co-author of the plm-parse parser and symbol-table manager for PL/M-386, is working to complete a better PL/M-386-to-C source translator based on it.

Lars Thomas Hansen is working on a Simula-67 compiler in C.

A group that would prefer to remain anonymous is working on an Algol-68-to-C compiler (written in Algol-68, but using C as a target language so that it can be used to generate a port for any C host), to be available in mid-1995.

Possible Future Projects

plankalkuel (Eric S. Raymond)

An implementation of the very first high-level computer language ever, Zuse's Plankalkuel for the Z-3. I'll write this if I get enough docs on the language to do it, and Matthias Neeracher is working on that.

ignorance (?)

The Museum has an incomplete BLISS-to-C compiler; a substantial amount of BLISS source code is available for use as test code. We're looking for someone to finish it who has BLISS and/or VMS experience. This package does include a full specification aimed at compiler implementors.

Things We Are Especially Looking For

The one thing we weren't able to recover when the first version of the Museum was lost was the JCL shell. If you know where a copy lives, please tell us.

Implementations, or softcopy specifications, for the following languages:

Plankalkuel, IPL-V, RPG, JOVIAL, CORAL, JOSS, POP-2 or POP-10, 1401 Autocoder, MAD, NEAT/3.

Sample programs to add to the distributions for the following languages:

FOCAL, ALGOL-60, JCL, TECO.

Related Resources

The Free Compilers list

indexes compilers, interpreters, and language-related tools available free and in source on the Internet. You can download or search it from here.

The Language List

is a historically-oriented list of over 2300 languages which also includes pointers to sources. You can download or search it from here.

You can also use anonymous FTP from rtfm.mit.edu in the `/usenet/comp.lang.misc' directory to obtain either of these lists.

The AI Attic

is an archive of classic AI programs and games including Eliza, Adventure, and many others. Also, implementations of AI languages including XLISP and many others. The Attic is an FTP archive located at: {bongo,ftp}.cc.utexas.edu:pub/AI_ATTIC.

The Jargon File

is a collection of Internet slang, folklore, and history. The entry page also offers you the option to download it in one of several formats.

Eric's Software

The collection of publicly available software that I wrote and/or maintain. There is some overlap with this collection, of course.

The Beer List

This is a collection of implementations of a trivial program (one to print out the lyrics of "99 Bottles Of Beer On The Wall") in lots of different languages. A very interesting chrestomathy.

Eniac On A Chip

Perhaps the ultimate retrocomputing-in-hardware project! Don't miss the nifty picture of the test chip.
Eric S. Raymond <esr@snark.thyrsus.com>