Appendix A: Generic Option ROM Headers

Generic Option ROM Header expansion

(Offsets are all based from the beginning of the Header)

Offset

Length

Value

Description

0h

DWORD

$??? (ASCII)

Signature

Generic

04h

BYTE

Varies

Structure Revision

Generic

05h

BYTE

Varies

Length (in 16 byte increments)

Generic

06h

WORD

Varies

Offset of next Header (0000 if none)

Generic

08h

BYTE

0FFFFh

Reserved

Generic

09h

BYTE

Varies

Checksum

Generic

10h

Varies

Varies

Specific Header Type Data

Specific


Signature - All Expansion Headers will contain a unique expansion header identifier. Each different Expansion Header will have its own unique signature. Software that wishes to make use of any given Expansion Header simply traverses the linked list of Generic Expansion Headers until the Expansion Header with the desired signature is found, or the end of the list is encountered.

Example: The Plug and Play expansion header's identifier is the ASCII string "$PnP" or hex 24 50 6E 50h.

Structure Revision - This is an ordinal value that indicates the revision number of this structure only and does not imply a level of compliance with the Plug and Play BIOS version.

Length - Length of the entire Expansion Header expressed in sixteen byte blocks. The length count starts at the Signature field.

Offset of Next Header - This location contains a link to then next expansion ROM header in this Option ROM. If there are no other expansion ROM headers then this field will have a value of 0h.

Reserved - Reserved for Expansion

Checksum - Each Expansion Header is checksummed individually. This allows the software that wishes to make use of an expansion header the ability to determine if the expansion header is valid.

The system software can determine if the expansion header is valid by performing a Checksum operation. The method for validating the checksum is to add up Length bytes, including the Checksum field, into an 8-bit value. A resulting sum of zero indicates a valid checksum operation.

Specific Header data - This area is used by the specific device header and is defined uniquely for each Expansion Header.