From 8cc46dde04bcef5a8a5fa5a75ed4ed5d5b9908fc Mon Sep 17 00:00:00 2001 From: Jacques Comeaux Date: Fri, 26 Jan 2024 01:04:26 -0600 Subject: Add background to README --- README.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'README.md') diff --git a/README.md b/README.md index 6566c96..41a7624 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,40 @@ # LISP and beyond from bare metal It's `eval`s all the way up + +## Background + +In 2022 I wrote a LISP interpreter in PDP-11 assembly, +hand-translated it into machine code, +and toggled it in directly to the front panel +of my PhD advisor's PiDP-11. +I kept as close as possible +to the system described in John McCarthy's original paper +(other than fixing the known bug in `eval`). + +This is that project. +The original plan involved using it +to bootstrap an even better interpreter, +but I lost some momentum +when I realized +the thing I created had dynamic instead of lexical scoping, +and also when +the PiDP-11 got turned off +and lost its emulated memory contents. + +I gave a little presentation on it anyway; +the slides for that can be found +[here](https://jacquescomeaux.xyz/lisp-from-scratch.pdf). +In short, S-Functions manipulate S-Expressions, +but descriptions of S-Functions *are* S-Expressions. +`eval` is the S-Function that reads an S-Expression +which describes an S-Function, +and does the thing that that description describes. + +## Learning more + +If you want to know more +and know how to find me in real life, +please do so +and I'd be happy to talk +about any of this stuff in more detail. -- cgit v1.2.3