anchor.diff:                           file-buffer
                            (read-cluster fat32 disk
                                          (first-sector-of-cluster fat32 i)))))))
  +
  +;; WIP
  +;; TODO Allocate new clusters
  +;; TODO Update write-time and write-date
  +(defun write-file (file disk fat32 fat first-cluster)
  +  (do ((cluster-length (bytes-per-cluster
  +                        (fat32-structure (find-host "FAT32"))))
  +       (n 0 (+ cluster-length n))
  +       (i first-cluster
  +          (sys.int::ub32ref/le fat (* i 4))))
  +      ((>= n (length file))
  +       t)
  +    (when (>= i #x0FFFFFF8)
  +      (error "Allocate new clusters not implemented"))
  +    (write-cluster disk
  +                   (first-sector-of-cluster fat32 i)
  +                   fat32
  +                   (make-array cluster-length
  +                               :area :wired :element-type '(unsigned-byte 8)
  +                               :initial-contents (subseq file n (+ cluster-length n))))))
   
   (defun read-first-cluster (cluster offset)
     (logior (ash (sys.int::ub16ref/le cluster (+ 20 offset)) 16)
  
positive.code:     (replace sequence (read-buffer stream) :start1 start :end1 end :start2 0 :end2 end2)
      end2))
  
  ;; WIP
  ;; TODO resize to files bigger than 1 cluster
  (defmethod sys.gray:stream-write-char ((stream fat32-file-character-stream) char)
    (assert (member (direction stream) '(:output :io)))
    (when (> (buffer-offset stream)
  
negative.code: ;;        (disk (nth 3 (mezzano.supervisor:all-disks)))
  ;;        (fat32 (read-fat32-structure (read-sector disk 0 1)))
  ;;        (fat32-info (read-fat32-info-structure (read-sector disk (fat32-fat-info fat32) 1)))
  ;;        (fat (read-fat disk fat32))
  ;;        (instance (make-instance 'fat32-host
  ;;                                 :name disk-name
  ;;                                 :partition disk
  