Award BIOS File Structure

In this article I'll try to explain the components that make up a mainboard BIOS file. This is not meant to be complete, since I don't have enough knowledge in this stuff, I'll just explain what I already know exactly and not trying to speculate on things that is obscure to me. You will need cbrom.exe version 2.08 or newer to try some things mentioned here. Cbrom.exe is a program that can display the components of an award bios file. To begin with, let's see two different version of award BIOS, i.e. the version 4.51PGNM, which is used by motherboards in year 2000 or before year 2000, such as my old Iwill VD133 motherboard, and the version 6.0PG which is used in newer mainboard such as my DFI865PE infinity board.

This is the dump of the output from one of my DFI865PE bios:

D:\HD_LAM~1\HARDWA~2\Tweaking\BIOS_R~1>cbrom208 865IDC19.bin /D
CBROM V2.08 (C)Award Software 2000 All Rights Reserved.

              ******** 865IDC19.bin BIOS component ********

 No. Item-Name         Original-Size   Compressed-Size  Original-File-Name
  0. System BIOS       20000h(128.00K) 13C31h(79.05K)   865IDC19.BIN
  1. XGROUP CODE       0D960h(54.34K)  09806h(38.01K)   awardext.rom
  2. CPU micro code    04000h(16.00K)  03FA2h(15.91K)   CPUCODE.BIN
  3. ACPI table        045C1h(17.44K)  01A7Dh(6.62K)    ACPITBL.BIN
  4. EPA LOGO          0168Ch(5.64K)   002AAh(0.67K)    AwardBmp.bmp
  5. YGROUP ROM        05D00h(23.25K)  03E56h(15.58K)   awardeyt.rom
  6. GROUP ROM[ 0]     05360h(20.84K)  024B5h(9.18K)    _EN_CODE.BIN
  7. VGA ROM[1]        0C000h(48.00K)  06B05h(26.75K)   SDG_2831.DAT
  8. GROUP ROM[ 5]     004F0h(1.23K)   002A4h(0.66K)    SDG_2831.VBT
  9. Flash ROM         0A00Ch(40.01K)  05777h(21.87K)   AWDFLASH.EXE
 10. PCI ROM[A]        0C000h(48.00K)  05DFCh(23.50K)   4212.BIN

  Total compress code space  = 4A000h(296.00K)
  Total compressed code size = 3B727h(237.79K)
  Remain compress code space = 0E8D9h(58.21K)

                          ** Micro Code Information **
Update ID  CPUID  |  Update ID  CPUID  |  Update ID  CPUID   |  Update ID  CPUID
SLOT2  17   0F29  |  SLOT2  2C   0F12  |  SLOT2  01   0F21   |  SLOT2  08   0F23
SLOT2  1E   0F24  |  SLOT2  05   0F13  |  SLOT2  15   0F25   |  SLOT2  37   0F27
SLOT2  17   0F29  |
This is the dump of the output from one of my Iwill VD133 bios:
D:\HD_LAM~1\HARDWA~2\Tweaking\BIOS_R~1>cbrom208 vd30728.bin /D
CBROM V2.08 (C)Award Software 2000 All Rights Reserved.

              ********  vd30728.bin BIOS component ********

 No. Item-Name         Original-Size   Compressed-Size  Original-File-Name
  0. System BIOS       20000h(128.00K) 15532h(85.30K)   original.tmp
  1. XGROUP CODE       057C0h(21.94K)  03AADh(14.67K)   awardext.rom
  2. CPU micro code    0A000h(40.00K)  05D03h(23.25K)   CPUCODE.BIN
  3. ACPI table        021A6h(8.41K)   00E21h(3.53K)    ACPITBL.BIN
  4. EPA LOGO          02D3Ch(11.31K)  00382h(0.88K)    iwillbmp.bmp
  5. NNOPROM           00FECh(3.98K)   00A5Fh(2.59K)    nnoprom.bin
  6. VRS ROM           02280h(8.62K)   014BBh(5.18K)    anti_vir.bin
  7. ROS ROM           14380h(80.88K)  0F670h(61.61K) E:\2A6LGI3C\AAA\ROSUPD.BIN

  Total compress code space  = 35532h(213.30K)
  Total compressed code size = 3140Fh(197.01K)
  Remain compress code space = 04123h(16.28K)

                          ** Micro Code Information **
