Micro Firmware Tech Support

Some Notes on ROM Extensions


Filename: ROMEXT.TXT
WWW URL:  http://www.firmware.com/support/bios/romext.htm
FTP URL:  ftp://ftp.firmware.com/text/romext.txt
Author:   Terry Slade, Micro Firmware Technical Support
Revision: 11/30/98
Summary:  Information on ROM BIOS extensions, including how to
          identify and how to locate them.

A ROM extension is a BIOS on an option card that is detected by the system BIOS (on the motherboard) on bootup and loaded along with it.

Also called option ROMs or BIOS extensions or ROM BIOS extensions.

Video cards normally have a ROM BIOS which resides at C000-C7FF.

Other cards, such as network adapters, SCSI controllers, "intelligent" IDE adapters, etc., may have ROM extensions. These BIOSes may vary in size and may be located at various locations between C800 and F000. The range F000-FFFF is reserved for the system BIOS. Some system BIOSes may also occupy all or part of the E000 range. Most ROM extensions can be configured with jumpers or DIP switches to set the address that they will occupy.

ROM extensions on PCI cards should be automatically assigned an address by the system BIOS. PCI cards with option ROMs will not normally have jumpers or DIP switches to set the ROM address. A PCI ROM extension should be assigned to an address that does not conflict with other ROM extensions.

As a rule, but not always, a ROM BIOS will display a signon message to identify itself when it loads. This includes the system BIOS and the video BIOS. The video BIOS may display its signon message before the system BIOS does and some system BIOSes may clear the screen so that on some systems it is not possible to see the video BIOS signon message.

A BIOS extension can be easily identified in RAM using DEBUG. To look at the video BIOS at C000, type DEBUG, then type D C000:0000 at the dash prompt. DEBUG will then display the first 128 bytes at that location in both hexadecimal and ASCII. Type Q at the dash prompt to return to DOS.

Here is an example:

C:\>debug
-d c000:0000
C000:0000  55 AA 40 E9 98 23 56 52-39 00 00 00 77 CC 56 49   U.@..#VR9...w.VI
C000:0010  44 45 4F 20 00 03 4F D8-09 EE 27 E9 CF 27 49 42   DEO ..O...'..'IB
C000:0020  4D 20 56 47 41 20 43 6F-6D 70 61 74 69 62 6C 65   M VGA Compatible
C000:0030  F7 C8 30 DF 53 2E 20 00-80 43 4C 2D 47 44 35 34   ..0.S. ..CL-GD54
C000:0040  30 78 2F 35 34 32 78 20-56 47 41 20 42 49 4F 53   0x/542x VGA BIOS
C000:0050  20 56 65 72 73 69 6F 6E-20 31 2E 32 31 20 20 20    Version 1.21
C000:0060  20 0D 0A 43 6F 70 79 72-69 67 68 74 20 31 39 39    ..Copyright 199
C000:0070  32 2D 31 39 39 34 20 43-69 72 72 75 73 20 4C 6F   2-1994 Cirrus Lo
The first two bytes of any ROM Extension are always 55 AA. The system BIOS locates ROM extensions by searching for this pattern.

The third byte indicates the size (in 512-byte blocks) of the BIOS extension. The hex value is converted to decimal and multiplied by 512 to get the size in bytes. In the example above, 40h equals 64 decimal. 64 times 512 is 32768, which is 32KB. This is the normal size for a VGA video BIOS extension. EGA BIOSes are typically 24KB. Some notebook video BIOSes are 40KB. A typical size for a ROM extension on an add-in card would be 16KB, which would be indicated by the hex value 20 in the 3rd byte of the ROM extension.

In the example above, there is some text that identifies what the BIOS extension is. Although normally found near the beginning, there is no standard location for such text and it may appear farther on into the code. After dumping out a section of RAM with the D command in DEBUG, you can just keep hitting the D key to view successive 128-byte blocks.

ROM extensions must begin on 2KB boundaries. Examples: C800:0000, C880:0000, C900:0000, C980:0000, CA000:0000, CA80:0000.

An easy way to search for ROM extensions is to use a utility such as Microsoft MSD, supplied with MS-DOS, or Quarterdeck Manifest (MFT), supplied with QEMM.


SALES - SUPPORT - CONTACT - LINKS - HOME


Micro Firmware, Inc.
330 W. Gray Street
Norman, Oklahoma 73069-7111
Toll-Free Sales (USA/Canada): 1-800-767-5465 or 1-888-4-PC-BIOS
Support & Sales: +1 405-321-8333
Sales Department FAX: +1 405-573-5535
Technical Support FAX: +1 405-321-8342
Email: sales@firmware.com support@firmware.com

© 1998 Micro Firmware, Inc. - All Rights Reserved
While every attempt is made to ensure the accuracy of our support documents, Micro Firmware provides these documents on an AS-IS basis for information purposes only.