anchor.diff:          :when (zerop m)
           :return (ash i -2)))
   
  +(defun get-fat32-time ()
  +  "Return time and date in fat32 format"
  +  (multiple-value-bind (second minute hour date month year) (get-decoded-time)
  +    (values (logior (ash second -1)
  +                    (ash minute 5)
  +                    (ash hour 11))
  +            (logior date
  +                    (ash month 5)
  +                    (ash (- year 1980) 9)))))
  +
   (defun read-sector (disk start-sector n-sectors)
     "Read n sectors from disk"
     (let* ((sector-size (mezzano.supervisor:disk-sector-size disk))
  
positive.code:   (logior (ash (sys.int::ub16ref/le directory (+ 20 offset)) 16)
            (ash (sys.int::ub16ref/le directory (+ 26 offset)) 0)))
  
  (defun read-size (directory offset)
    (sys.int::ub32ref/le directory (+ 28 offset)))
  
  (defun write-file-size (stream)
    (let* ((host (host stream))
           (file-length (read-buffer-size stream)))
      (multiple-value-bind (directory cluster-n offset)
          (find-file host (file-stream-pathname stream))
        (when offset
          (setf (aref directory (+ 28 offset)) (ldb (byte 8 0) file-length)
                (aref directory (+ 29 offset)) (ldb (byte 8 8) file-length)
                (aref directory (+ 30 offset)) (ldb (byte 8 16) file-length)
                (aref directory (+ 31 offset)) (ldb (byte 8 24) file-length))
          (write-file (fat32-structure host) (partition host) cluster-n (fat host) directory)))))
  
  (defun checksum (array offset)
    "Return checksum of sort name"
  
negative.code:                                     (read-first-cluster file-data start)
                                      (fat host))
                    read-buffer-position (read-first-cluster file-data start)
                    read-buffer-size (read-file-size file-data start))
              (ecase if-does-not-exist
                (:error (error 'simple-file-error
                               :pathname pathname
  