MakerLisp Embedded Lisp Machine está dirigido a fabricantes y desarrolladores de sistemas integrados para su uso en el borde de la IoT.
La informática retro y la tecnología de visualización retro parecen estar haciendo un gran regreso en este momento. Por ejemplo, considere solo algunas de mis columnas recientes.
Puedes imaginar mi sorpresa y alegría cuando me presentaron al hombre más allá de lo retro, Luther Johnson.seguidor de lenguaje de programación lisp y el Sistema operativo CP/MLuther extrañaba la simplicidad y la inmediatez de las microcomputadoras personales de finales de la década de 1970 y principios de la de 1980, por lo que decidió diseñar y construir el sistema que quería y luego dejar que otros jugaran con él.
Comencemos con Lisp. Lisp fue designado por primera vez en 1958, lo que lo convierte en el segundo lenguaje de programación de alto nivel más antiguo (solo Fortran es un año anterior). Como uno de los primeros lenguajes de programación, Lisp fue pionero en muchas ideas en informática. Además, rápidamente se convirtió en el lenguaje preferido para las primeras investigaciones en inteligencia artificial (IA). Sorprendentemente, las listas todavía se usan ampliamente en la actualidad. Los defensores de Lisp tienden a describir a Lisp como “un lenguaje multiparadigma con un excelente soporte para la programación imperativa, funcional y orientada a objetos”, mientras que los críticos de Lisp argumentan que Lisp es “Mucho afirma ser una abreviatura de” Paréntesis estúpidos e insípidos. “.
Por supuesto, Luther es un aficionado y describe a Lisp de la siguiente manera:
En general, los entornos interpretados (como Forth, Basic, Python y muchos otros lenguajes) son adecuados tanto para la creación rápida de prototipos como para el desarrollo iterativo. En este caso, comience por desarrollar y probar pequeñas piezas del rompecabezas y construya su solución a partir de componentes confiables. Este puede ser un estilo de trabajo particularmente productivo en el desarrollo de sistemas integrados, donde debe observar y aprender a interactuar con el hardware a medida que desarrolla el software.
Familia de lenguajes Lisp [is] notable en [its] expresión concisa y [its] Alta “densidad de energía de significado”. Al mismo tiempo, Lisp es uno de los lenguajes más simples. Como tal, no hay muchos idiomas para aprender. En cambio, paso la mayor parte de mi tiempo pensando en mi código. Y gracias a la forma en que funciona Lisp y el estilo que se desarrolla a partir del proceso de escritura de programas Lisp, su código está mejor organizado, es más cohesivo y está escrito una vez que funciona en todas partes. Los programas Lisp parecen hacer más con menos código.
El dialecto MakerLisp de Lisp es Lisp con un modelo Scheme de evaluación de expresiones, ortografía y semántica comunes de Lisp, aritmética del lenguaje C y macros de bajo nivel y funciones de lenguaje con funciones de biblioteca C estándar. El sistema MakerLisp está escrito en C portátil e interpreta un pequeño lenguaje central justo a tiempo (JIT). Todos los formularios y funciones adicionales se proporcionan a través de funciones y macros de Lisp.
Un intérprete Lisp con compilación incremental JIT como MakerLisp puede entregar programas con muy buen rendimiento. El entorno Lisp es bueno para hacer las cosas rápidamente. El “código prototipo” resultante es digno de producción. Desarrollar sistemas integrados ya es bastante difícil. Puede aprovechar todas las herramientas de desarrollo disponibles, y los modelos de computación disponibles en Lisp pueden ser tan productivos en sistemas integrados como lo son en otros dominios de problemas.
La compilación incremental JIT de MakerLisp se ejecuta más lentamente que un programa Lisp completamente compilado, pero tres veces más rápido que el código Python equivalente. Pero el punto aquí es que además de Luther, Lisp tiene muchos seguidores. Desafortunadamente, no suele encontrar Lisp en placas de desarrollo de microcontroladores destinadas a fabricantes y desarrolladores de sistemas integrados para su uso en el borde de Internet de las cosas (IoT).Todo esto nos lleva a Lutero. MakerLisp Embedded Lisp Machine:
Tarjeta de procesador principal (Fuente: makerlisp.com)
El procesador principal de MakerLisp Machine viene como una computadora de placa única (SBC) del tamaño de una tarjeta de crédito con un Zilog eZ80 de 50 MHz y 1 MB de SRAM (ampliable hasta 16 MB). También hay un soporte para una batería CR1632 para ejecutar un reloj en tiempo real (RTC), y una ranura para tarjeta micro SD FAT32 a bordo proporciona almacenamiento de programas y datos (tenga en cuenta que no se pueden usar baterías ni tarjetas micro SD. por favor dame ). incluido en el tablero, pero ambos están ampliamente disponibles en las tiendas).
El software del sistema predeterminado almacenado en la memoria flash integrada es MakerLisp, una combinación de Scheme, Common Lisp y C. Este “Lisp on bare metal” no requiere sistema operativo (SO) y se puede acceder directamente desde Lisp. Escriba el programa en los registros y periféricos del eZ80. Como resultado, puede hacer cosas de tipo Arduino con un procesador más potente mientras programa en un entorno Lisp autohospedado.
Ahora, la tarjeta de procesador principal de $129 es interesante en sí misma, pero Luther también ha creado varias tarjetas adicionales que juntas forman un sistema informático completo, como puede ver a continuación.

