anchor.diff:                               (add 14 25)
                                (add 28 31))))))))
   
  +(defun (setf read-long-name) (long-name directory start-offset)
  +  (flet ((set (start end name-offset name-length)
  +           (loop :for disk-offset :from (+ start start-offset) :by 2 :to (+ start end start-offset)
  +                 :for name-offset :from name-offset :by 1
  +                 :do (setf (sys.int::ub16ref/le directory disk-offset)
  +                           (cond ((= name-offset name-length)
  +                                  #x0000)
  +                                 ((< name-offset name-length)
  +                                  (char-code (aref long-name name-offset)))
  +                                 (t #xFFFF))))))
  +    ;; Write long name part starting from last part
  +    (loop :with name-length := (length long-name)
  +          :with n := (ceiling (/ name-length 13))
  +          :with checksum := (checksum directory (+ (* 32 n) start-offset))
  +          :repeat n
  +          :for part-n :from n :by -1
  +          :for name-offset := (* (1- part-n) 13)
  +          :for order := (+ part-n #x40) :then part-n
  +          :do (progn (set 1 8 name-offset name-length)
  +                     (set 14 10 (+ 5 name-offset) name-length)
  +                     (set 28 2 (+ 11 name-offset) name-length)
  +                     (setf (aref directory start-offset) order
  +                           (aref directory (+ start-offset 11)) #x0F ;attributes
  +                           (aref directory (+ start-offset 12)) 0
  +                           (aref directory (+ start-offset 13)) checksum
  +                           (sys.int::ub16ref/le directory (+ start-offset 26)) 0
  +                           start-offset (next-space directory start-offset))))))
  +
   (defun read-file-name (directory file)
     (let ((long-name (read-long-name directory file)))
       (if (string= "" long-name)
  -        (let ((file-name (read-name directory file)))
  +        (let ((file-name (read-short-name directory file)))
             (with-output-to-string (name)
               (loop :for i :from 0 :to 7
                     :never (char= #\Space
  
positive.code: 
  (defun file-p (directory offset)
    (= (ldb (byte 1 +attribute-archive+)
            (aref directory (+ 11 offset)))
       1))
  
  (defun directory-p (directory offset)
    (= (ldb (byte 1 +attribute-directory+)
            (aref directory (+ 11 offset)))
       1))
  
  (defun read-file (fat32 disk start-cluster fat)
  
negative.code:       (replace temp-buf array :start2 (* n-cluster spc sector-size))
        (mezzano.supervisor:disk-write disk (first-sector-of-cluster fat32 cluster-n) spc temp-buf))))
  
  (defun read-attributes (directory offset)
    (aref directory (+ offset 11)))
  
  (defun (setf read-attributes) (attributes directory offset)
    (setf (aref directory (+ offset 11)) attributes))
  
  (defun read-reserved (directory offset)
    (aref directory (+ offset 12)))
  
  (defun (setf read-reserved) (reserved directory offset)
    (setf (aref directory (+ offset 12)) reserved))
  
  (defun read-creation-time-tenth (directory offset)
    (aref directory (+ offset 13)))
  
  (defun (setf read-creation-time-tenth) (tenth directory offset)
    (setf (aref directory (+ offset 13)) tenth))
  
  (defun read-creation-time (directory offset)
    (sys.int::ub16ref/le directory (+ offset 14)))
  
  (defun (setf read-creation-time) (time directory offset)
    (setf (sys.int::ub16ref/le directory (+ offset 14)) time))
  
  (defun read-creation-date (directory offset)
    (sys.int::ub16ref/le directory (+ offset 16)))
  
  (defun (setf read-creation-date) (date directory offset)
    (setf (sys.int::ub16ref/le directory (+ offset 16)) date))
  
  (defun read-last-access-date (directory offset)
    (sys.int::ub16ref/le directory (+ offset 18)))
  
  (defun (setf read-last-access-date) (date directory offset)
    (setf (sys.int::ub16ref/le directory (+ offset 18)) date))
  
  (defun read-write-time (directory offset)
    (sys.int::ub16ref/le directory (+ offset 22)))
  
  (defun (setf read-write-time) (time directory offset)
    (setf (sys.int::ub16ref/le directory (+ offset 22)) time))
  
  (defun read-write-date (directory offset)
    (sys.int::ub16ref/le directory (+ offset 24)))
  
  (defun (setf read-write-date) (date directory offset)
    (setf (sys.int::ub16ref/le directory (+ offset 24)) date))
  
  (defun read-first-cluster (directory offset)
    (logior (ash (sys.int::ub16ref/le directory (+ 20 offset)) 16)
            (ash (sys.int::ub16ref/le directory (+ 26 offset)) 0)))
  
  (defun (setf read-first-cluster) (cluster-n directory offset)
    (setf (sys.int::ub16ref/le directory (+ offset 20)) (ldb (byte 16 16) cluster-n)
          (sys.int::ub16ref/le directory (+ offset 26)) (ldb (byte 16 0) cluster-n)))
  
  (defun read-file-size (directory offset)
    (sys.int::ub32ref/le directory (+ 28 offset)))
  
  (defun (setf read-file-size) (size directory offset)
    (setf (sys.int::ub32ref/le directory (+ offset 28)) size))
  
  (defun checksum (array offset)
    "Return checksum of sort name"
  