Michael Parker - Toys



Update: The Symbolics is for sale.

I don't use it as much lately as I used to, and the wife wants to put the computer room to other uses. It's a Symbolics XL1200 with 8MW RAM, late-style monochrome display, 1 800mb ESDI drive currently configured as boot and paging drive, 4gb bootable SCSI holding main filesystem, and CD-ROM drive, all Symbolics software (Joshua, Statice, CLOS, CLIM, C, X-Windows, FTP, NFS etc). No paper manuals (fortunately! -- they fill a wall), but it's all online. $3000 obo.

NeXT and Symbolics workstations snuggling happily

The NeXT Station has a 33mhz 68040 and 32 MB RAM, and was built in I believe 1991. It is running NeXTStep 3.3, which is a direct ancestor to Mac OSX. Unlike OSX, it not only runs on such limited hardware, but is even snappy. Although NeXTStep is a dialect of Unix, the GUI is built on Display Postscript, not X Windows. Sadly, the dominance of X has pretty much killed this concept. The system software is written in Objective-C, which is a cross between Smalltalk and C, and a much better OO language than C++ (and I've worked on multi-million-line C++ projects, so I know whereof I speak). Given the close relationship between NeXTStep and Mac OSX, I suspect that large chunks of current mac software is probably also written in Objective-C. The OS is object oriented to a degree that Windows XP wishes it were. And this system was available in 1988.

The Symbolics has a 40mhz Ivory processor and 8 MW RAM, and also dates to the very early 90's. It is a word- addressed stack machine with 5-byte words, where each word consists of 32 bits of data and 8 bits of type information. This type information is used rigorously by the processor to enforce program safety. The closest equivalent nowadays would be the JVM, except that this machine does it all in hardware. So trying to treat an integer as if it were a pointer will cause an exception. Walking off the end of a string or array will cause an exception. Although commonly called a "Lisp Machine" this is a misnomer, since it also runs Fortran, Pascal, Ada, Prolog, C, and ML quite happily.

This particular XL1200 runs Genera 8.3. The software is written in a variety of lisp dialects, with Zetalisp and ANSI Common Lisp being the most common. Contrary to claims that lisp isn't suitable for low-level work, all the low-level code on this machine is written in lisp. Garbage collector, device drivers, everything. Except for X Windows, which AFAICT is basically the MIT code compiled with the Symbolics C compiler. I'm told that the Ivory processor discovered an amusing number of bugs in the MIT X Windows code during the porting process.

The Genera operating system is object-oriented to a degree that even the NeXTStation can't aspire. Everything on the screen is an active object; you can do a directory listing on the console, and each filename knows what it is and what you can do with it. Mouse over it and it hilights to let you know it's active. Left-click on it and you get a menu with options for edit, rename, delete, compile, etc. Any error message that gets printed out to the console will have active keywords that if you click on them will bring up the online manuals to the appropriate spot. You can bring up a dialog inline in the console, and after you finish with it it will remain in the scroll buffer like any other text. Imagine what an XML shell would be like, and you're starting to get the picture. Except that this type of behavior is consistent everywhere in the system, the editor, the help system, the browsers, the inspectors, everything.

The documentation system is a full hypertext system that predates the WWW and the British Telecom patent by 4-6 years. Unlike HTML, when printed out in paper form it looks like it came out of a professional typesetting system. It also comes with a very nice authoring system called Concordia that is a wonderful system for banging out things like manuals.

Other software on the sytem includes Statice, a quite nice persistent object database, Joshua, an inference engine and associated framework for doing rule-based programming. There are a variety of compilers for things like C, Pascal, Ada, and Fortran. X Windows. NFS. Yellow Pages. FTP. Telnet. HTTP. And even exotic things like the Nichimen graphics software.

No Java though, which is amusing because its probably the closest thing to a Java Processor currently out there. OTOH Java is a net loss compared to Lisp, so there's not much point in the exercise.

Some more pictures:


This is the command shell (which Genera calls the Listener) right after boot-up. Notice the box around the text "Press <Select> D to select Document Examiner to read online documentation", which indicates that it is a hyperlink.


Document Examiner, showing a bit of the Zmacs help. Again, the cursor is sitting on a hyperlink. The pane to the upper right gives a listing of the top-level documentation topics, and the lower right-hand pane ("Bookmarks") shows you recent topics.


File System Browser. Notice the file versions. VMS had this feature also, and it's really really nice. It's no substitute for a Version Control system, but then VC systems are no substitute for file versioning either.


Peek System Inspector. Looks like an innocuous process list, except that you can also get to performance meters, filesystem stuff, other servers, windows, etc. From here you can grab a window or process and toss it into the debugger. Even system processes and windows. And since the system comes with source for pretty much everything, and is essentially a debug build without the associated speed penalties, it makes for an eminently hackable box. :-)

For more info, pictures, and descriptions, visit Ralf Möller's Lisp Museum .


Michael Parker
1