Ready for more?
---------- Phoenix Modification Guide Part 2: Modules of the Phoenix BIOS ----------
As stated in Part 1, a Phoenix BIOS is comprised of a number (often 100-200) of fairly standardized modules that each perform specific functions or store certain data.
Today we will look at some of the more interesting modules. But before that, here are some definitions for consistency...
--- Definitions ---
BIOS Setup Utility: This is what you enter by pressing F2, F10, Delete, etc. when you start your computer. It has all of the BIOS menus/settings that we are going to be modifying/adding.
Parent Menu: The primary menus that you see near the top of the screen when you enter the BIOS Setup Utility. Examples are System Information, Main, Advanced, Intel, Security, Boot, etc.
Sub-Menu: Menus within Parent Menus or other sub-menus.
Setting: Something you can set like "AHCI".
Option: For the AHCI setting, the options might be "Enabled" and "Disabled".
Item: A sub-menu, setting, or option.
--- Modules ---
STRINGS: As you may have guessed from the name, the STRINGS module contains all of the strings (text) that you will encounter with your given BIOS. These text items show up in the BIOS Setup Utility as settings, options, menu names, function key legends, and item descriptions. They also comprise any BIOS messages or instructions you may see when booting up. Near the beginning of this file is a large jump table with references to the TEMPLAT module. When you want to unlock a particular setting or menu, you go from that setting's text (ie: "Intel Virtualization Technology") to that setting's location in the jump table, and it will tell you where that setting is located in the TEMPLAT module. You will reference this file frequently while working in the TEMPLAT module.
TEMPLAT: This is the module where most (usually all) of your modifications will take place. It stores several jump tables that define the appearance and placement of settings within menus and sub-menus within parent menus (or other sub-menus). By modifying the jump tables, you can modify which items show up in the BIOS Setup Utility.
There are three important sections of this file. (1) Jump Tables, (2) hex code associated with each individual item (menus and settings), and (3) functions that control the behavior of each item (including hiding certain unlocked menus).
ROMEXEC: There are many of these files, usually with "01", "02", "03", etc. appended onto the end. These contain executable code for the BIOS, as well as some NVRAM data. By changing the NVRAM data, you can change default options for settings (ie: what the options would be set to if you were to restore the BIOS to default values by removing the CMOS battery or choosing the setting reset function in the BIOS Setup Utility).
I may add more to this section in the future, but these are the relevant modules for our purposes right now. Don't go away, as we will continue our journey tomorrow (err..... on Friday hopefully!)