WW0654: Windows 3.1 and Serial CommunicationsLast reviewed: May 1, 1997Article ID: Q92447 |
3.10 3.11
WINDOWS
kbfile kbdisplay kbappnote
The information in this article applies to:
Microsoft has an Application Note, "Windows 3.1 and Serial Communications" (WW0654), that provides information about serial communications in the Windows 3.1 environment. This Application Note includes a discussion of improvements in Windows 3.1, a conceptual overview, and a discussion of why conflicts occur. You can obtain this Application Note from the following sources:
THE TEXT OF WW0654
Microsoft(R) Product Support Services Application Note (Text File) WW0654: WINDOWS 3.1 AND SERIAL COMMUNICATIONS Revision Date: 10/92 No Disk IncludedThe following information applies to Microsoft Windows(TM) version 3.1.
-------------------------------------------------------------------- | INFORMATION PROVIDED IN THIS DOCUMENT AND ANY SOFTWARE THAT MAY | | ACCOMPANY THIS DOCUMENT (collectively referred to as an | | Application Note) IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY | | KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO | | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A | | PARTICULAR PURPOSE. The user assumes the entire risk as to the | | accuracy and the use of this Application Note. This Application | | Note may be copied and distributed subject to the following | | conditions: 1) All text must be copied without modification and | | all pages must be included; 2) If software is included, all files | | on the disk(s) must be copied without modification [the MS-DOS(R) | | utility DISKCOPY is appropriate for this purpose]; 3) All | | components of this Application Note must be distributed together; | | and 4) This Application Note may not be distributed for profit. | | | | Copyright 1992 Microsoft Corporation. All Rights Reserved. | | Microsoft and MS-DOS are registered trademarks and Windows | | is a trademark of Microsoft Corporation. | | IBM, Micro Channel, and PS/2 are registered trademarks of | | International Business Machines Corporation. | | Logitech is a trademark of Logitech, Inc. | -------------------------------------------------------------------- INTRODUCTION ============This Application Note provides information about serial communications in the Microsoft Windows version 3.1 operating system environment. The first section, "What's New in Windows Version 3.1," gives an overview of improvements in Windows 3.1. The section "Conceptual Overview" explains basic and advanced concepts in serial communications, including port addresses, device contention, and so forth. The section "Why Conflicts Occur" discusses the most common reasons why you may experience difficulties with serial communications, and the section "How to Resolve Conflicts" explains what to do once you have identified the problem. If you need help with a specific problem, you may want to start by reading the "Troubleshooting" section.
WHAT'S NEW IN WINDOWS VERSION 3.1Here are some highlights about improvements in how Windows 3.1 handles serial communications.
Performance Improvements
Better Support for Your Ports
SERIAL VS. PARALLEL PORTSInput/output (I/O) ports provide the means for your PC to send or receive data through external devices such as modems, printers, fax machines, and so forth. Virtually all PCs have both parallel and serial ports. There are several distinctions between serial and parallel I/O ports. Parallel ports are generally used only for printers, which is where the name LPT, for line printer, originates. Parallel ports transmit data in complete bytes, and in most cases they handle outgoing data only; they cannot receive information. (The IBM[R] PS/2[R] parallel ports are bidirectional; in addition, you can use certain peripherals, such as network card adapters, to enable your ports to transmit data bidirectionally.) You do not configure parallel ports; they are preconfigured for your machine. Serial ports are generally used for communications, or COM devices, which include serial printers, modems, fax machines, and so forth. Serial ports are capable of both sending and receiving data. You can configure settings--such as parity, stop bits, and data length--for your serial ports. (In Windows, you can specify these settings by using Control Panel.) Serial ports transmit data one bit at a time, sequentially (or serially).
PORT ADDRESSES AND IRQSEvery time you start your PC, your system BIOS checks your COM ports to see what serial devices are installed on your PC and posts this information to the system BIOS data area (BDA). Windows "reads" the BDA, and uses the default interrupt request line (IRQ) for each device that is registered there. Usually, each COM port requires a unique IRQ to communicate with your PC. Certain PCs and some I/O cards support IRQ sharing.
NOTE: Some earlier BIOS versions may not check for devices on COM ports 3 and 4. If you have devices installed on COM port 3 or 4 and your system BIOS does not recognize these ports, you need to register the addresses for COM3 and COM4 by using Windows Control Panel. This is explained in the procedure "To register a serial device" later in this Application Note. How Should My COM Ports Be Configured?Generally, PCs come with built-in ports COM1 and COM2 preset to the following values:
Port Address IRQ ---------------------------- COM1 03F8 4 COM2 02F8 3In most cases, the default values for COM ports 1 and 2 should work for your system. You can view your COM port settings by using Windows Control Panel. Most PCs do not have built-in ports for COM3 and COM4. The default settings for these additional ports are listed here:
Port Address IRQ ------------------------------------ COM3 03E8 4 COM3 (PS/2) 3220 3 COM4 02E8 3Because COM1 and COM3 both use IRQ4 as the default, and COM2 and COM4 both use IRQ3, you may need to reassign the IRQ if you use serial devices (such as a fax card or modem) on COM ports 3 or 4. You can reassign IRQs by using Control Panel. For more information, see the procedure "To reassign the IRQ" later in this Application Note. (You do not need to reassign the IRQ if you have an MCA or EISA machine, or a serial I/O card that supports IRQ sharing.)
16550AFN UART CHIP SUPPORTEvery serial port uses a Universal Asynchronous Receiver-Transmitter (UART) chip to send and receive data. Inside your PC, data travels in parallel form. When you send or receive data by means of a serial device, the UART chip converts the data to a serial format so that your port can read it. Many machines still use either the 8520 or the 16450 UART chip. The main advantage of the 16550AFN UART chip is its first in, first out (FIFO) buffering scheme, which can dramatically improve performance for modem transfer speeds of 9600 baud or higher. If you usually set your modem to 2400 or 1200 baud, chances are you don't need the 16550AFN UART.
NOTE: The 16550, an earlier version of the chip, was used in IBM PS/2 computers, models 50, 60, and 80, and replaced by the 16550AFN in the PS/2 model 70. You may want to check with your manufacturer to determine which version of the 16550 chip is installed in your machine. The 16550 chip does not support FIFO buffering. MS-DOS-BASED VS. WINDOWS-BASED APPLICATIONSWindows-based applications share a single time slice; each MS-DOS- based application running under Windows receives its own time slice. A time slice is the amount of processor time allocated to an application, usually measured in milliseconds. The smaller the time slice, the more efficiently Windows can run multiple tasks; therefore, in general, you will notice better performance with Windows-based applications running under Windows. You can also use "Windows-aware" software to emulate timeslice sharing for MS-DOS-based applications and thereby improve performance. You run MS-DOS-based applications under Windows by writing PIF files that specify how you want Windows to schedule processor time for these applications. (For more information about PIF files, refer to Chapter 8, "PIF Editor," in the version 3.1 "Microsoft Windows User's Guide.")
WHY CONFLICTS OCCUR ===================For serial communications to be successful, three settings must match: the port addresses in the BIOS data area, the COM port entries in the SYSTEM.INI file, and the switches on your serial hardware (if you have any installed). This section discusses the situations that can occur if these settings do not match, as well as other situations that can cause conflicts. Determining whether these settings match, and changing them if they do not, is discussed in the section "How to Resolve Conflicts" later in this Application Note.
IRQ SHARINGMany serial communications problems result from two devices attempting to use the same IRQ. For example, if you install a serial mouse on COM1 and a modem on COM3, both devices could attempt to use IRQ4 (the default setting) at the same time. Unless your PC supports IRQ sharing (the ability to have multiple ports using the same IRQ), this could cause your mouse or modem to lose functionality. MCA and EISA machines support IRQ sharing. In addition, some serial I/O cards support IRQ sharing even if your machine is not specifically configured to do so. Windows 3.1 fully supports such serial I/O cards. For more information, see the "IRQ Sharing" section under "How to Resolve Conflicts" later in this Application Note.
BIOS DATA AREA AND ADDRESS PACKINGThere are four sequential spaces in the BDA for COM port addresses 1 through 4. The BIOS lists port addresses so that no blank spaces occur between addresses. Windows reads the BDA sequentially and actually expects a blank address where there is no COM port. This can cause conflicts when Windows assigns IRQs. For example, if you have a mouse on COM1, a printer on COM2, and a modem on COM4, Windows expects the BDA to look something like this:
(COM1) (COM2) (COM3) (COM4) 0040:0000 F8 03 F8 02 00 00 E8 02Because the BIOS does not use zeros as placeholders, however, the BDA actually looks something like this:
(COM1) (COM2) (COM3) (COM4) 0040:0000 F8 03 F8 02 E8 02 00 00This behavior is known as address packing, or address shifting. Windows assigns IRQs in the order that it finds a COM port address. In this situation, Windows would assign IRQ4 (the default for COM3) to the device that is actually on COM4. This could cause loss of functionality on COM4 because IRQ4 is already being used by COM1. BIOS packing can affect COM ports 1 and 2 as well. For instance if you have no device on COM1, your COM2 address may register in the COM1 BIOS area. Whether or not you experience problems as a result of address packing may depend on what COM ports you are using, what type of hardware you have, and whether you are using MS-DOS-based communications software. To correct this type of situation, you write a Debug script. A Debug script records the correct port addresses in your system memory. This procedure is described in the section "How to Resolve Conflicts" under '"Address Packing." MS-DOS-BASED COMMUNICATIONS SOFTWARE AND WINDOWS 3.1MS-DOS-based applications and Windows-based applications handle serial communications in different ways. This section discusses guidelines for using your MS-DOS-based communications programs under Windows 3.1. For more information, see chapters 7, "Non-Windows Applications," and 8, "PIF Editor," in the version 3.1 "Microsoft Windows User's Guide."
General GuidelinesYou use 386 enhanced mode Windows, and PIF files, to give Windows control of your MS-DOS-based communications applications. We don't recommend running MS-DOS-based communications applications in standard mode Windows, as this may cause data loss or other problems. For better performance, run your MS-DOS-based applications in full- screen mode rather than in a window. If you run an MS-DOS-based communications application in the background during a data transfer, run it minimized as an icon rather than in a window.
PIF File Guidelines
Device ContentionIn the Windows multitasking environment, two applications sometimes simultaneously request the use of a device (such as a COM port or modem). This is known as device contention. When you are running MS- DOS-based communications applications under Windows in 386 enhanced mode, you need to set device contention options in Control Panel. Doing so specifies how you want Windows to handle device requests from your MS-DOS-based applications. Problems that can occur as a result of serial device contention include the inability to access a COM port. For more information, see the procedure "To set device contention options" later in this Application Note.
UART Support for MS-DOS-Based ApplicationsWindows 3.1 provides application support for the new 16550AFN UART buffer (see the section on the UART earlier in this Application Note). However, MS-DOS-based applications may not recognize the 16550AFN UART, treating it instead like the earlier 8250 version. This, in turn, may result in data loss. Whether you experience these problems also depends to a certain extent on your hardware manufacturer. Pacific Commware's TurboCom is an advanced serial port communications driver for Windows that provides UART support for MS-DOS-based applications running under Windows. TurboCom also supports IRQ sharing and baud rate speeds of up to 57.6K. If you regularly use MS-DOS-based communications software or software that requires a baud rate of 9600 bits per second (bps) or higher, you may want to use the TurboCom driver. For additional information, contact your local dealer, or call Pacific Commware at (510) 540-8080.
NOTE: If your communications software runs at 2400 baud or lower, using the 16550AFN UART probably won't noticeably improve your system's performance. Address Packing and MS-DOS-Based ApplicationsIf Windows assigns an IRQ that is being used by an MS-DOS-based program, you may receive the message "The COM port is currently assigned to a DOS application. Do you want to reassign the port to Windows?" The problem occurs when your machine BIOS packs addresses before posting them to the BDA. Windows reads the BDA sequentially, assigning the default IRQ for COM1 to the first entry it finds, the IRQ for COM2 to the second entry, and so forth. For example, if you have a device on COM2 but not on COM1, and your system BIOS packs addresses, the COM2 address "shifts" into the BDA slot for COM1. Consequently, Windows assigns IRQ4 (the default for COM1) to the device that is actually on COM2. MS-DOS-based communications programs access the COM ports directly, without posting their port address to the BDA. Using the same example, if you have no serial device on COM1, and your MS-DOS-based communication program is using COM2, the MS-DOS-based program still uses the default IRQ for COM2. You can remedy this situation by writing a Debug script. For more information, see the procedure "To write a Debug script" later in this Application Note.
THIRD-PARTY COMMUNICATIONS DRIVERSSome Windows-based third-party programs install their own drivers to replace the drivers provided by Windows. If these third-party drivers are installed in your system when you upgrade from Windows 3.0 to Windows 3.1, Setup does not install the Windows communications driver (COMM.DRV). In most instances, it is best to use the Windows 3.1 driver, rather than a driver designed for Windows 3.0. If you are experiencing driver problems (such as an inability to use higher baud rates, or problems accessing the modem), you can reinstall COMM.DRV or contact the manufacturer of your third-party driver for an update. You can tell whether you have the Windows communications driver, or whether it has been replaced by the driver(s) that came with your communications software, by looking in your SYSTEM.INI file. See the procedure "To check for third-party drivers" later in this application note.
HOW TO RESOLVE CONFLICTS ========================You should now be familiar with the most common reasons for serial communications problems in Windows 3.1. This section describes a few simple procedures you can follow to correct these problems.
RESOLVING IRQ CONFLICTSIf you have serial devices on both COM1 and COM3, or COM2 and COM4, and your machine architecture does not support IRQ sharing, you need to reassign the IRQ for COM3 or COM4. (If you are using a serial card that supports IRQ sharing, read the section that follows this procedure.) To properly reassign the IRQ:
Standard IRQ Settings (Table)The following table shows the most common IRQ settings. You can use Control Panel to specify an IRQ from this table if it matches your hardware requirements. Or, if you'd like to view a table similar to this that lists the current settings in your PC, you can use MSD.
IRQ Number Description --------------------------------------- 0 Timer 1 Keyboard 2 Link to IRQs 8-15 3 COM2, COM4 4 COM1, COM3 5 LPT2, or Reserved 6 Floppy disk controller 7 LPT1, LPT3 8 Real time clock 9 Redirected IRQ2 10 Reserved 11 Reserved 12 PS/2 mouse 13 Math coprocessor 14 Hard disk controller 15 ReservedThe IRQs with "Reserved" entries in the corresponding Description column are often available. (This does not guarantee they are currently available on your PC.) You can use Control Panel to choose one of the "Reserved" IRQs, such as IRQ10, and then restart your system to see whether the COM port now works.
NOTE: You must also change the hardware setting to the same IRQ. To do this, follow the manufacturer's instructions.If the first IRQ you choose does not work, you can try the next IRQ from this table, and so forth. If you do not have a PS/2 mouse port, you may be able to use IRQ12. Or, you can use MSD to view the IRQs that are actually available on your PC.
To Use MSD to Determine Available IRQs
To Reassign the IRQ from Control Panel
IRQ-Sharing Serial I/O CardsIf you are using an IRQ-sharing I/O card on a machine that does not have MCA or EISA architecture, you need to add the following line to the [386Enh] section of the SYSTEM.INI file:
COMIrqSharing=TRUE NOTE: This setting does not, by itself, provide your system with IRQ- sharing support. You must have the correct hardware configuration, and the hardware must be installed according to the manufacturer's specifications. ADDRESS PACKINGIf you are using an MS-DOS-based communications program, Windows may assign an IRQ to a Windows serial device that is already in use by your MS-DOS-based program. If this happens, you may receive the error message "The COMx port is currently assigned to an MS-DOS application. Do you want to reassign the port to Windows?" To remedy this situation, you need to familiarize yourself with the BDA. (This error message may also occur if you have a BIOS that does not search for serial devices on COM ports 3 or 4. If this is the case, you can use Control Panel to register the devices.)
To View the BDA by Using Debug
To Interpret the BDA COM Address EntriesThis table shows the four standard COM addresses as they should be listed in the BDA. (The COMx headings do not appear in the BDA.)
(COM1) (COM2) (COM3) (COM4) 0040:000 F8 03 F8 02 E8 03 E8 02If you have a serial device on COM port 3 or 4, and the BDA does not show an entry for the device, you can use Control Panel to register the device in the BDA. However, if the BDA shows any of the standard addresses in a location other than what is shown here (for example, address F8 02 in the space for COM1, or address E8 02 in the space for COM3), then you need to write a Debug script.
NOTE: If you see an address in your BDA that is not shown here, your hardware may use nonstandard serial port addresses. In this case you need to register the nonstandard address by using Control Panel. See the procedure "To register a serial device." To Write a Debug Script
taken effect. NOTE: The port address setting on your physical serial device must match what you specify in the Debug script. If your hardware requires a nonstandard address, you can specify that address in the Debug script. SERIAL DEVICES ON COM3 AND COM4 DO NOT REGISTERSome earlier BIOS versions only recognize devices installed on COM ports 1 and 2. If your system BIOS does not recognize serial devices on COM ports 3 and 4, you can use Control Panel to notify Windows that you have devices installed at these locations. However, if your BIOS registers such devices but incorrectly records them at different addresses in the BDA (due to address shifting or packing), you cannot use Control Panel to correct this situation. Instead, you need to write a Debug script. Refer to the previous procedure. To determine whether your system BIOS registers devices on COM port 3 or 4, you need to read the BDA. Refer to the procedure "To view the BDA by using Debug."
CAUTION: Setting the port address by using Control Panel does not override a BDA value. What the BIOS reads replaces any entries you make by using Control Panel, if there is a discrepancy between the two. This procedure is not a substitute for writing a Debug script if your BIOS incorrectly registers COM addresses. To Register a Serial Device
For more information on COMxBase and other SYSTEM.INI file entries, refer to the SYSINI.WRI file in your Windows directory.
DEVICE CONTENTIONYou need to specify the device contention options for each MS-DOS- based communications application you are running under Windows.
To Set Device Contention Options
THIRD-PARTY DRIVERSThe Windows 3.1 Setup program updates many drivers that were included in Windows 3.0. Setup cannot update third-party drivers, however. You should obtain updates from the manufacturer for any third-party drivers that you are using under Windows 3.1.
To Check for Third-Party Communications Drivers
To use third-party drivers that have not been updated, you need to add the following line to the [386Enh] section of your SYSTEM.INI file:
COMMdrv30=TRUEOnce you obtain an update for your third-party driver, you can remove this entry from your SYSTEM.INI file.
TROUBLESHOOTING COMMUNICATIONS PORT PROBLEMS ============================================This section can help you to identify what is causing a problem and then point you to the appropriate section in this Application Note for an explanation of how to resolve the problem.
COMMUNICATIONS APPLICATION CANNOT ACCESS A SERIAL PORTAre you using MS-DOS-based communications software? Refer to the "MS- DOS-Based Communications Software and Windows 3.1" section in this Application Note. Related procedure: "To set device contention options" Is the serial device using an available IRQ? Refer to the "Resolving IRQ Conflicts" section in this Application Note. Related procedures: "To use MSD to determine available IRQs" "To reassign the IRQ from Control Panel"
PC LOCKS UP WHEN ACCESSING SERIAL PORTIs the serial device using a unique IRQ? Refer to the "Resolving IRQ Conflicts" section in this Application Note. Related procedures: "To use MSD to determine available IRQs" "To reassign the IRQ from Control Panel" Is the serial device on COM4? Refer to the "Serial Devices on COM3 and COM4 Do Not Register" section. Related procedure: "To register a serial device"
ERROR MESSAGES
"The COM Port is Currently Assigned to a DOS Application..."If you receive this error message, refer to the procedure "To write a Debug script."
MODEM PROBLEMSDoes your system BIOS recognize your internal modem? Refer to the "Address Packing and MS-DOS-Based Applications" section for information about reading the BDA. Related Procedures "To view the BDA by using Debug" "To interpret the BDA COM address entries" "To register a serial device" Do you have a modem on COM3 and a mouse on COM1, or a modem on COM4 and a mouse on COM2? Unless your machine or serial I/O card supports IRQ sharing, this configuration is not recommended. Refer to the "Resolving IRQ Conflicts" section in this Application Note. Related Procedure: "To reassign the IRQ from Control Panel" Do you have an internal modem and a serial I/O card? Have you observed any of the following symptoms:
The modem dials and rings but does not connect. The system reboots when the modem attempts to dial out. The system reboots when the modem should have connected. The cursor does not work in Window Terminal.If your internal modem uses a COM port that is addressed by your serial I/O card, you may experience IRQ conflicts. To correct this problem, disable the COM port setting on the serial I/O card. For example, if your internal modem is set to use COM2, and you have a serial I/O card that recognizes COM2, you may need to disable COM2 on the serial I/O card for the modem to work correctly.
MOUSE PROBLEMS
General GuidelinesThe mouse uses a different driver for MS-DOS-based applications than it does for Windows-based applications. In general, all mouse drivers should come from the same vendor. For example, do not use a Microsoft driver as the Windows mouse driver and a third-party driver as the MS- DOS mouse driver. Do not install a modem on COM3 if you have a mouse on COM1, or a modem on COM4 if you have a mouse on COM2, unless your machine or serial I/O card supports IRQ sharing. Refer to the "Resolving IRQ Conflicts" section in this Application Note.
Mouse Doesn't Work in Enhanced ModeIf your PC has no COM1 or if you have disabled COM1 and you have a mouse installed on COM2, you may experience problems using the mouse in 386 enhanced mode. Refer to the "BIOS Data Area and Address Packing" section in this Application Note.
Logitech(TM) MouseThe Logitech virtual mouse driver (LVMD.386) is hard coded for the standard base port addresses and IRQs. If you use the Logitech mouse with a nondefault port address or IRQ, it may fail to work in 386 enhanced mode.
100%-Microsoft-Compatible MouseAny "100% Microsoft compatible" mouse that you purchase from your dealer is not interchangeable with the Microsoft mouse. If your 100%- Microsoft-compatible mouse comes with a driver disk that contains both Windows and MS-DOS mouse drivers, install these in place of the Microsoft mouse drivers. Installing such drivers places a new setting in the Mouse section of Windows Setup. After you install a 100%- Microsoft-compatible mouse, use Windows Setup to select your mouse type.
Microsoft MouseIf you are using the Microsoft Mouse with Windows 3.1, make sure each of the following is true:
At the MS-DOS command line from the MS-DOS mouse directory (usually, MSMOUSE), type:
mouse /?To see what Windows mouse driver you are using >From the Main group, choose the Windows Setup icon. The mouse type should be "Microsoft, or IBM PS/2." To change your Windows mouse driver
using.4. Choose the OK button to close the dialog box.
COM4 PROBLEMSIf your communications software doesn't recognize a serial device on COM port 3 or 4, you may have a system BIOS that was manufactured before those COM ports became standard. Refer to the "Serial Devices on COM3 and COM4 Do Not Register" section earlier in this application note. The COM4 default address of 02E8 conflicts with some peripheral devices, including the 8514/A, Ultra (ATI), and S3 (Orchid Fahrenheit 1280 STB WIND/X, Diamond Stealth VRAM) display adapters, and certain network adapters. Do not readdress COM4 in this situation. Contact your hardware manufacturer for information about how to reset the adapter's default address.
PROBLEMS RUNNING WINDOWS IN 386 ENHANCED MODEProblems of this type may be related to a number of causes, including outdated driver files or IRQ conflicts. You can try the troubleshooting steps outlined below if you experience any of the following problems when trying to run Windows in 386 enhanced mode:
-Windows stops running or returns to the MS-DOS prompt -General protection (GP) fault -Windows defaults to standard modeIf the steps outlined below do not help, then the problem is probably not caused by a serial communications conflict. Refer to the Windows Resource Kit for more information about problems running Windows in 386 enhanced mode.
To Check for Outdated Driver FilesBefore starting Windows from the MS-DOS prompt, change to the Windows directory, and then start Windows. If Windows runs in 386 enhanced mode only when you start it from the Windows directory, you may have an outdated driver file in some other directory. When Windows starts, it looks for the files it needs in the following order:
The current directory The Windows directory The Windows SYSTEM subdirectory All the directories listed in the PATH statement in the AUTOEXEC.BAT file All the directories in a network pathIf you suspect that you have outdated driver files, you need to delete them from your system.
To Delete Outdated Driver Files
To Identify an IRQ Conflict
TO OBTAIN THIS APPLICATION NOTE
You can find WW0654.EXE (size: 27688 bytes) , a self-extracting file, on the followingservices:
ARTICLE-ID: Q119591 TITLE : How to Obtain Microsoft Support Files from Online Services
|
KBCategory: kbfile kbdisplay kbappnote
© 1998 Microsoft Corporation. All rights reserved. Terms of Use. |