20

What LISP or LISP-like language compilers and interpreters were available for 8-bit microcomputers? Criteria for "8-bit" include that it should certainly run and execute non-trivial programs given no more than 64 KB of RAM, and ideally it should run in much smaller amounts of RAM or RAM+ROM, the just as the common 8-bit BASICs do.

In answers, the following information would be interesting to me:

  • Pricing information, if it was commercial software.
  • Historical and current availability of source and binaries.
  • The dialect of LISP (LISP1.5, MACLISP, Interlisp, Scheme, etc.) that the implementation is most similar to, if any.
  • Anything that's unusual about the language (special features, significant differences from a standard dialect it otherwise adheres to, etc.)
  • What kind of editor it provided, or what editors were expected to be used if none was.
  • Memory and offline storage usage.
  • Any interesting details about how it was implemented, or links to such.

I'm especially interested in implementations that have been used to write substantial programs (or large parts of them) and/or commercial software, though of course information about even "toy" interpreters is also welcome.

If you're not sure if a language is "LISP-like," one criterion you could consider is whether functions passed to other functions (as in map) is an easy and common idiom in it.

14
  • 7
    @Chenmunka LISP compilers have existed from the start (Hart and Levin's compiler for LISP 1.5 in 1962, the world's first self-hosting compiler) to the modern day (Clojure), and as Wikipedia states, "most substantial Lisp systems also include a compiler" and "some Lisp systems compile every expression to native machine code."
    – cjs
    Jun 2, 2019 at 13:14
  • 6
    @Chenmunka Particularly for smaller machines (which is of course what we're talking about here), a compiler may be required if one wants to write substantial programs in LISP. (L Peter Deutsch's PDP-1 port of LISP 1.5 was apparently not terribly usable for practical programs because there was simply not enough RAM left after the interpreter used its part of the 4 Kword (≃ 8-12 Kbytes) address space.) I'm particularly interested in non-toy implementations that might be used to write commercial sofware, so I'd definitely like to hear about compilers, if there were any.
    – cjs
    Jun 2, 2019 at 13:21
  • 3
    @Chenmunka the whole "Lisp is interpreted" thing is a long dead myth and misunderstanding. Jun 2, 2019 at 17:27
  • 6
    @WillHartung: Anybody who knows the slightest bit about programming languages knows that compilation or interpretation are not traits of the programming language but the compiler or interpreter (duh!). I think it was Shriram Krishnamurthi who said that if English were typed, "compiled language" and "interpreted language" would be type errors. The question "Is Lisp interpreted" cannot even be answered with "No", since the question is fundamentally non-sensical. Jun 2, 2019 at 21:37
  • 4
    @Chenmunka It doesn't seem to have been the the case in the late 70s and early 80s, when 8-bit micros were most popular, that "almost all" Lisps were TILs, and I don't know if it was ever really the case. But if you're concerned, perhaps you could ask a question about that. (I makes little difference as far as this question goes, since I explicitly included interpreters in the question.)
    – cjs
    Jun 3, 2019 at 8:27

3 Answers 3

25

To volunteer a few:

Acornsoft LISP. First released in 1982 on tape, disk and ROM chip for the BBC Micro and rereleased as a cartridge for the Acorn Electron in 1984; possibly related to the Apple II's Owl LISP.

SpecLISP. Released in 1983 for the ZX Spectrum, a subset of Stanford LISP. It wasn't well-documented at the time, so is a little obscure. Includes Logo-style drawing functions.

Microsoft LISP. A CP/M product originally, later ported to machines including the 8-bit Apple II and TRS-80. Not just an interpreter, also a compiler (at least for the two 8080/z80 platforms).

Micro-LISP. A public domain LISP interpreter from 1986 for the Commodore 64 by Nick Vrtis.

LISP 64. Another LISP interpreter from 1986 for the Commodore 64 (author: Peter Feldtmann).

Inter-LISP/65 for Atari 8-bit computers.

PLisp for the Apple II.

