Year 2000 Personal Computer Platform Compliance Specification
Rev 1.0
Monday, May 10, 1999

Technical Editor:
Curtis Stevens
Phoenix Technologies
135 Technology Drive
Irvine, CA 92618
Phone: (949) 790-2000
Fax: (949) 790-2001
Curtis_Stevens@Phoenix.COM

1 Introduction

The Year 2000 problem for computers results from limitations in hardware and software that have generally been present since the computer's initial development. The year 2000 concern for Personal Computer (PC) users is whether their PCs will correctly support dates beyond December 31, 1999.

As the year 2000 approaches, the primary focus continues to be placed on the computer industry, both software and hardware.

Many computer programs store the year in a date field using only two digits, "88", for example. The century designator "19" was assumed.

These applications might recognize the date "00" as the Year 1900, when in fact the year should be "2000."

As a result, after Dec. 31, 1999, these computer applications may shut down or produce incorrect data. The concern relating to computer hardware is simply whether the hardware will be capable of retaining and reporting proper dates into 2000 and beyond.

2 Scope

The "Year 2000 Personal Computer Platform Compliance Specification" does not introduce new Personal Computer (PC) requirements. These requirements have already been accepted and implemented throughout the PC industry.

Each manufacturer has used its own set of definitions and terms describing year 2000 compliance or readiness. The following sections formally document generally accepted practices that already exist as they relate to the year 2000 and the Personal Computer technology.

This document specifies the PC platform requirements for year 2000 compliance in personal computers. The reader should be familiar with the following:

1. PC architecture

2. Issues associated with year 2000 compliance

3. Issues associated with setting the date and time on a PC

The following items are specified in this document:

1. PC hardware components associated with year 2000 compliance

2. Mechanisms for achieving year 2000 compliance

3. What the user should see in year 2000-compliant PCs

In short, this document specifies requirements for year 2000 implementation, but not the implementation details.

2.1 Purpose

The IEEE standard for Year 2000 Terminology (IEEE Std 2000.1-1998) defines usage of the term "Year 2000 compliant" to mean the "year 2000 compliant technology shall correctly process date data within and between the 20th and 21st centuries, provided that:

a) The technology is used in accordance with its associated documentation, and
b) All other technology used with it properly exchanges data with it."

The Year 2000 PC Compliance Specification provides the additional compliance information required to determine if a PC is year 2000 compliant.

2.2 Definition of Terms

The Year 2000 PC Compliance Specification assumes the reader is familiar with terms normally used in the computer industry. The definitions that follow are for terms that may have more than one meaning, or may have disagreement on the meaning, in the computer industry.

2.2.1 Application

An application is any software that requires the services of an operating system to function.

2.2.2 BIOS

The Basic Input Output System (BIOS) for a PC is a firmware collection of routines that among other things initialize a PC, load and start the operating system, and then provide a basic set of runtime services. The runtime services abstract the system hardware in a way that allows operating systems to boot and run in a hardware independent fashion.

2.2.3 Operating System

An operating system is a software layer of services that, among other things, provides configuration utilites for all devices managed by the operating system, allows the user to run applications or programs, and provides an execution environment for applications.

These services provided by the execution environment generally includes, but are not limited to, output device (screen) management, input device (keyboard) management, mass storage device management, memory management, and power management.

2.2.4 Device Driver

Device drivers are software that extend the functionality of the operating system to incorporate new hardware, or to add capabilities to the execution environment.

2.2.5 Real Time Clock (RTC)

An adjustable, battery powered device that maintains the date and time independent of the computer system.

The RTC does not rely on the system for power. The RTC is associated with a memory area known as CMOS-RAM and uses this area to store values indicating the date and time and provide storage for other system settings that must be maintained while the computer system is switched off.

2.2.6 CMOS-RAM

A battery-backed memory bank in a PC that holds configuration settings such as drive types, port speeds and modes, time, date and other system information. CMOS stands for Complementary Metal Oxide Semiconductor, a power-efficient method of assembling circuits of transistors.

2.2.7 TSR

A TSR is a Terminate and Stay Resident program. This is an application that once terminated has some functionality that remains active in memory.

2.2.8 PC

A PC is a Personal Computer that has an x86 or compatible microprocessor that is compatible with the IBM PC/AT architecture, including the hardware and firmware.

3 Overview

PCs initially set the current date and time based on information received from a device common to all compatible PCs based on the IBM PC and successor PCs, the Real Time Clock (RTC).

The RTC, as originally defined for the PC was designed to allow the computer’s user to set the date and time once when the PC is first started, and to automatically maintain date/time information from then on. When the operating system (OS) is booted, it normally initializes its current date from the RTC through a BIOS call. Once initialized, the OS maintains the PC's date as long as the PC is powered on. Originally, the RTC was located in its own device.

