Beyond BIOS: Implementing the Unified Extensible Firmware Interface with Intel's Framework

The Compatibility16BIOS module can be thought of as the runtime image of the legacy BIOS without the POST and Setup. The design goal is to make the Compatibility16BIOS module universal for all platforms. That is, the same Compatibility16BIOS should work in desktop, server, and mobile platforms. Thus, the Compatibility16BIOS is independent of chipset and platform. The Compatibility16BIOS does not configure any low-level hardware. However, it may control the legacy hardware through traditional hardware interfaces like serial ports, parallel ports, keyboard, and PS2 mouse. The chipset programming is done by EFI and/or the EfiCompatibility module. The chipset- and platform-independent design maximizes reusability and minimizes maintenance of the Compatibility16BIOS module.
The Compatibility16BIOS contains all runtime services and software and hardware interrupt service routines required in legacy BIOS runtime. This module must also support the legacy-compatible data area in BDA, EBDA, and fixed entry points of different interrupt service handlers in the F000 segment. Additionally, this module contains the Compatibility16 functions used for communication between EfiCompatibility and Compatibility16BIOS. Table 17.1 describes the legacy interrupt services provided by the Compatibility16BIOS module.
| Interrupt | Description |
|---|---|
| 0x02 | NMI (Non Maskable Interrupt) |
| 0x05 | Print Screen Service |
| 0x08 | System Timer Interrupt (IRQ0) |
| 0x09 | Keyboard Interrupt (IRQ1) |
| 0x10 | Video Services |
| 0x11 | Equipment Determination Service |
| 0x12 | Base Memory Size Determination Service |
| 0x13 | Hard Disk and Floppy Diskette Services including all physical and emulated devices accessible through INT13 such as ATA, ATAPI, ARMD, and Magneto Optical devices. |
| 0x14 | Serial Communication Services |
| 0x15 |