Legacy-Free Hardware and BIOS Requirements

Updated: December 4, 2001

This article defines the hardware, BIOS, and software requirements for legacy-free systems that are compatible with the Microsoft Windows 2000, Windows Millennium Edition (Windows Me), and later operating system versions. This information is also provided in the legacy-free design guidelines in PC 2001 System Design Guide (co-authored by Intel Corporation and Microsoft Corporation).

The basic goal for these requirements is that the operating system, devices, and end users cannot detect the presence of the following: ISA slots or devices; legacy floppy disk controller (FDC); and PS/2, serial, parallel, and game ports. (Other exceptions are noted in the specific requirements.)

NOTE: Microsoft uses these requirements as testing guidelines in the Windows Logo Program.

On This Page
Minimum BIOS Requirements for Legacy RemovalMinimum BIOS Requirements for Legacy Removal
USB Host Controller Handoff During the Boot ProcessUSB Host Controller Handoff During the Boot Process
Minimum Legacy Hardware Removal RequirementsMinimum Legacy Hardware Removal Requirements
Minimum Preinstallation RequirementsMinimum Preinstallation Requirements
General Requirements in PC System Design GuidesGeneral Requirements in PC System Design Guides
Special Notes:Special Notes:
*

Minimum BIOS Requirements for Legacy Removal

The system must meet the requirements defined in this section to ensure that the operating system identifies the computer as a "legacy free" system.

Revisions to the ACPI specification provide a mechanism that allows the BIOS to report whether a system contains legacy components and interfaces (as described later on this page). A system with a BIOS that reports it is legacy-free must achieve the following minimum level of BIOS support for legacy removal and support of replacement technologies:

No legacy boot dependencies. No BIOS boot dependencies on ISA or other legacy devices, and no ISA-related components appear on BIOS setup screen.

BIOS supports USB boot devices. BIOS supports USB input devices at boot and does not include hardware emulation of the 8042 controller if the 8042 controller is not present.
USB host controller and USB input device support must be enabled by default in the BIOS, and the BIOS must ensure that USB hubs and input devices, such as keyboards and mice, are available at boot time. This includes implementing all related support defined in USB Device Class Definition for Human Interface Devices, Version 1.1 (HID 1.1), with particular attention to the Keyboard Boot Protocol.
When a USB host requests the configuration descriptor for a device, the device will return the configuration descriptor, all interface descriptors, and endpoint descriptors for all interfaces in a single request (see section 9.4.3 of the USB specification). The maximum size of the returned data is 64 KB.
To enumerate the USB and configure boot devices, the BIOS must make a configuration request to every device encountered. This means the BIOS must be capable of handling a maximum length descriptor if such a descriptor is returned. However, the BIOS is only required to configure boot devices. Nonboot devices can be left in the addressed USB visible device state.
NOTE: To ensure fast boot times, the USB keyboard and mouse should be connected directly to a USB root port or at the first layer of a USB hub in the preinstalled system configuration. Enumerating boot devices on layers beyond a USB hub significantly impacts boot time.

A20M# is de-asserted. A20M# is always de-asserted by the hardware (pulled high) or removed, with no way to mask the A20 address line.
If A20M# generation logic is still present in the system, this logic must be terminated such that software writes do not result in A20M# being asserted to the processor.

Interrupt handlers preserve values in all registers. ROM BIOS hardware interrupt handlers must preserve the values in all registers, including the high 16-bits of 32-bit registers. ROM BIOS API handlers must preserve the values in all registers, including the high 16-bits of 32-bit registers that the API is not documented to modify.
Any ROM BIOS API that is documented to modify only the low 16-bits of a 32-bit register must preserve the high 16-bits of that 32-bit register, because this is least likely to cause compatibility problems for applications that use that API.
If a ROM BIOS API is documented to modify the flags--for example, it is documented to return with the CARRY flag set or cleared--this restriction does not apply to individual arithmetic bits in the flags register. Any ROM BIOS API that is documented to modify the flags is assumed to modify all of the "arithmetic" flag bits: CARRY, AUX-CARRY, PARITY, ZEROSIGN, and OVERFLOW. The values of the other bits in the flags register must be preserved unless the API is documented to modify them.

