DoubleSpace Compressed Volume File Layout

▌Overview▐█ 
  DoubleSpace maintains all information structures and compressed data for a
  DoubleSpace volume within a Compressed Volume File (CVF).  This topic
  describes the layout of CVF.  CVF region summary:

    MDBPB     All kinds of info, including addresses of other regions
    BitFAT    Sector allocation tables; one bit represents one sector
    Res1      (1 reserved sector)
    MDFAT     Information describing each compressed cluster
    Res2      (31 reserved sectors)
    BootSect  a standard Boot Sector (sans boot program code)
    Res3      (variable number of reserved sectors) contains MdStamp1
    FAT       The familiar File Allocation Table for the volume
    RootDir   The root directory for the volume
    Res4      (2 reserved sectors)
    SectHeap  the compressed data
    MdStamp2  marks the end of the CVF

█▌Details▐█
              Size
 Name    (sectors) Description
▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
 MDBPB          1  This is a standard BPBRec (BIOS Parameter Block),
                   followed by additional fields describing the CVF.  Very
                   important.

 BitFAT    varies  One bit for each sector in the SectHeap.  A 1 means the
                   sector is in use and 0 means it's free.  The BitFAT may
                   be as large as 256 sectors (128K).

 Res1           1  (reserved for future use by DoubleSpace)

 MDFAT     varies  A table of 4-byte bit-packed MdFatEntryRec structures.
                   Each entry describes one cluster in the FAT; thereby
                   mapping each cluster to its actual data in the CVF.  The
                   MDFAT may be as large as 512 sectors (256K).

 Res2          31  (reserved for future use by DoubleSpace)

 BootSect       1  Although a CVF is never booted, this is formatted as
                   a standard BootSectorRec which simulates an uncompressed
                   disk of the estimated size.

 Res3      varies  (reserved) One or more sectors are left empty in order
                   to position the FAT at a favorable sector-multiple from
                   the start of the CVF.

                   The first four bytes of the first sector in this region
                   contain the first DoubleSpace stamp (MdStamp1): '°DR0'
                   (f8H, 44H, 52H, 00H).

 FAT       varies  This is a standard File Allocation Table.  It may be
                   a 12-bit FAT (for volumes < 4086 clusters) or a 16-bit
                   FAT for larger volumes.
                   Note that there is only one FAT.

 RootDir       32  The root directory for the volume; it is
                   512 DirEntryRecs of 32 bytes each (exactly 32 sectors in
                   all cases, even small CVFs).

 Res4           2  (reserved)

 SectHeap  varies  The sectors containing the compressed data.  Each sector
                   is represented in the BitFAT.  When all sectors are
                   filled, the volume is full (even though DOS may think
                   there is free space because of unused FAT entries).

 MdStamp2      1+  Marks the end of a CVF; the first four bytes of the last
                   full sector contain 'MDR0' (4dH, 44H, 52H, 00H).

See Also: DoubleSpace Overview
          DoubleSpace API
          DOS Functions
                                    -♦-