The 32-bit version of uLisp for ARM, ESP, and RISC-V microcontroller boards now extends its array support to include bit arrays.
Bit arrays will be particularly useful in the microcontroller-based applications that uLisp is aimed at as they can efficiently store the state of digital I/O lines, digital signals, or display pixels. You could use them as the basis for a data logger, low-speed logic analyzer, or other digital application.
uLisp's implementation supports bit arrays with an arbitrary number of dimensions, and packs bit arrays as efficiently as possible, so they take up a factor of 32 less storage than the equivalent-sized integer array.
There are currently four actively maintained versions of uLisp. Download the correct one for your platform:
Download the latest AVR version of uLisp for the Arduino Uno, Arduino Mega 2560, ATmega1284, and ATmega4809 platforms here:
AVR Version 3.3 - 1st June 2020
or get it from GitHub at https://github.com/technoblogy/ulisp.
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, and Teensy 4.0/4.1 platforms here:
ARM Version 3.3a - 1st July 2020
or get it from GitHub at https://github.com/technoblogy/ulisp-arm.
Download the latest ESP version of uLisp for the ESP8266 and ESP32 platforms here:
ESP Version 3.3 - 1st June 2020
or get it from GitHub at https://github.com/technoblogy/ulisp-esp.
Download the latest RISC-V version of uLisp for the Sipeed Maixduino, MAiX One Dock, and MAiX BiT boards here:
RISC-V Version 3.3 - 1st June 2020
or get it from GitHub at https://github.com/technoblogy/ulisp-riscv.
These versions are also available, but are not currently up to date with the newer features:
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.
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.
This download is a single text file. To compile it in the Arduino or Energia 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.
To install uLisp on the BBC Micro Bit see BBC Micro:bit.
Note that saved images are not generally compatible between different versions of uLisp.
The uLisp sources provide the following compile options:
|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 and RISC-V.
See Older versions.
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 (ATmega and MSP430)
Test suite - 32-bit version (ARM and ESP8266)
Test suite - Floating point (ARM and ESP8266)