In today’s PCs, the chipset handles RTC operations, which remain essential for setting and maintaining information about date and time. The chipset is one or more chips that provide an interface between the CPU and other hardware devices such as memory, I/O ports, and the RTC.

The CMOS-RAM data area contains information about the actual date and time as well as settings specified by the user in Setup. These settings configure the computer when it is started and used to identify the appropriate device for booting the operating system.

In most current PC's, only the lower two digits of the year are maintained automatically. When the year 1999 changes to 2000, the RTC will update the year digits from "99" to "00".

However, because the century is not a hardware counter register in the core functionality of the RTC, it may not be automatically updated when a century rollover occurs. But unlike software applications, compatible PCs may store data describing the correct century in a separately defined area of CMOS-RAM, which can vary from system to system in location and form.

The following diagram describes the various PC components and highlights the components associated with hardware year 2000 compliance. The BIOS is the only component that should access the RTC directly, as highlighted with the solid lines found in the diagram below. If an application or operating system bypasses the BIOS for reading the RTC, the burden of support for year 2000 compliance belongs to the operating system or application that is reading the RTC, as shown by the dotted line arrows.

4 Platform Year 2000 Compliance

A platform is year 2000 compliant if the BIOS services correctly return the century as time advances from 31-DEC-1999 to 1-JAN-2000` in accordance with clause b of the IEEE Std 2000.1-1998, definition of "Year 2000 Compliant" . If the BIOS fails to return the correct century after 31-DEC-1999 then the platform is not year 2000 compliant.

Operating System Platform

There are two different situations where year 2000 compliance must be demonstrated: the PC is on, or the PC is off.

4.1 PC Is On

If the PC is on when the date changes from 31-DEC-1999 to 1-JAN-2000 the responsibility for reporting the date lies with the platform . If the operating system or applications use BIOS calls to read the date, then the BIOS is responsible for reporting the correct date including the century (i.e. from 1999 to 2000).

4.2 PC Is Off

If the PC is turned off prior to 1-JAN-2000 and subsequently turned on after 31-DEC-1999, it is the responsibility of the platform to report the correct date, including the century.

5 Platform Year 2000 Operational

A PC that does not fit the definition of Platform Year 2000 compliance as described in section 4 may still be Year 2000 operational. A year 2000 operational platform will report the correct date after a one-time user intervention. For example, the user can set the date manually, or apply year 2000 tools recommended by the system manufacturer. Once the correct date has been set, the platform will continue to report the correct date, including the century.

Informative Appendix A

Year 2000 Tools

A PC that requires intervention when the date advances beyond 1999 does not meet the compliance requirements found in section 4.

Many tools are available for application to legacy PCs that may not be Year 2000 compliant as described in this specification. These tools include:

Terminate and Stay Resident (TSR) programs, device drivers, boot sector programs, operating system controls and add-on hardware.

A platform that is Year 2000 Operational can also benefit from year 2000 tools. It is recommended that the PC manufacturer be contacted for information on programs addressing non-compliant PCs.

Informative Appendix B

When the PC is suspended

Operating systems that support power management will obtain the current date and time from the platform during the resume operation.

Some operating systems do not support power management. When a system resumes from a suspended state, these operating systems may not automatically obtain the current date and time from the platform. Regardless of the operating system, the year 2000 compliance requirements for a resume operation for the platform are the same as those described in section 4.1, "System Is On."

Informative Appendix C

The Century Byte

The BIOS may use a byte of CMOS memory to remember the current century. This byte is not part of the internal clock circuitry of the RTC that is automatically updated by the hardware. If the BIOS uses a CMOS byte to store the century information, there is no standard location where this byte resides. In the original IBM PC/AT the century was at byte 32h.

As PC architecture evolved , the century was placed in byte 37h in some PC’s. Today, some PC’s move the century byte outside of the normal CMOS memory locations where the update is automatic using addtional hardware. Many of the industry’s PC’s still use the CMOS century byte location of 32h.

There has never been a standard location for the century byte in a PC. This is why applications or operating systems should not read the century byte directly, as explained in the overview (section 3). Operating systems or applications that read the century byte directly are responsible for the year 2000 update process.

While some PC’s do have a hardware automated century byte in the RTC, the majority of PC manufacturers still maintain this byte using BIOS. When a request by an operating system or an application for the date is made from the BIOS, the century byte may be updated from "19" to "20". The logic used to determine if the update should occur uses a windowing technique as described in the following example:

Example : An application / operating system requests date from BIOS

If year is greater than or
       equal to 00 and year is less than [xx]
  Read the century
  If century equals 19
       Update century to 20

xx ranges normally less than or equal to 80

Another event that may invoke this algorithm is when the PC is powered on or reset, the first time in the 21 st century. The system may then correct the century byte to "20", prior to the initialization of an operating system.