Tableros que componen una computadora MakerLisp (fuente: makerlisp.com)
En primer lugar, está la placa de expansión de E/S. Esto se encuentra en la parte superior de la foto (la tarjeta del procesador principal está conectada en el lado izquierdo de la placa de expansión). La placa de expansión proporciona alimentación regulada de 5 V y 3,3 V, además de conectores de barril y pines de cabecera para alimentación externa adicional. También brinda acceso a las 32 entradas/salidas de propósito general (GPIO) del eZ80 a través de pines de encabezado para usar con placas opcionales y circuitos de placa de pruebas.
Luego está la placa host del controlador de teclado USB HID (centro a la derecha de la imagen) que puede administrar la entrada de la mayoría de los teclados USB comunes. También hay una placa controladora de pantalla VGA (centro a la izquierda de la imagen) que controla prácticamente cualquier monitor VGA para proporcionar una pantalla de 9×16, 30 filas por 80 columnas. Página de códigos 437 Texto ASCII extendido y caracteres gráficos.
Además, Luther creó una carcasa de madera cortada con láser personalizada para albergar todas las placas MakerLisp, un teclado USB y una placa de pruebas para la creación de prototipos (la placa de pruebas, el teclado USB, el monitor VGA y los cables asociados están incluidos en el kit, no incluidos). ).

Placa MakerLisp, placa de pruebas y teclado USB montados en una carcasa de madera cortada con láser personalizada (Fuente: makerlisp.com)
Todo el sistema, que consta de la tarjeta del procesador principal, las tarjetas de expansión de E/S, las tarjetas controladoras USB y VGA y una carcasa personalizada, Máquina MakerLisp eZ80 Lisp y CP/M de Tindie $296 (más envío).
Nuevamente, un teclado USB y un monitor VGA no están incluidos en el kit, pero están disponibles de múltiples fuentes. Por ejemplo, Teclado Vortexgear Core y el Monitor de pantalla HDMI VGA de 10,1 pulgadas Elecrow.
Para darle una idea de las posibilidades, uno de los clientes de Luther transfirió un juego BASIC retro llamado Black Box a MakerLisp y lo ingresó a la competencia. Ocupó el quinto lugar en general y el segundo en uso profesional de lenguajes Lisp. Esto demuestra que los entusiastas de Lisp realmente pueden poner sus habilidades a trabajar y exagerar sus cosas con MakerLisp Machine.

Juego retro Black Box portado a MakerLisp por Steve Losh (Fuente: makerlisp.com)
Finalmente, con respecto a CP/M, Luther me informó que este puerto está actualmente en progreso. De hecho, he iniciado y ejecutado con éxito el programa. El BIOS de CP/M reside junto con el sistema Lisp en la memoria flash en la placa del procesador MakerLisp. Ya está disponible una herramienta flash de “actualización en vivo” para instalar actualizaciones en su sistema Lisp, y se convertirá en parte de la actualización flash del sistema MakerLisp una vez que el puerto CP/M esté disponible.
¿Entonces que dices? ¿Has usado Lisp en el pasado o te gustaría aprender ahora?¿Y estás, como yo, “devorando” jugando con la máquina MakerLisp?