I decided to try to write a Lisp interpreter for the CDC 6600. I had no clear idea of the inner interpretive loop but it was clear how to evaluate at least some expressions. I wrote code for those expressions and it became clear how to interpret larger classes of Lisp code. I went into the mode of letting the assembler drive the order of implementation as it reported undefined symbols. One day it reported no undefined symbols and after a relatively small number of bugs the interpreter began running.
I never did identify the inner interpretive loop.