This book delves straight into the internals of an interactive LISP system. The complete source code is presented and discussed in great detail. Emphasis is on compilation to abstract machine code, but lots of topics will be discussed at length, including: LISP data objects, syntax analysis, closure conversion, lambda lifting, operational semantics, bytecode generation, bytecode interpretation, primitive functions, bootstrapping LISP code, macro expansion, lexical and dynamic binding, tail call elimination, garbage collection, non-local exits, the REPL, reading and printing LISP objects, input and output ports, error handling, heap image files, etc... The C and LISP code in this book is comprehensible rather than clever. Lots of design decisions, background information, and historical tidbits are provided.