anchor.diff:  (defgeneric send-text    (nvt text)
     (:documentation "Send the ASCII text.
   NVT:  a NETWORK-VIRTUAL-TERMINAL instance.
  -TEXT: a string containing only printable ASCII characters and #\newline."))
  +TEXT: a string containing only printable ASCII characters and #\newline,
  +      or a vector of (unsigned-byte 7) containing only codes
  +      between 32 and 126, or (char-code #\newline).
  +When the TEXT is a string, it's encoded into an ASCII code sequence.
  +When the TEXT is a vector of bytes, it's transmitted as is
  +(its content is still checked, to be conservative).
  +"))
   
   (defgeneric send-control (nvt control)
     (:documentation "Send a function control code.
  
positive.code:                    :accessor urgent-mode-p
                     :reader nvt-urgent-mode-p
                     :documentation "Urgent mode: we've received an urgent notification
  and are discarding text bytes till the next IAC DM."))
    (:documentation "Represents a telnet end-point (both 'client' and 'server')."))
  
  (defgeneric init-option-name (nvt option-name))
  
negative.code:     (send-raw-bytes nvt processed-bytes)))
  
  
  (defmethod send-text    ((nvt network-virtual-terminal) (text string))
    "Send the ASCII text.
  NOTE: To send other characters than printable ASCII characters, use SEND-BINARY.
  NVT:  a NETWORK-VIRTUAL-TERMINAL instance.
  TEXT: a string containing only printable ASCII characters and #\newline."
    (let ((processed-bytes (process-text text)))
      (send-binary nvt processed-bytes)))
  
  
  (defun validate-ascii-bytes (bytes)
    (loop
      :with i := 0
      :while (< i (length bytes))
      :do (let ((code (aref bytes i)))
            (unless (or (and (<= SP code) (< code DEL))
                        (and (= CR code)
                             (< (incf i) (length bytes))
                             (= LF (aref bytes i))))
              (error 'decoding-error
                     :code code
                     :coding-system :us-ascii
                     :message (cond
                                ((= CR code)
                                 (format nil "Invalid line separator ~S at position ~D; expected a CR-LF (13 10) subsequence."
                                         (vector code (aref bytes i)) i))
                                ((or (< code sp) (= code del))
                                 (format nil "ASCII control code ~D (#x~:*~2,'0X), at position ~D, cannot be converted to characters."
                                         code i))
                                (t
                                 (format nil "Non-ASCII code ~D (#x~:*~2,'0X) (greater than 127), at position ~D"
                                         code i)))))
            (incf i))))
  
  
  (defmethod send-text    ((nvt network-virtual-terminal) (bytes vector))
    "Send the ASCII bytes.
  NOTE: To send other characters than printable ASCII characters, use SEND-BINARY.
  NVT:  a NETWORK-VIRTUAL-TERMINAL instance.
  TEXT: a byte vector containing only printable ASCII characters codes and CR-LF (13 10) subsequences."
    (validate-ascii-bytes bytes)
    (send-raw-bytes nvt bytes))
  
  
  (defmethod send-control ((nvt network-virtual-terminal) control)
  