anchor.diff:  
   ;;;; TOPLEVEL
   
  -(defun js-transpile (x)
  -  (with-open-file f (open "tre-base.js" :direction 'output)
  -    (format t "Compiling JavaScript core functions...~%")
  -    (format f "~A" (transpiler-pass2 *js-transpiler* *js-base*)))
  -  (transpiler-transpile *js-transpiler* x "js.js"))
  +(defun read-many (str)
  +  (with (x nil)
  +	(while (not (end-of-file str)) (reverse x)
  +	  (awhen (read str)
  +		(push ! x)))))
  +	
  +(defun js-transpile (outfile infiles)
  +  (with (x nil)
  +	(dolist (file infiles)
  +	  (format t "Reading file '~A'.~%" file)
  +  	  (with-open-file f (open file :direction 'input)
  +	    (setf x (append x (read-many f)))))
  +    (with-open-file f (open outfile :direction 'output)
  +	  (with (base (or (format t "Compiling JavaScript core...~%")
  +      				  (transpiler-pass2 *js-transpiler* *js-base*))
  +	  		 user (or (format t "Compiling user code...~%")
  +      				  (transpiler-transpile *js-transpiler* x)))
  +	    (format t "Emitting code.~%")
  +		(format f "~A~A" base user)))))
   
   (defun js-machine (outfile)
     (with-open-file f (open outfile :direction 'output)
  
positive.code: (define-js-binary bit-and "&")
  (define-js-binary bit-or "|")
  
  (define-js-macro make-array (&rest ignored)
    "[]")
  
  (define-js-macro aref (arr &rest idx)
    `(%transpiler-native ,arr
  
negative.code: 		  (list (first x) ":" (second x))))
     "}"))
  
  (define-js-macro %new (&rest x)
    `(%transpiler-native "new " ,(first x) "(" ,@(transpiler-binary-expand "," (cdr x)) ")"))
  
  ;; Make object if first argument is not a keyword, or string.
  (define-js-std-macro new (&rest x)
    (if (and (consp x)
  		   (or (keywordp (first x))
  			   (stringp (first x))))
  	  `(make-hash-table ,@x)
  	  `(%new ,@x)))
  
  (define-js-macro vm-go (tag)
    `("__l=\"" ,(transpiler-symbol-string *js-transpiler* tag) "\"; continue"))
  
  