Plug and Play BIOS Functionality and Windows 95

January 1995

Abstract

This article discusses why it is required to have a Plug and Play-compliant BIOS (version 1.0a) and what items should be implemented when designing a Plug and Play BIOS for a Plug and Play desktop or mobile machine.

This article is intended to complement the Plug and Play BIOS Specification and PC '95 Hardware Design Guide on the implementation of Plug and Play BIOSs.

This document includes:

Overview

A Plug and Play computer system consists of a Plug and Play BIOS Version 1.0a, Plug and Play hardware, and a Plug and Play operating system. The role of a Plug and Play computer system is to allow the computer's BIOS, hardware components, and operating system software (in this case, Microsoft® Windows® 95) to automatically install, configure, and use any combination of cards, devices, and configuration environments. To qualify for the "Designed for Windows 95" logo, one of the requirements for the computer is a Plug and Play BIOS version 1.0a. The Plug and Play BIOS addresses two areas that are very important in setting up a conflict-free or Plug and Play ready system: Resource Management and Run-time Configuration.

Resource Management

The Plug and Play BIOS helps ensure that during startup, system resource conflicts are resolved so that the operating system can launch successfully. The system resources include IRQs, DMA, Input/Output, and memory addresses. Non-Plug and Play systems, which do not have uniform interfaces for storing and retrieving resource information, can experience frequent conflicts because the resources have been over-allocated by many different devices.

Besides resolving conflicts with systemboard-level devices, the Plug and Play BIOS may also resolve conflicts with Plug and Play cards during the boot process when you first turn the computer on. Once the system has completed the boot process, configuration/control of the Plug and Play devices is transferred from the BIOS to the operating system.

Run-Time Configuration

The Plug and Play BIOS also provides configuration services even after the POST process has been completed—also known as Run-Time Configuration or Services.

Run-time services is a new Plug and Play component that has been incorporated into the system's BIOS. This allows for resources to be allocated dynamically even after the operating system has been loaded. The operating system can change the resource allocation and configure the devices to prevent conflicts and provide run-time configuration.

Plug and Play BIOSs, through the Run-time services, can also provide dynamic event management, or the configuration of devices dynamically as they are installed—such as the insertion of a laptop into its docking station—which can reconfigure the system automatically.

BIOS Functionality: Ensuring Plug and Play BIOS Compliance

Required functions of a Plug and Play BIOS depend on your system characteristics, such as whether your platform is mobile or not, whether it is a desktop, has an ISA bus, and so forth. To enable the interaction of a Plug and Play BIOS with the operating system, you must support the $PnP installation check structure, and return FUNCTION_NOT_SUPPORTED for any function defined in the Plug and Play BIOS specification that isn't supported.

Information on System Board Devices

Some functions of the Plug and Play BIOS allow reporting of devices on the motherboard along with the resources they use, and changing those resource allocations if there is such support in the underlying hardware. Therefore, if your system has devices on the motherboard that use resources (either static or configurable), you must support functions 0, 1, and 2 (Get Number, Get, and Set System Device Node).

Information on ISA Bus Support

The Plug and Play BIOS also has specific support for the ISA bus, which may contain Plug and Play ISA cards. (See "Microsoft Windows and the Plug and Play Framework Architecture" for more details about Plug and Play ISA cards.) Therefore, if your system has an ISA bus, the BIOS is responsible for isolating and initializing any Plug and Play ISA cards required to boot. You must also support the Plug and Play BIOS function 40h (Get Plug and Play ISA Configuration Structure).

Information on Dynamic Events

The remaining area of required support is necessary if your system has dynamic events. One type of event is Advanced Power Management (APM), and another type is a docking event. (The usefulness of docking events is explained further in "Microsoft Windows and the Plug and Play Framework Architecture.") Therefore, if your system supports APM, you must support function 0Bh (Get APM 1.1 ID Table). If your system supports docking to an expansion base, you must support functions 3, 4, and 5 (Get Event, Send Message, Get Docking Station Information).

BIOS Functionality: Additional

There are at least two more things that can be supported, but they are optional. One is that systems with an ISA bus can store information concerning resource usage by "legacy" ISA cards. The method of implementing such support depends on whether you want to store information on the "overall" resource usage, or whether you want to store specific "individual" resource usage for every device in the system. To support the first option, support functions 9 and 0Ah (Set, Get Statically Allocated Resource). If you choose the second option (individual resource usage: ESCD style), you will need to support functions 41h, 42h, and 43h (Get, Read, Write Extended System Configuration Data). The Configuration Manager/Utility from Intel requires that at least one (or both) of the options for the storing of resources be implemented.

Plug and Play BIOS with MS-DOS and Windows 3.x

