Several months ago I discovered the possibilities of uLisp by David-Johnson Davies. I was intrigued by the fact that unlike MicroPython/CircuitPython this subset of CommonLisp (a niche language by today's standards, but as versatile and powerful as Python) even works with older AVR hardware. Furthermore uLisp offers the possibility to run the REPL on the microcontroller itself. That way one can build a self-contained Lisp machine without underlying operating system, which David himself first demonstrated with his Lisp Badge.
It is easy to customize uLisp to one's needs, it offers an inline assembler for the different processor types and a (currently limited, but growing) uLisp compiler. This slim Lisp core and its design really feel like a Swiss Army Knife(TM) for microcontrollers. I realized this version of the ancient high-level programming language actually is future-proof and backward compatible at the same time: You can extend it endlessly by wrapping any Arduino C library into a really simple interface format, and the whole thing runs on just about any microcontroller board - cutting edge ones as well as time-honored processors like the ATmega1284 or 2560. (Even the 328P is supported, but its tiny RAM limits the fun.) It's not necessary to port your latest high-level routines back to C anymore when an older board from your drawer can be put to good use in a project.
After some tinkering with uLisp I concluded I could migrate MCU software development to it entirely, since uLisp offers access to each and every register of a processor when needed, while its own core is so (relatively) small and well documented that the mere mortal has a chance to gradually grasp its inner workings and even modify them. Plus, David updates uLisp very carefully and thoughtfully, so a new release does not break your existing routines - broad hint, valued CircuitPython team, even if churning out new features and restructuring the modules is certainly done with the best of intentions.
The home computer of my dreams
When it turned out the LiliGO T-Deck could nicely be used with uLisp as some kind of tiny home computer while being completely open to today's and upcoming latest technology, I was hooked to that idea. But I'm not the youngest of guys anymore, so machines with really tiny screens cannot be more than gadgets for me personally. Thus, I began to pursue the idea of creating a Lisp machine that's really usable without ruining one's eyes, with a full keyboard and a comfortable editor programmed in uLisp itself that can save and load my work utilizing an SD card. Thankfully, hardware components fitting into that fixed idea are available, so the LispBox came into being as the first iteration: A year 2024 true home computer that "boots" within seconds into nothing but the REPL prompt, ready to be programmed without PC or tablet support while running at incredible 600 MHz. The printed case offers a large prototyping area to accommodate a project on breadboards with ordinary jumper cables plus up to two Feather modules. Close the lid and the current project is stowed away without cluttering your desk.
Fast forward several months, and it comes clear to me that I want an additional slightly different form factor that does not need to sit on a desk: The LispDeck, a handheld version 100% compatible with the LispBox, usable while lolling on the sofa. This is what this page eventually is about, excuse my lengthy introduction. The 3D printing files for the LispDeck are on GitHub as well, and here's the current BOM - note that the concept allows for reconfiguring most of the hardware if you like, since I decided to pinch almost every module into breadboards:
- Teensy 4.1 with SD card and USB host adapter
- Adafruit RA8875 screen controller with appropriate 5" touchscreen
- Adafruit TSC2007 touchscreen controller breakout board
- 160x128 TFT screen with ST7735 controller
- KY-040 rotary encoder
- Pololu 5V Step-Up/Step-Down Voltage Regulator S7V8F5
- Adafruit Radio...