A few things I know about LISP Machines

I wanted to know what LISP Machines (LispM) were like, so I bought one. Since I learnt many things about them in the process that were not documented anywhere on the web, I thought I'd write a page about them. Most of the material I publish is just trivia or curiosity; for more useful or spectacular stuff, follow the provided pointers.

If you like my prose, prove it by sending me two cents via paypal.

LISP Machine sites

  • Other (non-Symbolics) LISP Machines

  • Discussion groups

  • Sites of lesser interest

    Another source of information, not listed in the above pages, about the origins of LISP hackers is Steven Levy's "Hackers: Heroes of the Computer Revolution" [.zip], which great book I recommend to read, anyhow. Actually, the etext only have the (allegedly most interesting) first part, the one about MIT LISP hackers; you don't miss much with the second and third parts (that explain the personal computer hardware hackers and game hackers), but it cruelly lacks the appendix, that explains the original sin of LISP hackers, with Symbolics going the way of proprietary software.

    Buying a LISP Machine in Y2K

    My adventure in LispM land

    I had read so much about them (mostly in the comp.lang.lisp newsgroup, and gclist and lispos mailing-lists), that I decided to buy a LispM and experience myself these systems, whose users explained were still unmatched in many ways by current systems.

    Since Symbolics is still active (well, still was in Summer 2000 when I finally decided to buy a LispM), I contacted Kalman Reti, who was the only person whose email was listed on their site, and who redirected my request the proper person.

    My contact was thus

    Dir. of Maintenance Operations
    P.O. Box 10862, Burke, VA  22009
    703-455-0430  (voice)
    703-440-0388  (fax)
    He is also the person you should contact, should you too decide to purchase a LispM from Symbolics.

    The information below is largely based on my email exchange with DKS, as well as my irc conversations with Rainer Joswig, a LispM owner and user, both of whom I thank warmly for their help and support. Any error in this document is to be attributed to mistakes or extrapolations of mine. Symbolics hardware may be expensive, but the support staff is definitely very agreeable to work with, and the user community very helpful. If you have questions remaining after reading this page, you may ask DKS about them, and he will answer. Do not hesitate to send me any information you gather this way or another, so as to correct or enhance this page.

    Note: if you're interested in getting a used LispM, read Peter Paine's related page. And of course, if you ever hear of a LispM being sold or thrown away, be sure to contact me and/or the LispM lovers on comp.lang.lisp.

    Lisp Machines available from Symbolics

    • If you really want a collector's item, there are a number of different 36xx machines (speed factor 1) ranging in weight up to 400 pounds that Symbolics will sell for $600 (about a $1.25 a pound, cheaper than good hamburger). If you live close to Los Angeles, CA or Washington, DC, this might be an option, since you could pick up the machine. Otherwise the shipping costs make this prohibitive. Considering the speed of the machine, the heavy power consumption of the hardware, and the age of the consoles, you mightn't want them for other than museum purposes (and it is recommended to get more than one console - just in case).
    • Symbolics also offers a MacIvory model 2 workstation (speed factor 2). This is a Mac IIfx with 32 MB of RAM, a 2 GB SCSI disk, an ethernet card, Apple extended keyboard and a one-button mouse. It includes a MacIvory model 2 co-processor board with FPA and 24 MB (4 MWords) of NuBus memory for the MacIvory. The disk has Mac O/S 7.5, all Symbolics software and most sources pre-loaded on it. The cost for this unit is $1,100. You will have to provide a video card and at least a 17" monitor (see below) for this system to be functional. Symbolics does have some video cards and monitors available and can add them to the system for an additional price based on the type of monitor, but it would be more cost effective, if you can find a used monitor. Symbolics can also replace the Apple keyboard with a Symbolics keyboard and mouse for an additional $200.
    • The MacIvory model 2 co-processor will work in any Mac II or Quadra computer that has 3 available NuBus slots (one for the processor, two for 16 MB and 8 MB LISP memory boards), and since you want a good graphics card and an ethernet adapter (on-board adapter not recognized), this means a total of 5 NuBus slots. I believe that limits it to the Mac II, IIx, IIfx and Quadra 950. If you already have one of these, you can buy just the co-processor board and Symbolics software for $600. You will have to do the Symbolics software installation on the system.
    • Symbolics no longer offers MacIvory model 3 workstation (speed factor 6): They only have a few of them left and have been reserving them as spares for contract maintenance customers. The MacIvory model 3 uses the same chip as the XL1200 (see below). It doesn't use slow NuBus memory, but has direct access to its own RAM: 2MW of onboard memory, and an (optional but recommended) daughterboard with 6MW of memory. The daughter board uses the physical space of a second NuBus slot, although it doesn't connect to the bus, so the MacIvory 3 with daugtherboard requires two available NuBus slot (count two more for video and ethernet). There is also the option of a WEITEK 3164 Floating Point Accelerator (FPA). The model 3 is reported to work with MacIIfx, Centris 650, Quadra 950 and Quadra 840av (the fastest), and will likely work with other similar Macintoshes. If you want to plug a MacIvory 3 in a Quadra (you do), make sure it is a new version or an updated version; Symbolics is able to modify some older boards, to make them Quadra-compatible; this will cost you $250 plus shipping back and forth, and must be done while DKS is visiting the Chatsworth, CA offices (just you contact him). The price for a model 3 with 8 MWords of memory and no FPA was $4,000. [As I understand it, the chip is essentially the same core as the Model 2, and the speed increase is due to double clock and direct access to RAM.] In the nth hand market, I could get a non-upgraded Model 3 NuBus board and its 6MW daughter board for $1,100; but then I had to also buy other parts so as to assemble a whole computer.
    • Symbolics also made a headless networked LispM, the NXP1000, and VME boards that you can notably plug into a Sun3 or Sun4 under SunOS 4.1, the UX400 and UX1200 (that correspond to MacIvory 2 and 3 respectively). You can put more than one UX board into a machine (up to five UX1200 for example into a SPARCserver 470). It also was possible to add an 8MW extra memory board to an UX1200 board. DKS didn't tell me about these models, so I don't know the "official" price, if such thing still means anything.
    • The top of the line is the XL1200 (speed factor 6). The XL1200 is a large "tower-like" system with several VME slots (is this the mythical Ivory Tower?). The XL1201 variant is a pizza-box machine based on the VME bus, but without free slots. It runs off USA standard 120V power. It comes with 8 MWords (40 MB) of memory, a 4 GB SCSI disk with all Symbolics software and most sources pre-loaded, a CD-ROM drive and a 19" 1152x870 (or so) monochrome console with keyboard and 3-button mouse. The cost for this system is $3,500. Some people add in a $1,200 FrameThrower board, together with S-Graphics software (are licenses still available?), to achieve a 3D video editing platform.

      The unit is noisy, so people usually put them in another room, with the console being linked to the processing unit through a system-specific (optical?) cable whose available lengths are 10, 20, 50 or 100 feet (the longest cable, out of stock, was 200 feet). For a replacement cable, Symbolics will charge you a base $10 per cable plus $2 per foot. One problem with shipping a XL1200 is having a box for it. There are no off the shelf boxes that fit, and Symbolics doesn't have any of the specially designed boxes they made left. For the last XL they shipped, DKS had to design and build a crate to ship it in; it cost about $50 for materials. When done, the XL in the crate weighed 150 lbs.; the monitor and other components weighed 90 lbs. The system is heavy (all metal case, not plastic); and the console is fragile.

    • If you value proprietary software or can afford the luxury, you may opt for the OpenGenera software emulator that will emulate an Ivory LispM on an Alpha processor under Tru64 (previously known as Digital Unix, previously known as DEC OSF/1; it won't run on Linux, since Linux uses different Alpha microcode). A relatively cheap 533 MHz 21164 would be about speed factor 18, 3 times faster than a XL1200, plus you can put gobs of RAM in it to avoid swapping (which can considerably speed up real applications) and run multiple separate LispM emulating processes on a machine. [It has been reported in year 2001 that on a top of the line Alpha, some specific LISP applications may run as fast as 80 times an original XL1200; but for most applications, that may be only a factor 15 or so.] Single CPU license is a hefty $5,000: you can run multiple Genera images on one processor, but cannot run them on multiple processors; if you have a multiprocessor, you shouldn't run Genera processes on more than one processor, unless you have accordingly many licenses; of course, no one will verify whether you do, or whether you pirate the system, or anything; implementation of the license is all based on the honor system.

    Memory Issues

    The MacIvory model 2 uses third party (National Semi-conductor) NuBus memory boards. Theses boards cannot be used by the Mac for anything except RAM disk. They are totally seperate from the SIMM memory on the Mac processor. The main reason that the MacIvory model 2 is slower than the XL1200 is that it uses an earlier version of the Ivory chip that does not run as fast. The fact that it has to access memory across the NuBus is also a factor. The maximum memory that the model 2 can use is 32 MB (5.3 MWords). Years ago one of Symbolics' customers did extensive testing on different configurations of the model 2 and determined that 24 MB (3.9 MWords) was the optimal configuration. They found that the additional 8 MB to get to 32 MB had little effect at speeding up their application.

    36xx machines had a 36 bit word size (32 bits of data and 4 tag bits). Ivory systems have a 40 bit word size (32 bits of data and 8 tag bits). [As for other Lisp Machines, the MIT CADR, the LMI CADR and Symbolics CADR had 2 bits of CDR codes, 6 bits of tags and 24 bit word addresses. The LMI Lambda and the TI Explorer I had 2 bits of CDR codes 5 bits of tags and 25 bit word addresses. The LMI K had no CDR codes, 6 bits of tags and 26 bit word addresses.] All Symbolics Ivory hardware used 48 bit ECC memory chips. The NuBus memory on the Mac is not ECC, so the extra 8 bits are to implement ECC for the MacIvory. Rainer reports that his MacIvory corrects an ECC error about once every 3-4 months; do your long-running mission-critical servers have ECC on their DRAM?

    If you're going to run real applications with big memory requirements and not just small benchmarks, you'll find that you can't fit all your problem into any standard size of RAM. Then, unless you're going to unearth a machine with one of those monster memory configuration they used to make, with tens or hundreds of MW of RAM, (but then, for the same expected price, you might instead want to buy an OpenGenera license and run it on a beefy Alpha 21264), you'll find out that your machine will spend its time paging, and that hard disk performance rather than just RAM size becomes a major issue. LISP Machines of old (36xx, etc) used to control the bare hardware in LISP as well as they did manipulate AI concepts, so as to optimize paging performance.

    Indeed, LispM system software is designed to page gracefully and not croak under load, and most importantly, the GC and paging systems are written in symbiosis, instead of making things worse for each other as they do in "modern" Java runtimes running on "modern" operating systems. Lore has it that LispM's could work out problems with working sets of hundred megawords while paging on normal memory configurations, whereas the same program, ported to some CommonLISP on SunOS would basically require the addition of enough RAM so as to fit the working set in it, or the machine would spend all its time thrashing. Similar requirements of adding gobs of RAM are commonplace in "modern" Java-based systems -- do people ever learn?

    Macintosh Hardware Issues

    The MacIvory is a true co-processor board. It and the Mac CPU can work on different tasks at the same time. There is no contention for memory, but contention for video, disk or the network could slow down processing.

    The MacIvory interface software is written for the m68k processor; it will not work with a PowerPC. You cannot plug your MacIvory into a PowerMac with NuBus slots (7100, ...), and if your Quadra has a PowerPC upgrade processor, you will have to disable it when running the LispM. Since sources for the interface are included, you could theoretically hack a versions that would work on a NuBus PowerMac, but there are probably more interesting things to hack.

    All the cards were loose when the Mac Quadra 950 arrived, and my friend Tril had to plug them back in; he has to open the case every time he wants to plug a monitor in, because he has to move the video card up to make the plug fit. Indeed there is no positive fastener for the boards. Supposedly the bracket on the removeable cover holds the boards in place, but DKS found that cover was prone to pop off and did not work with short cards like the video card. DKS also had to hold the video card in place to attach the monitor. I had no such problem with my IIfx, since the box is a desktop rather than a tower, and there is no chance of cards falling.

    Another problem I experienced on my IIfx, after I added more memory and a beefy harddisk, is that the power supply isn't powerful enough to feed all the add-on cards plus the RAM plus the harddisks, which is visible by the loss of power in the video signal when the disk heads move. Also, the 128MB IIfx RAM in old technology heats up a lot, and eventually fails I finally added a cooling fan for the RAM So as to have enough space for the fan, to reduce the heat pressure inside the case, and to lighten the burden on the on-board power supply, I plugged the harddisks into an additional PC power supply sitting in a shoebox on top of the IIfx. Even then, it looks like some of the 16MB SIMMs are defective, so I only use 4 of them, plus 4 4MB SIMMs.

    The IIfx system was still somewhat unstable, until it reached a point where it stably refuses to boot (no video signal and not even tones at powerup - early January 2003). I've been told to replace the motherboard's batteries, and indeed, the machine works much better now that I have replaced them: not only isn't it dead anymore, but the powerup button on the Symbolics ADB box works everytime, not once in a while.

    Input Device Issues

    To use Genera, the preferrable way is to get a Symbolics keyboard (layout) and mouse, together with their ADB adapter box. Not only are they just the right thing for the job, they are also an externally visible sign of having purchased Symbolics hardware. Since this adventure is all about discovering museum computers, why not have at the same time a functional keyboard and another museum piece? This is the option I chose. Plus, the easily accessible pair of parentheses feels just right.

    You can also use an Apple Extended keyboard with a three-button Logitech ADB mouse. You need more than the standard keyboard, since a number of the keys from the Symbolics keyboard are mapped to function keys that lack on standard Apple keyboard. Symbolics also had a keyboard overlay for the Apple extended keyboard. This might be useful when trying to figured out where certain Symbolics keys are mapped to on the Apple keyboard. In the meantime between getting my MacIvory 3 and its Symbolics keyboard, I just stuck pieces of papers on the german QWERTZ keyboard to transform it into a US QWERTY keyboard with Symbolics labels.

    Display Capability Issues

    On a Macintosh, you have to match the video card to the monitor. All these Mac vendors used to do things differently, so that a Radius monitor would not work with a SuperMac video card, etc, etc. You should try to track down a monitor locally. If they do not have the video card to go with it, DKS will find the correct card and include it with the machine. I bought a card with Apple-compatible output and a Mac->VGA adapter.

    The video card is crucial. Get the best you can. Accelerated Quickdraw will speed up things a lot. Good CPU is important, too -- get the fastest Mac you can (the fastest 68K Apple made was a Quadra 840av, with a 40MHz 68040, although there exist CPU accelerators and Mac-compatible machines that may or may not work). Actually you can add a special graphics card to the Mac (NuVista) and the MacIvory will use this card directly (not using the MacOS). This is also supported with some of the S-graphics applications on the MacIvory when used with the NuVista.

    For the screen size, it's of course pixel count that matters, although standard Apple cards and screens have maximal pixel count directly associated to screen size (a Mac can switch to lower resolution, but with your LispM you will want the highest you can get). Any modern multisync monitor will do; the bigger, the better. Rainer Joswig uses a Sony LCD screen, but has used a lot of different color monitors over the time (15", 20", 21").

    On screens smaller than approximately 800x600, Genera does not display any large fonts and acts as a text only display. On a Macintosh 16" screen (832x624), some of the windows, such as the Document Examiner, are laid out differently due to the available space. On a Macintosh 17" screen (1024x768), the system is fully functional. Higher resolution increase the valuable screen real estate.

    The graphical user interface to the interactive development system works in black and white, so functionality is not affected if you only have a monochrome display; however, pictures are displayed in color when color is available, and user programs in general can use colors. Indeed, LispM have reportedly been used as development and rendering machines for synthesis of 4D animated motion pictures. (See Peter Paine's page for description of such machines.)

    Note: The graphics division of Symbolics was sold and became Nichimen Graphics, and their N-World 3D modelling and animation software (now Mirai) was most notably used by Nintendo in their line of games for the N64.

    X-Window system Interface

    Independently from the on-board display, if any, you can access your LispM through an X-Window session of any reasonable size. Since the NXP1000 LispM pizza boxes, the UX400 and UX1200 VME boards, or the OpenGenera software emulator come with no display, this is the only way to interact with them. With my MacIvory3, the X remote display to my Linux box is faster than the local display to the MacIIfx host with its beefy graphics card, unless I set the Mac to 1bpp monochrome.

    Note that under X, some Symbolics keys are also mapped to function keys; the mappings are redefinable. Notably, I will have to remap things, since the LispM doesn't know about the Alt Gr key of my french AZERTY keyboard, so I can't get ~ # { [ | ` \ ^ @ ] } keys but by copy-pasting.

    Interestingly, X sessions also allow you to login from a remote computer, and/or to share your computer between several people. In the latter case, note that (but in the case of OpenGenera, that allows multiple Virtual Lisp Machines to run simultaneously), all the users will be sharing the same LISP image including the same global LISP environment (current package, global variables, etc.), so that will have to take manual care so as to avoid clashes, which can be "interesting" for people simultaneously connected. the LISP Machine system was designed for use as a personal workstation, not as a multiuser timesharing system.

    You can also run a telnet server on the LispM so as to be able to remotely launch new X sesssions with command start x screen. Since such a (passwordless!) setup is so unsecure, unless you're going to port SSH to the LispM, you'd better put your LispM in a secure network behind a firewall.

    Macintosh Software Issues

    The Mac interface software was thoroughly tested to run under MacOS 7.5. It should mostly work with more recent versions of MacOS, although small problems might arise. The last MacOS for m68k computers is 8.1; it can still be purchased from Apple. One notable feature of MacOS 8.1 is that it supports HFS+ which allows for larger than 4GB partitions. Rainer Joswig reportedly uses system 7.5.3.

    Ethernet Issues

    DKS warned me that the MacIvory 2 couldn't use the builtin ethernet card on the Quadra 950, so I had to buy a NuBus card (I got an Asante).

    DKS also had software problems configuring the system with MacOS 8.1. When he booted the Quadra 950, he got an error message that said the computer had multiple ethernet interfaces. This is not unusual because of the on-board Ethernet interface. What is unusual is that the MacIvory configuration utility will not let DKS configure which interface to use. The problem was not with the board. DKS had tried three different boards and the problem is the same with all of them. DKS believes the problem is in how the Mac OS is configured or some extension that is being loaded.

    Apparently there was some problem in the way my Mac OS 8.1 was configured that caused the MacIvory configuration utility to have a problem. DKS was able to get around this by booting from an external drive that he had with Mac OS 7.5 on it. He was then able to use the MacIvory configuration utility to change the ethernet configuration from the builtin interface to the Asante card. When he rebooted using my disk and Mac OS 8.1, he still could not use the configuration utility, but the Asante card was still selected. DKS booted up Genera and successfully talked to his XL1200 server. He has created a partition with Mac OS 7.5 in it, so I can boot from that partition to reconfigure the ethernet if ever needed.

    Rainer Joswig tells me that with his MacIvory 3 and system 7.5.3, he can use both a built-in Ethernet and the NuBus Ethernet. The MacIvory wants to use an Ethernet card just for itself, and it has to be the NuBus model. If you want the Mac to have Ethernet too, you need two Ethernet interfaces: one for the MacOS (MacTCP + AppleTalk) and one for the MacIvory (TCP, CHAOS, ...).

    On my MacIIfx, I have two Ethernet cards; I configured the MacIvory to use the one on in NuBus slot B, and MacOS' TCP/IP to use the "Ethernet 2" in slot A (apparently, it counts available cards in decreasing NuBus slot number). Works like a charm.

    Hard Disk Issues

    The MacIvory stores its data with its own FEP filesystems, whose space must be reserved with respect to MacOS, as big hidden files within a HFS partition. You can make them visible with ResEdit and then copy them around. You can use more than one and they can be on different partitions and different disks. The use of the FEP partitions is configured in the MacIvory control panel on the Macintosh. The FEP files are the basic files - the LMFS file system is residing in the FEP files.

    In a typical installation, you'd make a separate partition that appear as an empty partition to the Mac, actually full of this hidden files. The Symbolics software and base world load takes up about 320 MB. Paging files can use anywhere from 100 MB on up.

    The FEP file systems contains

    • worlds, usually 50 MB for one full world, plus incremental worlds
    • paging files, Rainer has 800 MB
    • the LMFS (as much as you like, usually have one machine with a large LMFS)
    • maybe Statice filesystems (object-oriented databases)
    • any other large file you like to put there
    • boot files
    • FEP kernel
    "Show FEP Directory" gives an overview and shows the worlds in use.

    My own LispM has 1GB + 2GB harddisks, and it's rather tight, so I need clean it up to make some space. Rainer Joswig is happy with a 9 gigger in his main machine. That's good old SCSI, so upgrade should be easy. I'd say that you should be more than comfortable with a 4GB disk (double that if your machine can dual boot into Linux or BSD).

    Be sure to make a backup of your all your system's harddisk (all the more if you let other people play on it). Some unlucky hacker who forgot to make his backup in time is known to have lost all his the data on his LispM after a hardware failure of his SCSI drive. My own experience with data loss only confirms that you should definitely always have a working system backup for every computer, and a recent data backup of anything you spent time working on, including configuration stuff.

    Starting and Stopping the LISP Machine

    To boot up Genera, click on the "Start Genera" icon on the desktop. It takes a few minutes to boot up. After you get the Genera screen, type "login", hit the space bar and enter "lisp-machine" (automatically capitalized as Lisp-Machine as the machine recognizes the login). Press the SELECT key and the D key. This will bring up the Document Examiner and give you access to the full documentation set. SELECT and L will take you back to the Lisp Listener. Do not be afraid to make extensive use of the HELP key. There is a lot of context sensitive help in Genera.

    To properly exit Genera, you should enter "logout" then "halt machine". This will drop you back to the FEP. Then enter "shutdown". This will halt Lisp and take you back to the Mac desktop.

    Side note: if the Mac crashes, just reboot the Mac and restart the "Genera" application. The Symbolics usually survives MacOS crashes.

    LISP Software Issues

    A set of 4 CDs is provided with the MacIvory, which contain versions of Genera for all Symbolics hardware. [I didn't get these, although I got their contents pre-loaded.] 36xx machines do not have CD capability, so they would have to be networked to a machine with a CD reader to get access to what is on the CDs. Usually one puts the contents of the CDROMs on a file server.

    There isn't much Symbolics software whose source is not included. The person to ask for the specifics is Kalman Reti, but DKS's understanding is that the excluded stuff is very low level system code (Darn! precisely stuff that I like).

    Additionally Symbolics offered some CDROMs with software: KEE 3.1, Statice, CLIM 2.1, Concordia, DECNet, Joshua. I haven't checked whether they were included in my "new" LispM.

    Note: LISP Machines themselves are Y2K compliant, for if ever your date overflows from fixnum format, the hardware will automatically use bignum instead, transparently for the user. So should the LMFS be, too. However, the hardware calendar clock chip itself stores date with 2 digits, so that Genera 8.3 still needs a patch for date wrap-around. Moreover, be reminded that the unix-ish "universal time" (encoded as positive 32-bit signed integer representing a number of seconds) used in many filesystems and protocols started on 1970-01-01 and will end on 2038-01-19, so that support for these protocols will have to be hacked by 2038 (or you'll have to use a fake date with your LispM).

    The LISP boot process

    You can set the IP number and the CHAOS number (if you still want CHAOS) in the boot files (CHAOS is an early networking protocol developed and used at MIT where the predecessors of the Symbolics LispM were designed).

    The FEP, Front End Processor is the "boot loader" on the LispM. On the 36xx series, it was taken care of by a dedicated m68k processor, that would initialize the Lisp processor. (Remarkably, just the FEP for the LispM was thus as powerful as full-blown workstations of the same time!) On the Ivory series, the FEP is written in a low-level LISP dialect directly run by the Ivory processor (just like Suns and Macs have OpenBoot). Its role is get your Lisp world up and running from a stored image on disk (or from network?). You use the FEP to tell the Lisp system which world it should use, which microcode, which paging files, etc. So now we start a Lisp world. Genera comes up; in case we have told it its IP number, it already knows about it.

    Then you have the idea of a "SITE", some information repository for the configuration of all LISP Machines in your LAN, a bit like the /etc directory of UNIX machines, or Windows registry, except that it covers all the machines in the network. You can specify the SITE by telling Genera manually (with the command "SET SITE ..."), by having it ask a Namespace server (a properly configured LispM), or by using the standalone namespace files. LispM come with a preconfigured "DISTRIBUTION SITE". The Namespace contains such information as users descriptions, machine descriptions, network descriptions, site description, printer descriptions, etc. A centralized Namespace server makes administration of many machines easy. So, after booting Lisp: you tell your LispM what name the site has and optionally the namespace server. On a CHAOS network the Symbolics will find the server itself.

    You need to read the manuals "SITE", "Release Notes", "Installing a MacIvory", ... to get the full picture. It is not necessary to do (INITIALIZE-INTERNET-NAMESPACE) - Rainer Joswig never used it. Oh, and do not try to edit namespace files with Zmacs, or you will most likely badly decorrelate them and wreak havoc.

    DKS tested the machine by plugging it in a CHAOS network. In such a setting, a LISP Machine will automatically discover its configuration, finding its network address, the namespace server, etc. CHAOS probably had all this long before DHCP first appeared in 1996, although there is no trace of such feature in the 1981 report by Moon.

    All that to say that the machine came (un)configured and working with CHAOS, but that we had no CHAOS network or server, and wanted to use TCP/IP instead. Well, we learned quite a bit about configuring a LISP Machine, saving (incremental) world images, etc., until we could finally have working TCP/IP connectivity for the LispM. Thanks a lot to Rainer Joswig for his kind help.

    Installing a LISP Machine

    Here is what Raymond Wiker says about his installing his MacIvory 2 (within double brackets are my [[Faré's]] editing his message):

    I had a bit of trouble setting up the machine with the new [4.3GB] disk, partly caused by the fact that my CDROM is not an original Apple unit, and so requires a custom (or modified) driver. The same goes for the hard disk: it is not one of the Apple-OEM'ed units, so I had to get a patched version of [HD SC Setup]. The OS is MacOS 7.5.5, by the way, with OpenTransport 1.1.2 (a TCP/IP package) installed on top of it.

    Initially, I set the HD up with a single partition. This caused the Ivory "Breath of Life" application to fail, with similar symptoms as Faré describes [[somewhere below on this document]]. Faré says that his problem was caused by the speed of the CDROM [[I may be dead wrong about it]]; I suspect that my problems were caused by either the disk volume size or file system block size exceeding the MacIvory SW's expectations. Anyway, the problem disappeared when I repartitioned the disk as 2 partitions of slightly less than 2 GB each, and a smaller partition of about 300MB.

    An additional benefit is that the file system block size was reduced in the same process, and a small file that occuped 127KB on the large partition was down to 31KB on the small(er) partition. This is supposedly not a problem with MacOS 8.1, which has an improved [HFS+] file system.

    Once this was done, I used the MacIvory control panel to set up a maximum-sized FEP file system on one of the 2GB partitions. (Actually, when I had a single 4GB partition, the MacIvory control panel suggested a FEP partition of about 2GB. I suspect that there may be a limit of 2GB for a FEP partition - does anybody know?) [[When I forced the size over 2GB in the little box in the control panel, it a) accepted it b) now printed the size as a negative number. So I guess the 2GB limit has to do with some unresolved signedness or unsignedness issue with the 32-bit integers encoding partition size.]]

    At this point I was able to boot Genera. The first thing to be done (or one of the first) should be to set up a local LMFS (file system). This is done through the Filer application (Select F). Choose Local Operations->Maintenance->Initialize (I think!) to set up a new file system; I chose a size of 1200000 (1.2M) FEP blocks. This sets up a file in the FEP file system to hold the LMFS; it also zeroes out the file, which takes some time (at least on a MacIvory II).

    It's also a good idea to install the "genera 8 3 y2k patch". If you have this file placed in the top level of the volume named "Disk", with a file name "genera_8_3_y2k_patch.lisp" (e.g), you can read it into the editor with the command

    Edit File HOST:Disk:genera_8_3_y2k_patch.lisp

    The editor is (probably) going to ask if you want to read this file as an uninterpreted binary file. Answer yes to this question. If the file not been munged during transfer (via FTP or whatever), it should show up as properly formatted lisp code in the editor. To compile and load the patch, you can use the editor command M-x Compile Buffer. After doing this, switch back to the Lisp Listener and type Show Herald to verify that the patch is loaded.

    If you do a Save World now, you'll have a Lisp image that includes the Y2K patch. It's probably better to do a couple of other things first, though.

    The command Define Site can be used to change the site and host name, and also to set the system up for installing the system distribution from CDROM. I used the site name "Museum" and the host name "Ivory", and left the other settings unchanged. Then, I had to edit the file local.boot to change the namespace settings

    namespace Museum
    namespace path Ivory:>sys>site>MUSEUM-namespace.text
    --- I think, I'm not in front of the machine right now.

    With all this in place, you can do a Save World Incremental, followed by a Cold Boot of Genera.

    If everything went well, the machine should boot, the herald should indicate the site and host name specified [[by]] "Define Site" and the y2k patch should also be indicated by the herald.

    The "Define Site" command should also have set up a translation for the logical host SYS: that points to the LMFS file system. If so, it's time to restore the rest of the system from CDROM...

    After the files have been restored, you can do a Load System IP-TCP and Load System IP-TCP Documentation. Then, use the command (tcp:initialize-internet-namespace) to set up the local IP address as well as the (default) router name and IP address.

    At this point it is probably a good idea to save the world again. I chose to do a Save World Complete (after first doing Optimize World).


    Optimizing the World then Saving it. As we say in French: C'est tout un programme... (approximate English Translation: "That's quite a programme...")

    The MacIvory 2 I once bought

    Considering my budgetal and spatial constraints, I opted for a MacIvory 2 board, for which I bought a Quadra 950 on eBay, and that DKS kindly mounted for me, and shipped to my friend Tril in .wa.us

    The total cost I paid for the LispM, in USD, summer 2000:
    120.80 For a Mac Quadra 950 with 144 MB RAM, 3GB HD and CD-ROM, but broken CPU
    16.00 For an Asante NuBus ethernet card (RJ-45)
    95.99 For a IMC 2124NB NuBus video card
    9.55 For a Mac->VGA display converter
    34.96 For a Mac Quadra 950 replacement motherboard with 24 MB RAM
    600.00 For a MacIvory II LispM NuBus cards and software
    200.00 For Symbolics keyboard and mouse
    100.00 For David K. Schmidt's hard work (handling, assembling, retrying, shipping)
    10.00 For the bank's commission while sending money by wire transfer to DKS
    47.05 For shipping the LispM from east coast to west coast via UPS ground
    1224.35 Total for a working LispM, minus standard VGA screen.

    The first Quadra 950 I bought on eBay was reportedly working before it was shipped, but was dead after DKS mounted it. [As a diagnostic, DKS tried pressing the reset switch: If he pressed and held it, he would get the standard boot up tones, then he would get an error tone sequence of 3 up and 3 down. I do not know what that sequence means.] I had to buy a new Quadra 950 motherboard, which worked fine. The seller of the original 950 agreed to reimburse me $100 off the $220 I paid. DKS spent a lot of time on all this affair, and he really didn't ask much ($100) for all his complex handling service.

    Silly note: the machine totals 160 MB of Macintosh RAM (taken from the two 950 mainboards I bought) but this RAM is not overly useful, since the LispM only sees its own 24 MB (4MW) of RAM, and the 20 MB of Mac RAM provided in old Symbolics configurations (now 32 MB) is already more than comfortable to run the MacIvory (If you build your custom LispM with an old Mac, however, be sure to have enough Mac RAM, for Apple always supplies under-memoried systems; this will allow for larger buffers for communication between Genera and MacOS, by increasing the memory alloted to Genera Application on the Macintosh side, which may enhance speed for some operations.) With more memory you can also run a comfortable Macintosh Common Lisp in parallel on the Mac's 68K. Memory might also be used by NetBSD or Linux-mac68k, although the LispM interface software hasn't been ported to these systems.

    My first enquiry about buying a Lisp Machine was on 2000-05-07, and my friend Tril received the machine on 2000-08-08. This is a long delay, but most of it is due to my choosing to buy parts on eBay, that David K. Schmidt kindly assembled for me. If you buy a whole machine from Symbolics, you'll only wait for the handling (about one day, when DKS is available) and shipping time (the MacIvory shipped from coast to coast in 8 days). I am very satisfied with the contact and support I got from DKS at Symbolics.

    It took some time for Tril to configure the machine so as to access the Internet; actually, Tril did not know where to start from in the docs, and didn't try very hard until another friend, water, came in and helped. Together, with a few tips from DKS and Rainer, they finally got the machine to run; from what I understand, most of their problems were related to properly editing the namespace, and understanding how to build incremental World images. Tril then setup a way for people to log into the machine remotely through a Linux firewall, and I could test the machine, with a lag between 400ms and 2s, depending on the state of the network between my ISP in Paris, France and Tril's in Bellingham, WA, US. The machine doesn't run very fast by today's hardware standards, and the lag is annoying, through a TCP/IP pipe between Paris and Bellingham, but it is quite an interesting experience to use it.

    I finally sold this machine to water, at same total price that it cost me, so as to buy one in Europe (I also vaguely intended to use the money to bid on a full-fledged S-graphics equipped XL1200 on eBay, but the auction was finally won by Daniel Rudin at $3050, much above what I could afford). Thus came my second and more direct venture in LispM land...

    My MacIvory 3

    My current Lisp Machine is thus a MacIvory 3. It is Rainer, whom I met on the irc.openprojects.net #lisp IRC channel on who told me that a friend of his, Michi Thun, had a MacIvory 3 for sale. This immediately prompted me buy it. It would certainly be expensive, but water relieved me by proposing to purchase my MacIvory 2. In comparison, the MacIvory 3 was somewhat faster, with more RAM, but much more importantly, it was more in Europe; instead of shipping a LispM to France, a expensive and dangerous adventure, I could sell the model 2 to a friend in the same group (where it would remain useful to my memes), and get a faster another one in France, for only slightly more.

    I thus contacted Michi Thun in Hamburg. He had two MacIvory 3 boards, but one of his LispM had a hard disk crash, and he lost everything he had on it; he decided to sell it, since his wife wouldn't use the second LispM that he had bought for her, and he thus had a redundant spare. The MacIvory board was unmodified so couldn't be used on a Quadra (lest a hefty additional $250 plus shipping back and forth be paid to Symbolics), so I started looking for a IIfx. I started bidding on eBay.de and eBay.com for all the hardware needed for the LispM.

    I soon got two NuBus ethernet NICs in Paris (one would later turn out to be defective when mounted, so I got a replacement on eBay.com), and one Macintosh VGA adapter in Germany. I found a IIfx in Hamburg on eBay.de, with a 19" screen (a 30kg 1991 monster that only did 1024x768 and hurted the eyes, that ended in Michi's trashcan); it had 64MB of RAM announced, but really had only 20MB (maybe an error due to the seller considering virtual memory). Michi was kind enough to handle it for me.

    I bid a lot on eBay for a Radius Thunder IV GX 1600, the best NuBus video card you can get; it is well worth it, but I could have got it cheaper by being more patient and waiting for a latter part from the same source; also, I prefer to run it at 1360x1024 75Hz than 1600x1200 65Hz, for better eye confort, particularly on this 17" screen of mine, so that a GX 1360 should mostly be enough for anyone. Note that on my IIfx, the Mac interface is a bit slower than a remote X connection, except maybe when in 1-bit black-and-white mode. Local display might be faster on a Quadra 840av...

    I bought a Symbolics keyboard from Peter Paine in England; I do not thank the post office for their high rates and slowness at sending money abroad (23 days!!!) -- it would have been faster and cheaper for me to go fetch the keyboard in England myself.

    I got a 9GB SCSI disk from my friend Bernhard in exchange of a 30GB IDE disk; had to buy an adapter to plug it in the Mac's internal SCSI bus. I also got an old Apple CD600e and my good old 1GB external SCSI disk plugged into the machine, though it turned out that the CD600e wasn't as ideal as it seemed.

    Tril handled my payments in the US, and my friend Bernhard those in Germany; yet more thanks to them.

    The total cost I paid for the LispM, in EUR, in 2001Q1:
    EUR30.49 FRF200.00 2 NuBus RJ45 ethernet cards
    EUR14.83 DEM29.00 MAC-VGA adapter (26+3 S&H)
    EUR112.48 DEM220.00 Macintosh IIfx (20MB RAM + 240MB HD + Apple Extended II ADB QWERTZ german keyboard + Apple (one-button) ADB mouse + míro PRISMA II 1024x768x8 card + dumped 19" míro PRISMA II screen + 80 DEM moving in Hamburg)
    EUR170.00 USD149.50 Radius Thunder IV GX 1600 (124.50 + 25 S&H) + estimated banking charges
    EUR1347.25 DEM 2365.00 Symbolics MacIvory model III LISP Machine board, serial number MI 30012 (says the sticker; Genera says 30350 - go figure!)
    EUR276.36 FRF 1812.78 Symbolics keyboard&mouse + ADB box (163GBP) + S&H + bank
    EUR196.66 FRF 1290.00 9 GB SCSI Hard Disk (pulled from a PC in exchange for a 30GB IDE drive)
    EUR19.67 USD129.00 SCSI adapter to plug wide disk on narrow chain
    EUR32.47 USD30.00 Miscellaneous cables (estimated)
    EUR55.00 USD50.00 Apple CD600e External SCSI 4X CD-ROM (was reclaimed; estimated price inc shipping)
    EUR30.49 FRF200.00 one additional NuBus RJ45 (estimated price)
    ======== ========
    EUR2285.70 USD2080.00 Nifty LispM (estimated price, without monitor)

    You can compare this 2300 € to the estimated price of $50000 for a similar machine back in 1991 when it was new, which would have had accessories barely like what I could find for it in 2001.

    I heard about this opportunity on 2000-12-31, and got the machine home on 2001-02-16.

    Spent one afternoon mounting the parts together and doing basic MacOS setup. At first, I had problems with partitioning the 9GB disk: I had used the Drive Setup utility from a more recent computer's system 8.1; however, this utility is so dumb as not be able to configure disks larger than 4GB for use on less than a 68040; I spent one night figuring it out and locating tools to go around this limitation. Then spent one day fixing the problem and collecting all the useful MacOS software I could find, including some MacOS System 7.6.1.

    The míro PRISMA II was working correctly, but at fixed resolution (my monitor accepted its R, G, B triplet of coxial connectors); the Thunder IV was truly impressive, once its accelerated drivers were inserted; however, I have but one monitor to share between the lispm and my main linux workstation, so I only use one card (the Radius), and switch between my two computers. Also, there is some issue with the Genera interface display being buggy 16 or 24 bit color modes (scrollbars have bad cursor which side effects the text; some regions don't redraw properly during window refresh), and the 2 color mode is much faster, anyway.

    I thought one of the two ethernics I bought was defective, but it was actually a badly done Ethernet cable, which problem was hidden by my bad software configuration. My incapacity to test things in a systematic way had me lose a lot of my time, and, I'm sorry to say, other people's time. Moral of the story: be systematic. It might look like a waste of time "when things work", but it's not, because it is a necessary condition for things to work.

    However, while repartitioning my drives, I stupidly erased the small Genera installation that Michi made for me, having found his old Genera CD; I didn't really care, for I thought it would be easy to restore Genera from my copy of the CD, and didn't intend to keep the small FEP installation, since I'd reinstall it with a LMFS containing all the sources, anyway. Well, it turns out that Genera refused to reinstall from the CD. The error was as follows, SCSI ID 3 being my Apple CD600e, aka MATSHITACD-ROM CR-8006 1.0m:

    [2001-02-19 06:35:00 (GMT) :: Restoring disk unit 0 from CART27: ...
     [2001-02-19 06:35:00 (GMT) :: Creating an initial FEP file system on disk unit 0 ... done.:: 2001-02-19 06:45:08 (GMT)]
     Superseding condition=>  disk: Unit 0 at SCSI ID 3, status: 2, sense: 5, additional-sense: 72, sector NIL, reason: NIL
     [Error: Error while opening CART27:: UMAKE-INSTANCE on :closed NIL <<Error printing #<DTP-ARRAY 37000554450>>> with REFERENCE-COUNT = NIL]
    I concluded that the reason was that the Restore Disk utility accessed the SCSI bus directly and expected a slow CD150 drive; my 4X CD600e drive was too fast for it! Here I was: it should have been possible to install from the existing image, but I had erased it, stupid me!

    Now, I had to resort to getting a copy of my former MacIvory's 1GB FEP0 partition in order to bootstrap the machine; actually, I also copied its 700MB FEP1 partition, so as to be able to read the installed documentation while figuring out how to make a clean installation myself (otherwise, Genera would raise a condition when I tried to access any file on disk, part of the configured LMFS being on the FEP1). At a few tens of KB per second, I uploaded first to good old reliable bespin in .wa.us that has a FTP server that can resume connection, then to my home, whose ISP disconnects at best daily and actually more often than that, and changes my IP number on reconnection, then to the Mac itself. The mere transfer of 1GB from my Linux file server to the IIfx took 45 minutes, using the Anarchy FTP program. Anarchy eats 99% of the Mac's 030 CPU, for it circumvents the "cooperative" multitasking used in MacOS System 7 and does its stuff even without the cooperation of other programs. The downside is you mostly can't do anything while it runs, except attempting to abort the download; the upside is the fastest download speed you can get (280KB/s, faster than 180KB/s Appletalk file transfer or 150KB/s Fetch FTP), and it is resumable, so you can interrupt Anarchy (with a latency of tens of seconds) or otherwise crash or shutdown the machine and not have to restart the 1GB download from scratch. In the end, The transfer took more than ten hours, but it was done while I was sleeping, so I didn't really care. In the end, as the download speed through my ISP went from 50KB/s to 2KB/s, I decided to bzip2 the remaining 300MB of data so as to grab it faster; they actually fitted in a 310 bytes .bz2 -- most of the FEP partitions was actually left in original initialized state! Indeed, the whole installation, bzip2'ed was but 150MB. Had I been more clairvoyant, I'd have tried bzip2ing it before to send overseas. There is even bzip2 for MacOS (although there remains to see if it can decompress at more than 300KB/s on a IIfx).

    I could finally boot Genera on the FEP0 as it was, after using ResEdit to mimic the settings in a FEP partition freshly created by the MacIvory control panel: setting its file type and creator both to IVRY, and setting its flags to just hidden and data locked. Note that the MacIvory control panel stores the byte size of FEP partitions in a 32-bit integer that is printed as signed, although a value between 2GB and 4GB is accepted - since one would have to check through some amount of sources whether only the display code makes the mistake or not, it's better to just make a series of 2GB FEP partitions; the LMFS can spread over several FEP partitions, anyway, so why care?

    Now, gotta learn to use the beast, configure it for network access, etc. The saga continues. More soon.

    Software Annoyances
    Here are small annoyances that I've had with the machine. Up to now, I haven't been annoyed enough to teach myself how to fix them, rather than to teach myself how to work around them.
    • The whole body of network code was written in a friendlier time before the open internet brought lots of stupid and/or malicious trying to break into your machines and wreak havoc. Cryptographic protocols (which are slow on such hardware) were mostly unimplemented; the various network servers were mostly not designed to cope against attacks by external users; and there is no provision for system-enforced resource access separation between internal users. This means that you must only put your LispM in a trusted environment, and implement firewalling and/or cryptographic tunnels on your gateway if you are to make your LispM available for remote access.
    • The Symbolics NFS client tries to use the server's /etc/passwd to authenticate you, but won't work since Linux uses shadow passwords. My work around is to use a passwordless guest account for LispM NFS.
    • If you copy-paste from the documentation, you won't get a string of BASE-CHAR, but a string of fontified chars. This will confuse some of the system software, particularly the parser for the namespace configuration file. The work around is to retype the examples, or to otherwise unfontify them before to paste them into a font-sensitive place.
    • Servers are launched from my user configuration file, so I must login at the console before they are launched. Some people have patched the system to launch services automatically at startup, but I haven't gotten around to it yet.

    Photo Gallery

    Here are some pictures of the LISP machine. Click to get a full-size picture.

    Me and my LispM, 2003-01-19 Behind the Mac, 2003-01-19 Inside the beast, 2003-01-19 Cooling system for the RAM, 2003-01-19 MacIvory 3 unplugged, 2003-01-19 The MacIvory 3 in perspective, 2003-01-19 `Rapide noir' means `Fast black'; 42 and Newline mean greatness too, 2003-01-19 Two SCSI disks' shared out-of-body experience, 2003-01-19

    Mac Links

    If, like me, you're going to buy an old Macintosh to host your LispM, here are a few sites that I've found to be most useful:

    I loved MacOS when I originally saw it (long ago, on a Mac 512 or so)... but that only lasted until I actually used it. I've used many Macs since, and the more I use them, the more I hate them. The single-threaded shell of MacOS combines the interactivity of batch processing with the programmability of graphical interfaces! Some tell me about how Hypercard and AppleScript are great, but I've seen little of them being deployed, and even with them, something's rotten in the computerdom of Apple. Actually, the whole proprietary software atmosphere around Apple and its commercial and shareware third parties makes me sick. No doubt there cannot be long-term progress in such a setting, despite the raw diamonds that you sometimes find buried in that sea of mud.

    Petty hacks
    Here is the script I use to connect to my LispM from my Linux workstation. Weird: often, it fails at first and works the second time; maybe a connection timeout while the LispM loads the X server from swap (?).

    The Lisp Machine software is very refreshing, though the hardware is slow. When using it, you feel like you've discovered a lost world of forgotten wisdom: an integrated system without address space barriers, where applications exchange objects and interact with function calls, where one programmable user interface consistently spans the whole system, where the documentation is directly accessible from one contextual click. It's clearly not designed as a secure simultaneous multi-user machine by any stretch of imagination, but as far as single-user experience goes, although it lacks some fancy and whizzbang in its window system, it gives you the feeling it is the One way Nature meant programming to be, that was ignored, forgotten and/or corrupted by other computer makers.

    More Netsurfing