anchor.diff:  			 (values t disp-ch disp-fn t sub-char-alist)))))
   	  #'grovel1))))
   
  -  #+clozure
  +  (defmacro %with-readtable-iterator ((name readtable) &body body)
  +    (let ((it (gensym)))
  +      `(let ((,it (make-readtable-iterator ,readtable)))
  +	 (macrolet ((,name () `(funcall ,',it)))
  +	   ,@body)))))
  +#+clozure
  +(progn
     (defun make-readtable-iterator (readtable)
       (let ((char-macro-alist (ccl::rdtab.alist readtable)))
         (lambda ()
  
positive.code: (declaim (inline %standard-readtable))
  (defun %standard-readtable ()
    #+sbcl+sb-reader sb-reader:*standard-readtable*
    #+clozure ccl::%initial-readtable%
    #-(or sbcl+sb-reader clozure)
    (copy-readtable nil))
  
  #+sbcl+sb-reader
  (defmacro %with-readtable-iterator ((name readtable) &body body)
    `(sb-reader:with-readtable-iterator (,name ,readtable) ,@body))
  
  #+(or (and sbcl (not sbcl+sb-reader)) clozure)
  (progn
    #+sbcl
    (defun make-readtable-iterator (readtable)
      (let ((char-macro-array (sb-impl::character-macro-array readtable))
  	  (char-macro-ht    (sb-impl::character-macro-hash-table readtable))
  
negative.code:       `(let ((,it (make-readtable-iterator ,readtable)))
  	 (macrolet ((,name () `(funcall ,',it)))
  	   ,@body)))))
  
  
  #-allegro
  (progn
  