anchor.diff:  (defmethod open-serial :around ((s <serial-posix>))
     (unless (port s) (error 'serial-error :text "Port must be configured before it can be used."))
     (when (get-fd s) (error 'serial-error :text "Port is already open"))
  -  (call-next-method))
  +  (call-next-method)
  +  (configure-port s))
   
   (defmethod open-serial ((s <serial-posix>))
  -  (print (port s))
     (let* ((fd (unistd:open
   	      (port s)
   	      (logior unistd:ORDWR 
  
positive.code: 
  (defmethod configure-port ((s <serial-posix>))
    (let ((termios (unistd:tcgetattr (get-fd s)))
  	(vtime (and (inter-char-timeout s) (floor (* 10 (inter-char-timeout s))))))
      (macrolet ((set-flag (flag &key (on ()) (off ()))
  		 `(setf ,flag 
  			(logior ,@(mapcar (curry-right 'find-symbol :unistd) on) 
  
negative.code: 		   (let ((on (reduce #'fn on :initial-value nil))
  			 (off (reduce #'fn off :initial-value nil)))
  		     `(setf ,flag (logior ,@on (logand ,flag (lognot (logior ,@off)))))))))
  
        ;; setup raw mode/ no echo/ binary	
        (set-flag (unistd:cflag termios)
  		:on ("CLOCAL" "CREAD"))
        (set-flag (unistd:lflag termios)
  		:off ("ICANON" "ECHO" "ECHOE" "ECHOK" "ECHONL" "ISIG" "IEXTEN"))
        
        (set-flag (unistd:oflag termios)
  		:off ("OPOST"))
  