ref: 85672c88b534e613ab761628767c8d1c8be4ccdf
dir: /mkboot0.lsp/
; -*- scheme -*-
(if (not (bound? 'top-level-value)) (set! top-level-value %eval))
(if (not (bound? 'set-top-level-value!)) (set! set-top-level-value! set))
(if (not (bound? 'eof-object?)) (set! eof-object? (λ (x) #f)))
(define update-compiler
   (let ((C ()))
     (with-bindings
       ((eval (λ (x) (set! C (cons (compile-thunk (expand x)) C)))))
       (begin
         (load "instructions.lsp")
         (load "compiler.lsp")))
     (λ () (begin
             (for-each (λ (x) (x)) (reverse! C))
             (set! update-compiler (λ () ()))))))
(define (compile-file inf)
  (update-compiler)
  (let ((in  (file inf :read)))
    (let next ((E (read in)))
      (if (not (io-eof? in))
	  (begin
	     (print (compile-thunk (expand E)))
		 (princ "\n")
		 (next (read in)))))
    (io-close in)))
(for-each (λ (file)
	  (compile-file file))
	  (cdr *argv*))