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:

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.

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:

Preinstalled hardware components must meet the following requirements:

Preinstalled software components must meet the following requirements:

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:

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

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.

Copyright ©1995-2002 DEW Associates Corporation. All rights reserved.