Timer is supported at system boot. The ROM BIOS must make sure that the timer is on at system boot and that timer interrupts are occurring as part of POST or RESET.

ACPI legacy-free support is reported. ACPI v.1.0b specification is supported and correctly implemented, including support for reporting legacy-free and hard reset/boot capabilities defined in 1999 changes for the ACPI specification: ACPI reset mechanism as defined in ACPI section 4.7.5.

LEGACY_DEVICES and 8042 flags set as defined in ACPI section 5.2.1.
Note that the 8042 flag must be set to 0 for systems that do not include an 8042 controller, and set to 1 in mobile PCs and desktop systems that include the 8042 controller.

Debug Port Table in the BIOS, as described in ACPI section 5.2.11.

For details, see ACPI Changes for Legacy-Free PCs.

Required interrupts are supported. Table 2 at the end of this article lists the known operating system dependencies for which BIOS support will be required for the coming years. Unless otherwise stated, all subfunctions must be present on a legacy-free system.

Top of pageTop of page

USB Host Controller Handoff During the Boot Process

The USB Host Controller must be in interrupt request (IRQ) mode for keyboard and mouse input during Real Mode and Safe Mode. However, this can potentially cause the system to stop working when the system is running Windows NT, and the interrupt is shared with the boot device and the Host Controller generates an IRQ before the USB ISR is chained.

The solution is for the BIOS to add logic to the ACPI-enable routine to turn off the IRQ-enable bit in PCI configuration space for the USB Host Controller.

Top of pageTop of page

Minimum Legacy Hardware Removal Requirements

A legacy-free PC must achieve the following minimum level of legacy hardware removal.

These requirements define the minimum goals for the industry for legacy removal:

No ISA slots or devices present. This is also a Windows Logo Program requirement.

No COM, LPT, PS/2, or game ports. No external serial, parallel, or PS/2-compatible ports, and no ISA-based game ports or MPU-401 (MIDI) ports available for external connection or detected by the operating system.
Systems can provide Super I/O-based IrDA support through 2001. Systems can use the 8042 controller internally, but must not include external PS/2 connectors. Legacy-free systems that use the 8042 controller internally must set the 8042 flag to 1 in the ACPI Fixed ACPI Description Table (FADT).

No FDC. No floppy disk controller (FDC) detected.

No restricted addresses. No use of restricted port addresses as listed in Table 1.
NOTE: A legacy-free system must not use the resources listed in Table 1, except as noted in the table. If hardware--whether on the motherboard or bundled with the system--is present and disabled, ACPI declaration must claim the resources so they cannot be freed.

Table 1. Restricted Port Addresses
 DeviceAddress

 COM1

2E8-2EF
2F8-2FF
3E8-3EF
3F8-3FF

 LPT

278-27A
378-37A
3BC-3BE

 Sound Blaster

0220-022F

 Joystick/game port

0200-020F

 MPU-401 (MIDI)

0330-0331

 Floppy disk controller (FDC)

3F0-3F7

 Keyboard/mouse controller2

0060, 00643

1An internal COM port header can be used as a debug port solution if the COM port is not exposed to the end user. In this case, the COM port must not use the I/O addresses listed in this table; these listed addresses must be claimed in the BIOS but not used. The relocated I/O address must be reported in the ACPI Debug Port table.
2Systems that use the 8042 controller internally can use these addresses if the 8042 flag is set to 1 in the ACPI FADT.
3Systems that do not have an 8042 controller must reserve I/O addresses 0060 and 0064 as reserved motherboard resources.
Top of pageTop of page

Minimum Preinstallation Requirements

The requirements in this section define performance and functionality goals for a fast-booting, easy-to-use, flexible system. To meet minimal goals for expandability and performance, the legacy-free PC must meet the following requirements:

Two USB ports free for end-user expansion--that is, not used by components bundled with the system.
A mobile PC can provide one free USB port.

System recovery media must not be provided on floppy disks--that is, it should be provided on bootable CD or DVD media.

Internal debug header interface that complies with Debug Port Specification, Version 1.0 or later. For any system design that does not include a built-in serial port, the debug solution must be shipped with the system. This is a requirement for the "Designed for Windows" logo for non-legacy systems. The solution must consist of one of the following: For serial ports with non-legacy addresses, the internal header must be exposed in such a way as to be available, but not obvious.

