I've added a new item into the Multiboot information structure as
suggested before. So the structure has the following structure:

             +-------------------+
     0       | flags             |    (required)
             +-------------------+
     4       | mem_lower         |    (present if flags[0] is set)
     8       | mem_upper         |    (present if flags[0] is set)
             +-------------------+
     12      | boot_device       |    (present if flags[1] is set)
             +-------------------+
     16      | cmdline           |    (present if flags[2] is set)
             +-------------------+
     20      | mods_count        |    (present if flags[3] is set)
     24      | mods_addr         |    (present if flags[3] is set)
             +-------------------+
     28 - 40 | syms              |    (present if flags[4] or
             |                   |                flags[5] is set)
             +-------------------+
     44      | mmap_length       |    (present if flags[6] is set)
     48      | mmap_addr         |    (present if flags[6] is set)
             +-------------------+
     52      | drives_count      |    (present if flags[7] is set)
     56      | drives_addr       |    (present if flags[7] is set)
             +-------------------+

And, the description about drives_* is:

   If bit 7 in the `flags' is set, then the `drives_*' fields are
valid, and indicate the address of the physical address of the first
drive structure and the number of drive structures. `drives_addr' is
the address, and `drives_count' is the number. `drives_count' may be
zero. Each drive structure is formatted as follows:

             +-------------------+
     0       | drive_number      |
             +-------------------+
     1       | drive_mode        |
             +-------------------+
     2       | drive_cylinders   |
     4       | drive_heads       |
     5       | drive_sectors     |
             +-------------------+
     6       | drive_ports       |
             +-------------------+
     10      | reserved (0)      |
             +-------------------+

   The `drive_number' field contains the BIOS drive number. The
`drive_mode' field represents the access mode used by the boot loader.
Currently, the following modes are defined:

`0'
     CHS mode (traditional cylinder/head/sector addressing mode).

`1'
     LBA mode (Logical Block Addressing mode).

   The three fields, `drive_cylinders', `drive_heads' and
`drive_sectors', indicate the geometry of the drive detected by the
BIOS. `drive_cylinders' contains the number of the cylinders.
`drive_heads' contains the number of the heads. `drive_sectors'
contains the number of the sectors per track.

   The `drive_ports' field contains the physical address of the array
of the I/O ports used for the drive in the BIOS code. The array
consists of zero or more unsigned two-bytes integers, and is terminated
with zero. Note that the array may contain any number of I/O ports that
are not related to the drive actually (such as DMA controller's ports).

   The last field `reserved' is reserved for future use, and must be
zero. The size is four bytes.


If you think anything should be changed, let me know, before I will
publish this modified version as the Multiboot Specification 0.7.

----------------------------------------------------------------------
OKUJI Yoshinori  <[EMAIL PROTECTED]>           ^o-o^
http://duff.kuicr.kyoto-u.ac.jp/~okuji (in English)     m /

Reply via email to