Tiny Lisp Computer

The Tiny Lisp Computer 2 is a small self-contained computer based on an ATmega1284, with its own display and keyboard, that you can use to program in uLisp.

You can build it on a prototyping board using the PDIP version of the ATmega1284P:

TinyLispComputer2.jpg

For details see Tiny Lisp Computer 2 on Technoblogy.

There's also a PCB you can use to build one:

TinyLispComputer2PCB.jpg

For details see Tiny Lisp Computer 2 PCB on Technoblogy.

Specification

Display: 21 characters x 8 lines.

Memory available: 3001 Lisp cells (12004 bytes).

EEPROM: 1024 Lisp cells (4K bytes).

Language: uLisp, a subset of Common Lisp, with 125 Lisp functions and special forms. For a full definition see uLisp Language Reference.

Types supported: list, symbol, and integer.

An integer is a sequence of digits, optionally prefixed with "+" or "-". Integers can be between -32768 and 32767. You can enter numbers in hexadecimal, octal, or binary with the notations #x2A, #o52, or #b101010, all of which represent 42.

User-defined symbol names can have up to three characters consisting of a-z and 0-9. Any sequence that isn't an integer can be used as a symbol; so, for example, 12a is a valid symbol.

There is one namespace for functions and variables; in other words, you cannot use the same name for a function and a variable.

Includes a mark and sweep garbage collector. Garbage collection takes under 11 msec.

Interfaces:

  • Analogue input using analogread: A0 to A7 (24 to 31)
  • Analogue output using analogwrite: 3, 4, 6, 7 , and 12 to 15
  • Digital input and output using pinmode, digitalread, and digitalwrite: 0, 3 to 19, A0 to A7 (24 to 31)
  • I2C using with-i2c and restart-i2c: 16 and 17
  • SPI using with-spi: 5, 6, 7

As on an Arduino Uno, pin 13 is connected to an LED.