   (let [code [[:ldc 0 "; #main"]
               (load-fn 0 'step)
               [:cons]
-              [:rtn]]
+              [:rtn "; end main"]]
         main {:name 'main
               :code code
               :length (count code)}]

               [:st 0 (.indexOf @locals x) (format "; store %s" x)]
               (load-local xs-sym)
               [:cdr]
               [:st 0 (.indexOf @locals xs-sym) (format "; store %s" xs-sym)]]

              (compile-form vars fns body)

              (tag-with cond-tag [(load-local xs-sym)])
              [[:atom]
               [:tsel (str "@" done-tag) (str "@" loop-tag)]]

              (tag-with loop-tag [[:ldc 0]])
              [[:sel (str "@" body-tag) (str "@" body-tag)]
               [:cons]
               [:join]]


                     loads
                     [[:ldf "@main ; load main"]
                      [:rap (count fns)]
                      [:rtn "; end prelude"]])
        prelude {:name 'prelude
              :code code
              :length (count code)}]
