ROM-Scan

 During cold-boot (power-on start-up), after the POST and installation of
 default interrupt handlers, BIOS makes a check for external ROMs found on
 feature cards (boards installed in a PC slot).  This testing is informally
 called ROM-scan.

    Note: ROM-scan was NOT implemented in the earliest BIOS and the very
          oldest PCs (those with a maximum of 64K on the motherboard) will
          not have this feature unless a later version of the ROM-BIOS has
          been installed.

 External ROM modules may exist between addresses c000:0 and e000:0.  Each
 2K block in this range is checked for a signature and is in this format:

RomScanHdrRec
  Offset Size Contents
  ▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
   +0      2  wSignature   must be aa55H (55H followed by aaH; i.e. )
   +2      1  bLenPgs      length of the ROM module in 512-byte pages
   +3      ?  abCode       variable-length code and data of the ROM.  It
                           usually begins with a JMP to get the
                           initialization portion of the code.

 When BIOS finds a ROM signature, it performs a checksum on the defined
 module.  Each byte is summed modulo 100H and the sum must be exactly 0.
 When a module is verified to be valid, BIOS performs a FAR CALL to offset
 0003H of its segment and the ROM must eventually return to the BIOS via a
 FAR RET.

 Typically, the ROM module will perform any hardware initialization tasks
 necessary and insert its own addresses into one or more interrupt vectors.

 The ROM sockets U17 and U37 on the AT motherboard are addressed starting
 at e000:0000.  A scan occurs in 64K blocks for a valid module.  If
 present, a module will have the aa55H signature, an unused length byte,
 executable code starting at xxxx:0003 and a checksum of 0 modulo 100H at
 e000:ffff.

 A MRCI hardware-assist adaptor could install data-compression support
 via ROM-Scan, and thus be available immediately on power up.  See
 INT 1aH b001H (query hardware-based MRCI support).

See Also: POST
          BIOS Data Area
          System Startup Sequence
                                    -♦-