aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Comeaux <jacquesrcomeaux@protonmail.com>2024-01-26 01:04:26 -0600
committerJacques Comeaux <jacquesrcomeaux@protonmail.com>2024-01-26 01:04:26 -0600
commit8cc46dde04bcef5a8a5fa5a75ed4ed5d5b9908fc (patch)
tree8357b223530316fecc612feda7e2aa1cf4e5b915
parent4d5e7408cd0584d8772eac882cf7f8a9ca4570e9 (diff)
Add background to READMEmain
-rw-r--r--README.md37
1 files changed, 37 insertions, 0 deletions
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.