For LPC solutions, the header for the dongle connection must be exposed.

For IEEE 1394 solutions, IEEE 1394 must ship with the system.

For USB 2.0, a USB 2.0 port must be available, exposed, and connected to a host controller that supports debugging.

Preinstalled hardware components must meet the following requirements:

Peripherals bundled with the system must use the required or recommended connections for legacy-free systems--that is, USB, IEEE 1394, PCI, CardBus, Device Bay, and so on.

All external input devices included with the system must be HID compliant.

Hardware components bundled with the system must not depend on Microsoft MS-DOS real mode for installation or configuration.

Preinstalled software components must meet the following requirements:

MS-DOS must not be required to install or run any utilities, games, or other software provided with the system (with the exception of software on the recovery CD provided for Windows Me).

BIOS upgrades or other upgrades must not require booting from a floppy disk if system does not include a floppy disk drive.

Top of pageTop of page

General Requirements in PC System Design Guides

These guidelines apply for all system types, not just legacy-free systems. This section highlights briefly some of these requirements.

PC 2001 Proposed System Requirements. These include:

Any USB storage components included with the system comply with USB Mass Storage Bulk-Only Specification, Revision 1.0 or later.

Advanced Programmable Interrupt Controller (APIC) support, with the APIC properly connected so the system can be configured either in APIC mode or in the standard PIC (virtual wire) mode. Both these modes must be supported for the system to boot properly. For background information, see Key Benefits of the I/O APIC.

Support for S3 implemented in the BIOS and device classes that support wake-up capabilities, including USB controllers and hubs.

PC 99 System Requirements. The following are requirements in the Windows Logo Program. Legacy-free system designs must also meet these requirements:

BIOS supports booting from CD or DVD drive based on El Torito-Bootable CD-ROM Format Specification, v. 1.0.

The video BIOS in ROM (as opposed to extension TSR, VxDs, and so on) must be able to support 800 x 600 x 256 color using the VESA mode set and mode query calls.

Fast POST (not including drive spin up, option ROMs, or enumeration of USB/SCSI, and so on).

If IEEE 1394 is implemented, the host controller must comply with IEEE 1394a and 1394 OHCI 1.0 or later.

If CardBus is implemented, it must meet the requirements defined for the Windows Logo Program.

If PCI components are implemented in the system, they must comply with PCI Local Bus Specification, Revision 2.2 and PCI Bus Power Management Interface Specification, Revision 1.1. All PCI devices must properly implement a unique Subsystem ID (SID) and Subsystem Vendor ID (SVID) as defined in PCI v. 2.2. Implementation guidelines for Windows systems are defined at: http://www.microsoft.com/ whdc/ hwdev/ bus/ pci/ pciids.mspx

If the CD-ROM or DVD drive can support digital audio streams, then the "CD-DA Commands Supported" bit must be set as defined in the MMC-2 standards.


Table 2. Required Interrupts

InterruptDescription

INT 8

System timer.
Used to keep the time-of-day clock updated.

INT 9

Keyboard data ready. The handler needs to be in the IVT chain for INT 9. IRQ1 is unmasked at the PIC.
(See the note following this table.)

INT 10

Set video mode.
All subfunctions are required. Video Mode Support--Relocatable VGA and 800x600x8-bit color.

INT 11

Equipment determination. All subfunctions are required.
If there are devices that appear as floppy drives (for example, El Torito-capable CD-ROM devices), then:

Bit Mask 0x0001 (bit 0) in AL must be set.

Bits 6 and 7 must properly indicate the number of floppy drive devices and devices that appear as floppy devices.

If there are no devices that appear as floppy drives, then:

Bit mask 0x0001 (bit 0) must be clear.

Bits 6 and 7 must be set to 0.

INT 13

High-capacity drive support. All subfunctions required, including AH = 40h-48h.
ROM BIOS must set the head settle, motor start, and format gap values in the disk table pointed to by interrupt vector 1Eh.
Implement the INT 13h AH = 17h call (that is, set the DASD type for format).
Support the change line (INT 13h AH = 15h) on INT 13h floppy drives.
Support INT 13h AH = 8 (Get Device Parameters). The INT 13h AH = 8 Get Device Parameters call must not turn on the drive motor for floppy drives.
Implement the extended INT 13h services (AH functions 41h - 48h).
For INT 13h with AH = 48h for installed floppy drives:

