What does "Legacy" mean in the world of
computers?
If you have arrived here through a search engine, and there's no menu to the left
click here!
First we need to look at the general definition of the word "Legacy", as it means a gift or honor handed down, as in father to son or daughter. In the world of computers it means essentially the same thing, although it's not necessarily a gift and usually refers to outdated equipment, components, BIOS's or software, including operating systems. Most of all, legacy designs usually, in some manner, cripple computer performance and stability.
As we move into the twenty first century, hardware and software manufacturers are making every effort to reduce legacy bound equipment and operating systems by adhering to the Legacy-Free / Legacy-Reduced Design concept.
"Legacy free" refers to PC system designs that eliminate certain hardware and firmware elements of the original PC architecture while advancing the PC's stability and usability. Manufacturers are quickly moving away from ISA-based devices, among others, and taking advantage of opportunities to reduce legacy dependencies in PC systems. Let's take a glimpse at what term legacy means with respect to computers.
Legacy-Free Hardware and BIOS Requirements
- Minimum
BIOS Requirements for Legacy Removal
- USB
Host Controller Handoff During the Boot Process
- Minimum
Legacy Hardware Removal Requirements
- Minimum
Preinstallation Requirements
- General
Requirements in PC System Design Guides
The following defines the hardware, BIOS, and software requirements for
legacy-free systems that are compatible with the Microsoft® Windows® ME, Windows® 2000, and Windows® XP and later operating system versions. You will find a good deal of this information in the legacy-free design guidelines in the PC 2001 System Design Guide (co-authored by Intel Corporation and Microsoft Corporation).
The basic goal of these requirements is that the operating system, devices, and end users cannot detect the presence of ISA slots or devices, a legacy floppy disk controller (FDC) as well as PS/2, serial, parallel, and game ports. Other exceptions are noted in the specific requirements. This doesn't mean that you will
be losing your floppy disk controller or your PS/2 ports or even your game port.
What it does mean is that they won't have the connection types that you now
have, and the connection types (for lack of a better description) will be managed entirely by the system BIOS and the operating system. Microsoft uses these requirements as testing guidelines in the Windows Logo Program.
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 that 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 the 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 during the entire boot process. 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.
This is present in 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.
Non-boot 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. This is to minimize 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
below lists the known operating system dependencies for which BIOS support will be required for the coming years. Unless otherwise stated, all
sub-functions must be present on a legacy-free system.
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.
Minimum Legacy Hardware Removal Requirements
A legacy-free PC must achieve the following minimum level of legacy hardware
removal.
- No ISA slots or devices present. This is also a Microsoft 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
| Device |
Address |
| 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 |
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. |
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.
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: PCI Device Subsystem IDs and Windows
- 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.
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 |
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: Key Support, Keyboard Scan Codes, and Windows.
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.
Notice: Windows® 95, Windows® 98, Windows® NT, Windows® 2000, Windows®
XP and
Microsoft® Office are registered trademarks or trademarks of the Microsoft Corporation.
All other trademarks are the property of their respective owners.