6
  • 7
    Community Wiki, as I haven't provided a great deal of detail and perhaps somebody else can.
    – Tommy
    Jun 2, 2019 at 1:22
  • 3
    Microsoft Lisp :-o Now THERE would have been an interesting language for extending newer Microsoft products instead of VBA. Jun 2, 2019 at 18:12
  • 7
    @ThorbjørnRavnAndersen: Microsoft has done a lot of cool stuff they never productized or abandoned along the way. They did the first Unix for PCs (Xenix), Windows NT started out as a very nicely designed OS that was highly portable (x86, PowerPC, Sparc, MIPS, Alpha, IA-64, ARM, AMD64) and had clear abstraction layers that allowed multiple "personalities" on top of the kernel (Win16, Win32, DOS, OS/2, POSIX), their Research Division is incredible (they employ Simon Peyton Jones, for example, lead designer of Haskell and GHC, and Tony friggin Hoare!), the Singularity OS was brilliant. Jun 2, 2019 at 21:48
  • 1
    Over the past 10-15 years, they have been working to get Windows back into the shape it was when NT first came out, and ports to ARM, as well as stuff like Windows Subsystem for Linux are the result. I think it started with the XBox, which forced them to revive the abandoned PowerPC port. Jun 2, 2019 at 21:49
  • My parents had a Lisp interpreter for the Commodore Pet. I can't remember what it was called though.
    – JeremyP
    Jun 3, 2019 at 9:10
8

The following answer isn't strictly speaking a version of LISP. That's why I didn't add it to the community answer.

ZIL, the Zork Implementational Language, was intended to allow interactive fiction games to run on desktops. ZIL was derived from MDL which, in turn, was derived from LISP. But ZIL wasn't really a full blown Lisp.

Infocom's original compiler for ZIL, Zorch, was never made publicly available, but there is also an open source compiler, ZILF, which includes a incomplete ZIL language description

10
  • 2
    @CurtJ.Sampson Okay, then another not-actual-Lisp non-answer would be Logo. This mostly-educational language was available for quite a number of 8-bit machines.
    – RichF
    Jun 2, 2019 at 13:39
  • 1
    @RichF Wow. I just had a scan through the Apple Logo II Reference Manual; I had no idea that Logo was so LISPy, passing code blocks for IF etc. and with even the ability to rewrite its own definitions. That said, it doesn't seem to use the "passing functions to functions" idiom, as ZIL does, that would make it feel truly LISPy to me.
    – cjs
    Jun 2, 2019 at 14:33
  • 1
    In fact DR LOGO was included with Amstrad disc-based CPC machines. However, LOGO is a long way sorry of being LISP, despite some great list processing functionality. Jun 2, 2019 at 16:11
  • 1
    Back to ZIL: further research makes it peretty clear that it is indeed a LISP at its core (it's basically a variant of MDL designed to execute code originally written in MDL with extensions). I am not clear on how much has been removed, but it's looking like it may have been too much to make this a general-purpose LISP.
    – cjs
    Jun 3, 2019 at 1:26
  • 1
    In short, ZIL is a DSL implemented on top of MDL, such that the full expressiveness of MDL is available at compile time for macros and type checking, but the runtime environment has no garbage collector, so the compiled subset of the language has no dynamic allocation. Jun 12, 2019 at 18:06
7

There was a variant of InterLisp for Atari 8-bit systems.

There was Gnosis P-Lisp for Apple II, which was very simple.

There were a number of Lisp implementations for Z-80 running CP/M.

And, straddling the 8/16-bit divide, there was Golden Common Lisp for IBM PC, which ran on 8088 (and runs nicely on my HP 95LX as a result) but actually was a real Common Lisp implementation.

Of course the various 16 bit systems got more “real” Lisp implementations, especially as memory available grew.

1
  • 1
    I'm not actually interested in (most?) 16-bit implementations, and this helped me figure out why: "small memory" turns out to be an integral characteristic I'm looking for. So thanks for helping out with that. The two implementations you linked are helpful.
    – cjs
    Jun 3, 2019 at 6:07

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .