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.
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. |
| • | 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. |
| • | 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. |
| • | 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. |
| • | 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. |
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.
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. |
| • | No FDC. No floppy disk controller (FDC) detected. |
| • | No restricted addresses. No use of restricted port addresses as listed in Table 1. |
| Table 1. Restricted Port Addresses | |
| Device | Address |
COM1 | 2E8-2EF |
LPT | 278-27A |
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 |
| 1 | An 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. |
| 2 | Systems that use the 8042 controller internally can use these addresses if the 8042 flag is set to 1 in the ACPI FADT. |
| 3 | Systems that do not have an 8042 controller must reserve I/O addresses 0060 and 0064 as reserved motherboard resources. |
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. |
| • | 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. |
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
| Interrupt | Description | |||||||||||||||
INT 8 | System timer. | |||||||||||||||
INT 9 | Keyboard data ready. The handler needs to be in the IVT chain for INT 9. IRQ1 is unmasked at the PIC. | |||||||||||||||
INT 10 | Set video mode. | |||||||||||||||
INT 11 | Equipment determination. All subfunctions are required.
If there are no devices that appear as floppy drives, then:
| |||||||||||||||
INT 13 | High-capacity drive support. All subfunctions required, including AH = 40h-48h.
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:
| |||||||||||||||
INT 16 | The following subfunctions are required:
| |||||||||||||||
INT 19 | Bootstrap loader. All subfunctions are required. | |||||||||||||||
INT 1A | The following subfunctions are required:
| |||||||||||||||
INT 1B | CTRL+Break Handler | |||||||||||||||
INT 23 | CTRL+C, CTRL+Break Handler |
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.