 The DOS boot sector of a floppy disk or a hard disk partition is expected
 to be in this format.  Prior to DOS 4.0, a smaller structure was used (see
 notes, below).

BootSectorRec
  Offset Size Contents
    

 +3eH      ?  abBootCode   code and data that performs disk bootstrap
+2ffH                      end of boot sector

 See BPBRec for a description of most of these fields.  Fields unique to
 the BootSectorRec include:

   abJmpCode  Since the Boot Sector is used as program code during system
	      startup, the first bytes in the sector are a JMP opcode to get
	      past the data area.  It usually jumps to abBootCode.

       abOem  This is an 8-character text field that is supposed to contain
	      the signature of the version of DOS which formatted the disk
	      (or otherwise laid down the boot sector).  It is not used by
	      DOS.

      bDrvNo  On the first hard disk in a system, this field contains 80H.
	      Otherwise it should be 00H.  Used internally by DOS.

 bExtBootSig  Prior to DOS 4.0, the formatted portion of the Boot Sector
	      ended at offset 1eH and that variation is still supported.
	      Boot Sectors which contain 29H in this field (offset 26H) are
	      expected to contain the entire 3eH-byte record.

      lSerNo  a 32-bit volume serial number.  It is based on the time and
	      date when formatted, making the disk unique for the system
	      which formatted it.  This field is used by block device
	      drivers which support Removable Media and Change Line
	      functions (see Device Requests and fn 44H).

	      On disks formatted by DOS versions prior to 4.0, there is no
	      lSerNo or abVolLabel fields.  On pre-formatted diskettes,
	      these fields are often non-unique.  In either case, DOS might
	      not be able to detect a disk swap.

  abVolLabel  the 11-character, blank-padded, volume label.  DOS lays this
	      down when the disk is formatted AND DOS updates it (along with
	      the volume label entry in the root directory) when you use the
	      Label command.

 abFileSysID  this 8-character, blank-padded text field identifies the file
	      system.  It can be 'FAT12   ' (12-bit FAT entries) or
	      'FAT16   ' (16-bit FAT entries).  See File Allocation Table.

  abBootCode  this is the start of the unformatted portion of the boot
	      sector.  It contains data and code that is executed when the
	      disk is booted.

Versions:  DOS 2.x: the formatted part of the record ended at offset 18H.
	   DOS 3.x: the formatted part of the record ended at offset 1eH.
	   DOS 4.0+: bExtBootSig contains 29H and all fields through
	    offset 3eH are used.

   Notes:  Use absolute disk read INT 25H (DX=0) to read this sector OR
	     floppy disks: The boot sector is at BIOS INT 13H  head 0,
	      track 0, sector 1
	     hard disks: read the Partition Table to determine BIOS Head,
	      Track, Sector to seek before using INT 13H.

	   To convert a cluster number (as read from the wClustNo field of
	    a Directory Entry or a FAT chain) into a absolute sector number
	    (as used in INT 25H/26H calls), you may use DOS Fn 32H or read
	    the Boot Sector and apply the formulae:

	      wRootSects = (wRootEntries * 32) / wSectSize
	      wFirstData = wResSects + (wFatSects * bFatCnt) + wRootSects
	      lAbsSector = wFirstData + ((lAnyClusterNo - 2) * bClustects)

	    Use the calculated value (lAbsSector) in INT 25H or INT 26H
	    calls.

	   Very old hard disks which require an installed device driver
	    (non-bootable hard disks) may contain garbage in the boot
	    sector.  When possible, use DOS fns such as 32H to obtain
	    information about the device.

  The boot process of 80x86-based personal computers (as opposed to RISC-
  based systems) makes direct use of a file system boot sector for executing
  instructions. The initial boot process can be summarized as follows:
 
        1.      Power On Self Test (or POST) initiated by system BIOS and CPU.
 
        2.      BIOS determines which device to use as the "boot device."
 
        3.      BIOS loads the first physical sector from the boot device
                into memory and transfers CPU execution to the start of that
                memory address. If the boot device is a hard drive, the
                sector loaded in step 3 is the MBR, and the boot process
                proceeds as follows:
 
        4.      MBR code loads the boot sector referenced by the partition
                table for the "active primary partition" into memory and
                transfers CPU execution to the start of that memory address.
 
  Up to this point, the boot process is entirely independent of how the disk
  is formatted and what operating system is being loaded. From this point on,
  both the operating and file systems in use play a part.
 
  In the case of FAT volumes which have Windows NT installed, the FAT boot
  sector is responsible for identifying the location of the file "NTLDR" on
  the volume, loading it into memory, and transferring control to it.