The remaining optional support is for partial Plug and Play on MS-DOS® and Windows 3.x. This limited support can be achieved with the Plug and Play BIOS on systems with an ISA bus by using Intel's ISA Configuration Utility (version 1.2 or later) along with their Configuration Manager (version 1.2 or later) VxD or MS-DOS driver (shown in Figure 1). Figure 2 points out that Windows "Chicago" uses the same interfaces (except it calls with a 32-bit stack).

Note   A Plug and Play BIOS needs to accommodate both cases (16-bit stack and 32-bit stack BIOS calls to be compatible with Windows 3.x, Windows 95, and Windows NT™ 3.x).

Figure 1. Example of a system using a Plug and Play BIOS version 1.0a, Configuration Manager version 1.2, and Windows 3.x/MS-DOS to provide an increased level of Plug and Play support while allowing for the future enhancements provided by the Plug and Play operating system, Windows 95.

Figure 2. Example of a complete Plug and Play hardware and software solution. The Plug and Play operating system configures the "software" drivers, while interacting with the Plug and Play BIOS to allow for the automatic configuration of the "hardware" through a standard interface. You can achieve this Plug and Play configuration by simply "upgrading" your current operating system to Windows 95, a Plug and Play operating system.

Note   Plug and Play requires a Dynamically Loadable VxD.

Summary—Call to Action

To implement a Plug and Play BIOS (version 1.0a) into your personal computer system, you have a few avenues to choose from. One option is to obtain a Plug and Play BIOS from a BIOS vendor who already has one ready for implementation. Or, if you have a close working relationship with a particular BIOS vendor, you can request them to incorporate the Plug and Play functionality into your current BIOS offering. If you design your own system BIOS, you can easily implement the Plug and Play capabilities by reading the Plug and Play BIOS Specification.

The first Beta of Windows 95 fully supports the Plug and Play BIOS 1.0a specification and can serve as a good platform for testing compatibility with this specification.

Questions and Answers

Question:

I was given BIOS extensions and informed that they were necessary for Plug and Play capability under Windows 3.x/MS-DOS. Isn't Plug and Play BIOS only for Windows 95?

Answer:

No. Plug and Play BIOS will work with Windows 3.x, Windows 95, and Windows NT. As in Figure 1, the configuration manager/utility (CM/CU) for MS-DOS/Windows 3.x will work with the Plug and Play BIOS version 1.0a.

By implementing a Plug and Play BIOS (version 1.0a) you can have Plug and Play functionality today while allowing for the future Plug and Play ability of Windows 95. Having only one BIOS implementation (Plug and Play BIOS version 1.0a) can save you time and money by requiring you to test only one BIOS configuration with your computers. Having two BIOS implementations would require two separate compatibility testing sweeps.

Also, the only way to receive the Windows 95 compatibility logo for a computer system is to have a Plug and Play BIOS (version 1.0a) installed in the computer. Many BIOS vendors already offer the ability to upgrade your BIOS to the full Plug and Play BIOS functionality.

Question:

Will Windows 95 work on my legacy computer (non-Plug and Play BIOS [version 1.0a])?

Answer:

Yes, but not with all the Plug and Play benefits. Although Windows 95 will still work on a non-Plug and Play BIOS-based computer (that is, a legacy computer), you will not be able to obtain the full ability and benefits of a true Plug and Play system.

To achieve the highest level of Plug and Play compatibility and the benefits of automatic conflict resolution, with little or no user intervention, a computer with Plug and Play BIOS version 1.0a is necessary. Also, the only way to achieve great docking solutions is via the Plug and Play BIOS 1.0a event and run-time services.

Bibliography

Plug and Play BIOS Specification (version 1.0a). This specification provides a detailed discussion on implementing Plug and Play BIOS. The Plug and Play BIOS Specification (version 1.0a) is available on the CompuServe forum "PLUGPLAY."

Windows 95. You can request a beta copy of Windows 95 by writing to the following address:

Microsoft Corporation
Att: Windows 95 - Beta Test Coordinator
One Microsoft Way
Redmond, WA 98052-6399

In the letter, please describe why you wish to obtain the Windows 95 beta (re: Plug and Play BIOS implementation and testing) and a description of the equipment platform you will be doing the testing on.

"Microsoft Windows and the Plug and Play Framework Architecture" (March, 1994). This document provides a detailed discussion on how Plug and Play is incorporated into the PC architecture. This document is available on the CompuServe forum "PLUGPLAY."

Plug and Play Device Driver Interface for Windows 3.1 and MS-DOS (version 1.0c). This specification provides information on implementing the Plug and Play device driver interface for current operating systems. This specification is available on the CompuServe forum "PLUGPLAY."

Intel's Plug and Play Kit for MS-DOS and Windows. To obtain this kit (update version 1.2), you can call Intel's order line at (800) 253-3696, ext. 66, or fax orders directly to Intel at (503) 234-6762.

ESCD Specification (version 1.02a). This specification is available on the CompuServe forum "PLUGPLAY."