Update ID  CPUID  |  Update ID  CPUID  |  Update ID  CPUID   |  Update ID  CPUID
PPGA   11   0681  |  PPGA   10   0683  |  PPGA   08   0686   |  PPGA   03   0665
SLOT1  13   0630  |  SLOT1  20   0632  |  SLOT1  34   0633   |  SLOT1  35   0634
SLOT1  40   0651  |  SLOT1  2A   0652  |  SLOT1  10   0653   |  SLOT1  0A   0660
SLOT1  03   0671  |  SLOT1  10   0672  |  SLOT1  0E   0673   |  SLOT1  14   0680
SLOT1  0D   0681  |  SLOT1  0C   0683  |  SLOT1  07   0686   |
As you can see, there are some similarities in the components eventhough they are different award bios version. Explanation of components that are known to me:
  • Item 0, i.e. system bios, this is what the bios modder sometimes called original.tmp, since when the bios file decompressed by modbin (an award bios "limited" editor program) or another bios file decompressor, it will result in a file named original.tmp. This is the main bios file which does the initialization of the board during boot and services bios interrupts. The initialization of the system that is accomplished by this program, inlcluding calling of additional bios file sometimes called option rom. Option rom will be explained later.
  • Item 4. i.e. EPA Logo, this actually a custom image file that contain the "energy" logo when you boot your computer
  • Item 10 (in DFI865PE bios file), i.e. PCI ROM, this is the so called PCI option ROM, sometime also referred as PCI expansion rom. This is an additional file that may be integrated into your bios or may also absent from your bios. PCI ROM in 865IDC19.bin is my mainboard's S-ATA controller PCI expansion ROM.
  • Item 1 and 5, i.e. XGROUP CODE and YGROUP CODE. These are extensions to the system BIOS (original.tmp). They are executed when original.tmp executed, after it's decmpressed to system RAM by bootblock. The reason they are separated is a bit obscure, but possibly since the "decompressed address space" already exhausted, that's why they have to be treated differently. I mean original.tmp need 128 KB of addres-space while the real initialization routine need more than that, that's why they are separated from original.tmp. I have to point out here that they are an INTEGRAL PART of system BIOS.
  • VRS.ROM (in VD30728.BIN) is a BIOS antivirus code for bootsector viruses.
  • VGA ROM (in 865IDC19.bin) is an onboard VGA video BIOS. It's not used in my BIOS, I think they are there since this BIOS is an adapatation from Award BIOS for i865G chipset which has an oboard VGA or they even use the same "basic" BIOS "ingredients".
  • FLASH ROM (in 865IDC19.bin) is the awardflash utility used to flash the award bios itself. So, by looking at this, it means we don't need external award BIOS flash program, just call it from the BIOS :).

Explanation of Expansion/Option ROM

Expansion rom actually is a firmware similar to the mainboard bios, but their purpose is to initialize the card in which they are soldered/socketed. Sometimes they are mounted into an old ISA card (in which we call them ISA option/expansion ROM) or to a PCI card (in which we call them PCI option/expansion ROM). There are also things called BIOS32 services, but this is quite seldom implemented, and I don't know too much about it. Eventhough in most cases, PCI or ISA expansion ROM are implanted in a eprom/eeprom/flashrom chip in a PCI or ISA card, there also certain cases which they are implemented as the mainboard bios component, sometimes due to the mainboard design which incorporate some add on PCI chip in their mainboard, such as RAID controller, SCSI controller or serial ATA controller like the one you saw in the DFI865PE bios example above. Note that an expansion ROM implemented as a mainboard bios component is no different with expansion rom implemented in a PCI/ISA expansion card.

copyright © Darmawan M S a.k.a Pinczakko