Finish basics of Lisp parser, add simple test
diff --git a/src/lisp/scratch.s b/src/lisp/scratch.s
new file mode 100644
index 0000000..1775a0a
--- /dev/null
+++ b/src/lisp/scratch.s
@@ -0,0 +1,43 @@
+;;; scratch.s -- ideas for how code generation will work
+
+	;; (defun lisp-function (A B)
+	;;   (let ((local-var (whatever)))
+	;;     (whatever local-var (something-else 4))))
+	;; 
+	;; This means the stack looks like this:
+	;; B_value
+	;; B_tag
+	;; A_value
+	;; A_tag
+	;; result pointer
+	;; return pointer     <---- esp 
+lisp_function:
+	push ebp					; Now ebp can be used as an offset
+	mov ebp, esp
+	sub esp, 16					; 1 var, 1 temporary
+
+	;; Now, call `whatever' with no arguments
+	;; For now we will do no register allocation, so don't even
+	;; bother saving anything.
+	lea eax, [ebp - 8]
+	push eax					; Return address
+	call whatever
+
+	;; Now we need to evaluate (something-else 4) and store it in a
+	;; temporary variable.
+	;; First set up the literal 4
+	push 4 						; The value
+	push 0x20000000				; Type tag and length
+	;; Then set up the return address
+	lea eax, [ebp - 16] 
+	push eax
+	call something_else			; Result stored in temporary
+
+	;; Next function: `whatever'
+	push [ebp - 12]				; The temporary
+	push [ebp - 16]
+	push [ebp - 8]				; The variable
+	push [ebp - 4]
+	push [ebp + 4]				; The function's return address
+	call whatever
+	ret