anchor.diff:  ;;;;AUTHORS
   ;;;;    <PJB> Pascal J. Bourguignon <pjb@informatimago.com>
   ;;;;MODIFICATIONS
  +;;;;    2021-05-14 <PJB> Added REPLACE-ASCII-BYTES and REPLACE-ASCII-CHARACTERS.
   ;;;;    2012-04-20 <PJB> Added conditions;
   ;;;;                     Added :start and :stop to ASCII-STRING and ASCII-BYTES.
   ;;;;                     Added ASCII-CONTROL-CODE-P and ASCII-PRINTABLE-CODE-P.
  
positive.code:           NEWLINE parameter.
  NEWLINE:  (member :crlf :cr :lf) ; the default is *NEWLINE*.
  "
    (loop
      :with newline = (output-newline newline)
      :with bytes = (make-array
                     (+ (- end start)
                        (if (eq newline :crlf)
                            (count #\newline string :start start :end end)
                            0))
                     :element-type '(unsigned-byte 8))
      :with b = -1
      :for i :from start :below end
      :for ch = (aref string i)
      :do (if (char= ch #\newline)
              (ecase newline
                ((:crlf) (setf (aref bytes (incf b)) cr
                               (aref bytes (incf b)) lf))
                ((:cr)   (setf (aref bytes (incf b)) cr))
                ((:lf)   (setf (aref bytes (incf b)) lf)))
              (setf (aref bytes (incf b)) (ascii-code ch)))
      :finally (return bytes)))
  
  
  (defun ascii-dispatch-macro (stream sub-char argument)
  
negative.code:        (- code #.(ascii-code #\0))))
  
  
  (defun replace-ascii-characters (string bytes &key (newline *newline*) (start1 0) end1 (start2 0) (end2 (length bytes)))
    (loop
      :with newline := (input-newline newline)
      :with endd := (or end1 (length string))
      :with len := (- end2 start2)
      :with j := start2
      :for code := (aref bytes j)
      :for i :from start1 :below endd
      :while (< j end2)
      :do (if (<= sp code 126)
              (setf (aref string i) (aref *ascii-characters* (- code sp)))
              (case code
                ((#.cr)
                 (ecase newline
                   ((:crlf) (if (and (< (1+ j) len) (= lf (aref bytes (1+ j))))
                                (progn (incf j)
                                       (setf (aref string i) #\newline))
                                (ascii-error code)))
                   ((:any)  (if (and (< (1+ j) len) (= lf (aref bytes (1+ j))))
                                (progn (incf j)
                                       (setf (aref string i) #\newline))
                                (setf (aref string i) #\newline)))
                   ((:cr)   (setf (aref string i) #\newline))
                   ((:lf)   (ascii-error code))))
                ((#.lf)
                 (ecase newline
                   ((:any  :lf) (setf (aref string i) #\newline))
                   ((:crlf :cr) (ascii-error code))))
                (otherwise (ascii-error code))))
      :finally (return string)))
  
  
  (defun ascii-string (bytes &key (newline *newline*) (start 0) (end (length bytes)))
    "
  