úÎ$ !à%      !"#$ Safe-Inferred7The structure of a Master Boot Record is as follows... DThe first piece of data on a disk with a Master Boot Record is some D bootloader code that gets loaded to address 0x7c00 in memory. N.B: G this may include the data for the Windows timestamp, if it exists. It J will also include the optional disk signature, if it exists -- thus this ! field is always 446 bytes long. Four partition table entries. Finally, the boot signature. DAn MBR partition table consists of (up to?) four partition entries. 5Partition entries themselves are somewhat intricate. ;A bitfield describing this partition. An 0x00 here means it' s inactive; J having bit 7 set (i.e. > 0x80) means bootable; anything less is invalid. ?The CHS address of the first absolute sector of the partition. =A partition type; for specifics, see the following document:  http:www.win.tue.nl~aeb partitions/partition_types-1.html >The CHS address of the last absolute sector of the partition. 8The logical block address of the first absolute sector. (The number of sectors in the partition.  A representation of the cylinderheadsector address in MBRs. The head number. :The sector number; this is actually a six-bit number, but  Haskell doesn',t have a convenient way to deal with those. AThe cylinder number; likewise, this is actually a 10-bit number. @The so-called mystery bytes on Windows 95B, 98, 98SE, and Me --  in fact, they'$re a timestamp and a drive number.  See http:thestarman.pcministry.comasmmbr/mystery.htm . !The empty partition table entry. 1Whether this partition entry is marked bootable. The empty partition table. !)The empty bootloader -- 446 empty bytes. "The empty boot record. #FGet the completely-optional, obsolete disk timestamp used by some old  versions of Windows. $1Get the optional disk signature from a Bootrecord's bootloader. *  !"#$%&'()%  !"#$%  !"#$   !"#$%&'()*       !"#$%&'partly-1.0.0.1System.Disk.Partitions.MBR BootRecord bootloader partitionsbootSigPartitionTablefirstsecondthirdfourthPartitionEntrystatuschsFirst partitionTypechsLastlbaFirstsectorsCHSheadsectorcylinder Timestamp physicalDrivesecondsminuteshours nullPartitionbootablenullPartitionTableemptyBootloadernullBootRecord getTimestampgetDiskSignature$fBinaryBootRecord$fBinaryPartitionTable$fBinaryPartitionEntry $fBinaryCHS$fBinaryTimestamp