anchor.diff:  
   (defun file-name (pathname)
     "Take pathname and return file name."
  -  (unless (or (eql :wild (pathname-name pathname))
  -              (eql :wild (pathname-type pathname)))
  -    (if (pathname-type pathname)
  -        (concatenate 'string (pathname-name pathname) "." (pathname-type pathname))
  -        (pathname-name pathname))))
  +  (let ((name (pathname-name pathname))
  +        (type (pathname-type pathname))
  +        (previous-p (eql (pathname-version pathname) :previous)))
  +    (unless (or (eql :wild name)
  +                (eql :wild type))
  +      (cond ((and type previous-p)
  +             (concatenate 'string name "." type "~"))
  +            (type
  +             (concatenate 'string name "." type))
  +            (previous-p
  +             (concatenate 'string name "~"))
  +            (T
  +             name)))))
   
   (defun open-file-metadata (host pathname)
     (loop :with fat32 := (fat-structure host)
  
positive.code:         (if (eql type :wild)
              (write-char #\* s)
              (write-string type s)))
        s)))
  
  (defclass fat32-file-stream (mezzano.gray:fundamental-binary-input-stream
  
negative.code:                                type-length)
               offset)))))
  
  (defun create-file (host file cluster-n pathname-name pathname-type previous-p attributes)
    "Create file/directory"
    (multiple-value-bind (time date) (get-fat32-time)
      (let ((offset (create-directory-entry file pathname-name pathname-type previous-p))
            (cluster-number (next-free-cluster (fat host) 3)))
        ;; Terminate cluster list (allocate one cluster to the file)
        (setf (aref (fat host) cluster-number) (last-cluster-value (fat-structure host)))
  