Download uLisp
Version 4.1
Version 4.1 of uLisp adds a register function to allow you to read the values of the peripheral registers, or write values to the registers. It allows you to control the peripherals in the processor from a Lisp program, or interactively experiment with the peripherals by giving commands at the uLisp prompt.
Latest versions
There are currently four actively maintained versions of uLisp. Download the correct one for your platform:
AVR version
Download the latest AVR version of uLisp for the Arduino Uno, Arduino Mega 2560, ATmega1284, ATmega4809, and AVR DA/DB-series platforms here:
AVR Version 4.1a - 30th December 2021
or get it from GitHub at https://github.com/technoblogy/ulisp.
ARM version
Download the latest ARM version of uLisp for the Arduino Zero, Arduino MKRZero, Adafruit M0 boards, Adafruit M4 boards, Adafruit PyBadge/PyGamer, Adafruit nRF52840 boards, BBC Micro Bit, Calliope mini, MAX32620FTHR, Teensy 4.0/4.1, and RP2040-based boards here:
ARM Version 4.1a - 15th February 2022
or get it from GitHub at https://github.com/technoblogy/ulisp-arm.
ESP version
Download the latest ESP version of uLisp for the ESP8266 and ESP32 platforms here:
ESP Version 4.0b - 20th October 2021
or get it from GitHub at https://github.com/technoblogy/ulisp-esp.
RISC-V version
Download the latest RISC-V version of uLisp for the Sipeed Maixduino, MAiX One Dock, and MAiX BiT boards here:
RISC-V Version 4.0a - 9th July 2021
or get it from GitHub at https://github.com/technoblogy/ulisp-riscv.
Other platforms
These versions are also available, but are not currently up to date with the newer features:
MSP430 version
Download the version of uLisp for the Energia MSP430 platforms here:
MSP430 Version 2.7c - 20th June 2019
or get it from GitHub at https://github.com/technoblogy/ulisp-msp430.
STM32 version
Download the STM32 version of uLisp for the Maple Mini and Blue Pill platforms here:
STM32 Version 3.0b - 11th January 2020
or get it from GitHub at https://github.com/technoblogy/ulisp-stm32.
Installing uLisp
The download is a single text file. To compile it in the Arduino IDE either save it as a text file and rename it to a .cpp file, or copy and paste the text into a new empty project file. You can download the latest Arduino IDE from arduino.cc.
Select the correct Board option for your platform on the Tools menu, select the USB port from the Port menu, and upload uLisp. You should then be able to select Serial Monitor from the Tools menu, and interact with uLisp.
The following pages give specific advice for installing uLisp on these platforms:
If you're using uLisp with the Arduino IDE on Debian or OpenBSD see these threads on GitHub: https://github.com/technoblogy/ulisp/pull/2 and https://github.com/technoblogy/ulisp/pull/22.
Note that saved images are not generally compatible between different versions of uLisp.
Compile options
The uLisp sources provide the following compile options:
Option | Default | Description |
checkoverflow * | enabled | Generates an error if underflow/overflow occurs in arithmetic operations. |
resetautorun | disabled | Loads, and optionally runs, an image using load-image on reset. |
printfreespace | enabled | Prints the number of free objects before the uLisp prompt. |
printgcs | disabled | Prints the amount of space reclaimed after each garbage collection. |
sdcardsupport | disabled | Provides SD card support using with-sd-card. |
gfxsupport ** | disabled | Provides graphics extensions for use with a suitable display. |
lisplibrary | disabled | Evaluates the Lisp definitions provided in the Lisp Library on reset. |
assemblerlist *** | enabled | Generates an assembler listing from defcode. |
lineeditor | disabled | Provides a line editor for use when using uLisp from a terminal. |
vt100 | disabled | Provides parenthesis matching on VT100-compatible terminals. |
* Not applicable to the versions with floating point.
** Only applicable to the versions with graphics extensions; currently ARM, ESP, and RISC-V.
*** Only applicable to versions with defcode; currently ARM, RISC-V, and AVR.
Older versions
See Older versions.
Test suites
The following files contains test suites I use for testing each release of uLisp. You may find these useful if you are porting uLisp to another platform:
Test suite - 8/16-bit version (AVR uLisp)
Test suite - 32-bit version (ARM, ESP, and RISC-V uLisp)
Test suite - Floating point (ARM, ESP, and RISC-V uLisp)