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 |
D:\HD_LAM~1\HARDWA~2\Tweaking\BIOS_R~1>
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 |
D:\HD_LAM~1\HARDWA~2\Tweaking\BIOS_R~1>
As you can see, there are some similarities in the components even though 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