anchor.diff:      (when (not successp)
         (error "Disk write error: ~S" error-reason))))
   
  +(defun read-fat (disk fat32)
  +  "Read file allocation table"
  +  (read-sector disk
  +               (fat32-reserved-sector-count fat32)
  +               (/ (fat32-table-size-32 fat32)
  +                  (fat32-table-count fat32))))
  +
  +(defun write-fat (disk fat32 fat)
  +  "Write file allocation table to disk"
  +  (write-sector disk
  +                (fat32-reserved-sector-count fat32)
  +                fat
  +                (/ (fat32-table-size-32 fat32)
  +                   (fat32-table-count fat32))))
  +
   ;;; bit offsets
   (defconstant +attribute-read-only+ 0)
   (defconstant +attribute-hidden+ 1)
  
positive.code: (defmethod sys.gray:stream-element-type ((stream fat32-file-character-stream))
    'character)
  
  ;; WIP
  ;; TODO resize to files bigger than 1 cluster
  (defmethod sys.gray:stream-write-byte ((stream fat32-file-stream) byte)
    (assert (member (direction stream) '(:output :io)))
    (when (> (buffer-offset stream)
  
negative.code: 
  (defun read-file (fat32 disk cluster-n fat)
    (let ((file-buffer #()))
      (do ((i cluster-n
              (sys.int::ub32ref/le fat (* i 4))))
          ((>= i #x0FFFFFF8) file-buffer)
        (setf file-buffer
  