If there are no floppy drives attached as INT 13h devices, INT 13h AH = 48h must fail for all floppy drive numbers (drive 0, in particular). However, INT 13h AH = 8 on drive number 0 (DL== 0) must work even if there are no INT 13h floppy drives, and it must return a floppy drive count of 0 in the DL register to indicate that no floppy drives are present.

If a floppy drive is an industry-standard 1.44-MB, 3.5-inch drive, the INT 13h AH = 8 call on the device should not modify the BL register.

If the device is something other than an industry standard 1.44-MB, 3.5-inch drive, but is media compatible with the 1.44-MB floppy standard, the INT 13h AH = 8 call on the device should return the parameters for a 1.44-MB industry-standard floppy drive but set the BL register to 10h and return the true maximum-supported capacity drive parameters on the INT 13h AH = 48h call.

For floppy devices that are not media compatible with the 1.44-MB floppy standard, the INT 13h AH = 8 call should return the closest reasonable parameters, set the BL register to 10h, and return the true maximum supported capacity parameters on the INT 13h AH = 48h call.

The INT 13h AH = 8 Get Device Parameters call must not turn on the drive motor for floppy drives.

INT 15

The following subfunctions are required:

C0

Get configuration

4F

Translate keyboard scan code

87

Copy extended memory

88

Get extended memory size

AX

C2xx

Mouse functions

E820

Get system memory map

E801

Get memory size

INT 16

The following subfunctions are required:

AH

00h

Get keystroke

01h

Check for keystroke

02h

Get control keys

10h

Get enhanced keystroke

11h

Check for enhanced keystroke

12h

Get control keys for enhanced keyboard

INT 19

Bootstrap loader. All subfunctions are required.

INT 1A

The following subfunctions are required:

AH

0x

RTC

AX

B1xx

PCI BIOS

INT 1B

CTRL+Break Handler

INT 23

CTRL+C, CTRL+Break Handler

Top of pageTop of page

Special Notes:

Interrupt 9:
The INT 9 handler required in the BIOS is exactly the same as that which is required in systems that contain legacy components. This handler is not intended for use during the boot process, it is available to help support legacy applications running in Microsoft MS-DOS Virtual Machines (MS-DOS-boxes).

For backward compatibility with MS-DOS applications, Windows Me implements a complete "Virtual" keyboard controller and passes all keyboard traffic through it regardless of whether it is from a real keyboard controller or a USB keyboard. This allows both Win16 applications and MS-DOS applications to continue to function. In order to support legacy applications in MS-DOS Virtual Machines, the command interpreter must behave the same as on a legacy system, which requires the full INT 9 support provided by legacy systems. This handler handles input from port 60h, passes it off to INT 15h / AH= 4Fh, stores the data in the keyboard buffer of the BIOS Data Area, and updates the flags. The following provides reference code for the required capabilities:

    push   es
    push   ds
    push   a
    push   f    
    mov    ax, 40h
    mov    es,ax
    mov    ax, <segment of translation table>
    mov    ds,ax
    xor    bx, bx
    in     al, 60h
    mov    ah, 4Fh
    int    15h
    jnc    SkipProcess
    mov    bl,al
    shl    ax, 8
    mov    al, ds:[bx]
    mov    bx, es:1ah
    mov    es:[bx]
    inc    bx
    inc    bx
    mov    es:1ah, bx
    mov    al, 61h
    out    20h, al

SkipProcess:
    popf
    popa
    pop    ds
    pop    es
    iret

Interrupt 15h:
Function 4Fh is expected to pass ALL keys from the keyboard, and respect the status of the carry flag on return. The HID key codes from USB keyboards must be translated to PS/2 key codes for backward compatibility with other key filters. All keyboards must be supported, including-but not limited to-101/102 key English, 105 key European, 106 and 109 key Japanese. HID to PS/2 translation tables are available at: http://www.microsoft.com/whdc/device/input/Scancode.mspx

Interrupt 16h:
Windows expects the INT 16h interface to support the sparsely-documented feature of updating the keyboard controller directly with the LED status. Windows will trap this access and direct the update to the correct components.


Top of pageTop of page