IBM Enhanced IDE DASD and CDROM support (FREE) v. 4.x (1/7/2004) |
Readme/What's new |
FIXED IDE HARD DRIVE AND REMOVABLE MEDIA SUPPORT
September 16, 2003
OS/2 Device Driver Development
IBM Solution Technologies
Austin, TX
(c) Copyright International Business Machines Corporation, 2001, 2003.
All rights Reserved.
CONTENTS
________
0.0 PREREQUISITE SUPPORT
1.0 INTRODUCTION
2.0 INSTALLATION
2.1 Updating the Installation Diskettes
2.2 Updating a Previously Installed Warp System
2.3 Recommended parameters for IBM1S506.ADD
2.4 Recommended parameters for IBMATAPI.FLT and IBMIDECD.FLT
3.0 LARGE HARD DRIVE CONSIDERATIONS
3.1 System Hang or Hard Drive Hesitation
3.2 Cannot Mark a Partition Installable
3.3 IPE on Boot, "Trap D"
3.4 Inconsistencies in Total Disk Space
3.5 Application Install Fails with "Not Enough Space"
3.6 Performance Problems With Two Devices on a Single Channel
3.7 Install Diskettes or Utility Diskettes Hang on Boot (APAR JR12065)
3.8 Additional Parameters For IDE Device Driver
3.9 Very Large (128/137 Gb limit) Hard drive considerations (48 bit LBA)
4.0 REMOVABLE MEDIA SUPPORT
4.1 Partitioned Removable Media
4.1.1 Using Protected Media
4.1.2 Assignment of Drive Letters
4.1.3 Configuring Partition Support (OS2DASD)
4.1.4 Ejecting the media
4.1.5 Limitations of Partitioned Removable Media Support
4.2 Large Floppy Removable Media (LS-120 / LS-240)
4.2.1 Limitations of LS-120 / LS-240 Support
4.3 CD-ROM Device Manager (OS2CDROM.DMD)
4.4 CD-RW media support in IBMIDECD.FLT and IBMATAPI.FLT
4.5 Additional Parameters for IBMIDECD.FLT and IBMATAPI.FLT driver
5.0 SUPPORTED CHIPSETS, KNOWN RESTRICTIONS AND LIMITATIONS
5.1 Supported chipset table
5.2 Known restrictions and limitations
5.2.1 Intel chipsets limitations
5.2.2 VIA chipsets restrictions
5.2.3 SiS chipset limitation
5.3 Chipset Extended Detection Algorithm for Intel chipsets
5.4 Serial ATA for Intel chipsets considerations
6.0 COPYRIGHT AND TRADEMARK INFORMATION
0.0 PREREQUISITE SUPPORT
________________________
The Latest OS2 Loader package from DDPAK should be applied to your system
(or installation diskettes) prior to installing this IDEDASD package.
1.0 INTRODUCTION
_________________
FixPak 35 (FP35) for Warp 3 and FixPak 6 (FP6) for Warp 4 extended support
for fixed Enhanced IDE drives to sizes up to 8.4GB and added new caching HPFS
and FAT file system support for removable media drives such as SCSI Syquest
Syjet 1.5GB portable hard drive and the Iomega jaz 1GB and 2GB personal hard
drives.
This package contains updates to the support in FP35 and FP6,
extending support to fixed Enhanced IDE drives greater than 8.4GB,
fixing some problems, and adding additional documentation on
removable media support. Beginning with FP40 and FP10 OS/2 base
device drivers were separated into a Base Device Driver FixPak.
This package also contains extensions to OS2CDROM.DMD, providing support for
multi-session CDROM media.
The package also contains an updated floppy diskette driver (IBM1FLPY.ADD),
which corrects a failure that occurs upon a Resume on a ThinkPad when
the diskette drive is installed in the ThinkPad docking station.
Previously IDE CD-ROM (also CD-R, CD-RW, DVD) devices were handled by
IBMIDECD.FLT and all other ATAPI devices (like LS-120 and ZIP drives) were
handled by IBMATAPI.FLT. Now all ATAPI devices are handled by a single driver,
the IBMATAPI.FLT. For backward compatibility this package provides both
IBMIDECD.FLT and IBMATAPI.FLT drivers. In fact, they are the same driver and
if both drivers are in config.sys only the first one in config.sys will be
loaded. It is recommended to use only IBMATAPI.FLT driver entry and remove the
IBMIDECD.FLT entry from config.sys. If you do not remove the IBMIDECD.FLT entry
from the config.sys, the step in section 2.4 must also be performed on the
IBMIDECD.FLT entry.
For Warp Server Advanced HPFS386 support of removable media, you additionally
need LAN Server SelectPack IP_8508.
These fixpaks are available from http://ps.software.ibm.com/ under the link
"Downloads and News." Install the fixpaks first, carefully following the
instructions with the fixpaks; then follow the directions in this README to
install this package.
If you are attempting to install Warp 3 or Warp 4 for the first time on a
fixed hard drive greater than 4.3GB, then:
1. Follow the instruction on "Updating the Installation Diskettes" in this
README and use the new diskettes to install Warp.
2. Install FP35 for Warp 3 or FP6 for Warp 4.
3. Follow the instructions in this README to install this package.
2.0 INSTALLATION
_________________
2.1 UPDATING THE INSTALLATION DISKETTES
________________________________________
If you are attempting to install Warp on a hard drive greater than
4.3GB, or your are attempting to install Warp Server for e-business on
a hard drive greater than 30GB, then the Installation diskettes must
be updated.
1. Make a backup copy of your Diskette 1 (D1).
2. Copy the new versions of IBM1S506.ADD, and IBMIDECD.FLT
device driver files onto your D1 diskette.
3. If the installation diskettes are for Warp Server for e-business,
Warp Server for e-business Convenience Pak, or Warp 4 Convenience Pak,
copy the DASD32.DMD file to your D1 diskette and rename it to
OS2DASD.DMD. Otherwise copy the DASD16.DMD file to your D1
diskette and rename it to OS2DASD.DMD.
4. Add the statement SET COPYFROMFLOPPY=1 to the CONFIG.SYS on D1.
5. Save the changes.
6. Start the installation with the Installation Diskette.
7. When you are prompted for Diskette 1, use the diskette you modified.
8. Proceed with the installation.
9. If during the installation process or when restarting your system, you
lose connection to your hard disk or CDROM, make sure that the device
driver statements are in the CONFIG.SYS file and the new versions of the
IBM1S506.ADD, IBMIDECD.FLT and OS2DASD.DMD device drivers have been
copied to the \OS2\BOOT directory. Use the date of the files to distin-
guish the newer versions.
2.2 UPDATING A PREVIOUSLY INSTALLED WARP SYSTEM
________________________________________________
1. (Optional) Save the existing (old) level of drivers in your system.
a. Change Directory to the \os2\boot directory on your boot drive.
b. Rename the drivers (for example, where the boot drive is C:). The
IBMATAPI.FLT driver may not have been previously installed.
[C:\os2\boot] rename IBM1S506.ADD IBM1S506.ORG
[C:\os2\boot] rename IBM1FLPY.ADD IBM1FLPY.ORG
[C:\os2\boot] rename IBMIDECD.FLT IBMIDECD.ORG
[C:\os2\boot] rename IBMATAPI.FLT IBMATAPI.ORG
[C:\os2\boot] rename OS2CDROM.DMD OS2CDROM.ORG
[C:\os2\boot] rename OS2DASD.DMD OS2DASD.ORG
2. Open an OS/2 Window and enter the SYSLEVEL X: (where X: is your
boot drive). Look for the entry x:\OS2\INSTALL\SYSLEVEL.OS2 and
see which version of OS/2 you have installed; for example "Version
4.00" or "Version 4.50".
3. Device Driver Install
o (Warp 3, Warp Server) Open the Device Driver Install program
in the OS/2 System Folder/System Setup Folder.
o (Warp 4, Warp Server for e-business) Open the Device Driver
Install program in the OS/2 System/System Setup/Install-Remove
Folder.
3. Point the Device Driver Install file dialogue to the directory where you
have placed the new files in this package.
If your version of OS/2 is 4.00 or earlier, select the driver
named IBM IDE AND REMOVABLE MEDIA SUPPORT (V4.00).
If your version of OS/2 is 4.50 or later, select the driver
named IBM IDE AND REMOVABLE MEDIA SUPPORT (V4.50).
Click on INSTALL.
4. Reboot the system.
2.3 Recommended parameters for IBM1S506.ADD
_________________________________________
For normal functioning of Extended WarmSwap support IBM1S506.ADD must
be configured as follows:
1. Edit config.sys
2. Find the line with IBM1S506.ADD:
"BASEDEV=IBM1S506.ADD"
3. Add (if they aren't already there) the following parameters:
"BASEDEV=IBM1S506.ADD /A:n /U:m /ATAPI /FORCE"
where n is adapter number and m is unit number.
4. Save config.sys
5. Reboot
Examples:
"BASEDEV=IBM1S506.ADD /A:1 /U:0 /ATAPI /FORCE" enables swapping on
ThinkPad Ultrabay.
"BASEDEV=IBM1S506.ADD /A:2 /U:0 /ATAPI /FORCE" enables swapping on
DockingStation Ultrabay.
See section 3.8 for description of these parameters.
2.4 Recommended parameters for IBMATAPI.FLT and IBMIDECD.FLT
____________________________________________
For normal functioning of WarmSwap support IBMATAPI.FLT must
be configured as follows:
1. Edit config.sys
2. Delete line with IBMIDECD.FLT (see note below):
"BASEDEV=IBMIDECD.FLT"
3. Find the line with IBMATAPI.FLT:
"BASEDEV=IBMATAPI.FLT"
4. Add (if they aren't already there) the following parameters:
"BASEDEV=IBMATAPI.FLT /A:n /U:m /TYPES:CLZ"
where n is adapter number and m is unit number. Theymust be the
same as for IBM1S506.ADD (see sect. 2.3 for details)
5. Save config.sys
6. Reboot
Examples:
"BASEDEV=IBMATAPI.FLT /A:1 /U:0 /TYPES:CLZ" enables swapping of LS-120,
LS-240, ZIP, CD type devices in ThinkPad Ultrabay.
"BASEDEV=IBMATAPI.FLT /A:2 /U:0 /TYPES:CLZ" enables swapping of LS-120,
LS-240, ZIP, CD type devices in DockingStation Ultrabay.
See section 4.5 for description of these parameters.
Note: If you do not remove the IBMIDECD.FLT entry from config.sys,
then step 4 must also be performed on this entry.
3.0 LARGE HARD DRIVE CONSIDERATIONS
____________________________________
3.1 SYSTEM HANG OR HARD DRIVE HESITATION
_________________________________________
The problem is the IDE chip sets on certain planars indicate that they
support Bus mastering but actually have a defect that prevents it from
working correctly. The driver detects bus mastering support, enables
busmastering and attempts to use it. Some symptoms are:
o System will not boot with IBM1S506.ADD.
o CHKDSK command does not work properly.
o Hard drive stops or hesitates for minutes at a time.
This is a known problem with ThinkPad models 760E/ED/ELD/EL. However the
chip set can, and does, show up on planars of other manufacturers. To
correct:
1. Edit the CONFIG.SYS file on Diskette 1 or the boot drive.
2. Disable busmastering by adding the parameter /!BM to the driver; for
example:
BASEDEV=IBM1S506.ADD /A:0 /!BM /A:1 /!BM
3. Save the changes and reboot.
3.2 CANNOT MARK A PARTITION INSTALLABLE
________________________________________
There is a BIOS restriction that installable (startable) or bootable parti-
tions must be contained within the first 1024 logical cylinders of the disk.
This is true for both EIDE and SCSI hard disk drives. If FDISK fails to
allow a partition to be marked installable, the partition is either above
1024 cylinders or the partition spans the first 1024 logical cylinders of the
disk. Use FDISK to reduce the size of the startable or bootable partition by
sufficient MBytes. One way to calculate the correct partition size is to do
the following:
1. Edit your CONFIG.SYS and add the parameter /W or /V to the
BASEDEV=IBM1S506.ADD statement.
2. Save this change and reboot the system.
3. At initialization, record the far left hand column of numbers of the
geometry information under the OS2:log heading; for example, where
C=cylinder, H=head, and S=sector:
OS2:log
C 1027
H 63
S 128
4. Calculate the 1024 cylinder size in MBytes as ( H x S ) / 2. (round
down).
All bootable partitions must be contained within this size. In this
example the bootable partition must be contained in the first 4032
MBbytes of the disk and cannot exceed a single partition size of 4032
MBytes within this area. No bootable partition may extend beyond the
first 4032 MBytes.
5. Use FDISK to resize the partitions and reboot.
3.3 IPE ON BOOT, "TRAP D"
__________________________
If you experience a Trap D on boot when using the /FORCE parameter on
IBM1S506.ADD, and you have the NetFinity client installed, REMark out the
BASEDEV=NFDASD.FLT statement in CONFIG.SYS.
3.4 INCONSISTENCIES IN TOTAL DISK SPACE
________________________________________
This version of IBM1S506.ADD allows the detection and correct reporting of
some additional free space on certain drives. This "free space" is real and
now can be accessed, either by creating a new partition or using a program
such as PartitionMagic to add the free space to an existing partition. This
will not cause any corruption or inaccessibility to the data currently on the
disk.
3.5 APPLICATION INSTALL FAILS WITH "NOT ENOUGH SPACE"
______________________________________________________
FAT partitions under OS/2 are limited to a 2.1GB maximum size. HPFS parti-
tions are limited to a 64GB maximum size. However there is the magic number,
2,147,483,647 (2.1GB). This 2.1GB value is the maximum number that will fit
into a signed 32-bit integer. Some application software installation pro-
grams query OS/2 about the available remaining space on the partition and
save the result into a signed 32-bit integer. If more than 2.1GB is avail-
able there is an overflow, it appears no space is available, and the instal-
lation program refuses to continue. Two solutions are:
o Partition the remaining space into maximum 2GB partitions.
o Retain the large partition, but before trying to install software create
a large temporary file that reduces available space to less than 2.1GB.
After installation of the application delete the temporary file.
3.6 PERFORMANCE PROBLEMS WITH TWO DEVICES ON A SINGLE CHANNEL
______________________________________________________________
With certain planars, two devices attached to the same IDE channel will
exhibit performance problems when one device is a slow non-DMA device like a
CDROM or removable drive and the other device is a faster disk drive. To
alleviate this problem move the slow device to the other channel, where it is
the only device or is paired with a similar slow device.
If moving the device is not possible, then you can disable busmastering for
that channel, by specifying parameters on the driver IBM1S506.ADD in
CONFIG.SYS. For example, if you wanted to disable bus mastering for the sec-
ondary controller, you would add the parameters "/A:1 /!BM" to the
IBM1S506.ADD line in CONFIG.SYS.
3.7 INSTALL DISKETTES OR UTILITY DISKETTES HANG ON BOOT (APAR JR12065)
_______________________________________________________________________
Diskette 1 of the Install or Utility diskette sets may appear to hang on
boot, waiting for a removable media device to respond. To avoid:
1. Edit the CONFIG.SYS on Diskette 1 of the set
2. REMark out the basedev=ibmint13.i13 statement and save the file.
3. Reboot
3.8 ADDITIONAL PARAMETERS FOR IDE DEVICE DRIVER
________________________________________________
PARAMETER FUNCTION
/V Verbose Mode, displays controller status and drive geometry
information during OS/2 initialization.
/VL Same as /V but does not displays drive geometry. This para-
meter is added to avoid the message buffer overflow,
resulting in a "Lost message" message.
/V:x Verbose Mode, displays controller status and drive geometry
information only for selected adapter x. The x value can be
from 0 to 4. This parameter is added to avoid the message
buffer overflow, resulting in a "Lost message" message.
/W Verbose Mode, displays controller status and drive geometry
information during OS/2 initialization. Initialization stops
after displaying the information for each device, with a
"Press Enter to Continue" message. It is possible that the
message buffer will overflow, resulting in a "Lost message"
message. This parameter works correctly on Warp 3 with FP35
or later systems and on Warp 4 systems with FP6 or later.
/WL Same as /VL, only with pause. Initialization stops after
displaying the information for each device, with a "Press Enter
to Continue" message.
/W:x Same as /V:x, only with pause. Initialization stops after
displaying the information for each device, with a "Press Enter
to Continue" message.
/FORCE Forces the emulation of an IDE CDROM drive, even though one is
not present during OS/2 initialization. For example, the
statements
BASEDEV=IBM1S506.ADD /A:1 /U:0 /ATAPI /FORCE
BASEDEV=IBMIDECD.FLT
support inserting an internal CDROM drive into the Ultrabay of
a ThinkPad 755CD after suspend, even though the drive is not
present during initialization.
/UDMA:x If the system is Ultra DMA capable, this parameter may be used
to limit the highest UDMA mode for an adapter or device. The
limit is specidied by "x", the value can be from 0 to 5. If
the specified value is higher than the maximum UDMA capability
the parameter is ignored. For example, the statement
BASEDEV=IBM1S506.ADD /A:1 /U:0 /UDMA:2
limits Ultra DMA mode for secondary channel master device to
Ultra DMA mode 2.
/!UDMA This parameter is used to disable Ultra DMA modes of Bus
Mastering but leave BM DMA modes enabled. For example, the
statement
BASEDEV=IBM1S506.ADD /A:0 /U:1 /!UDMA
disables Ultra DMA mode for primary channel slave device.
/BM If the system is DMA capable, this parameter can be used to
enable or disable DMA for a specified device or adapter.
Example: "/A:1 /U:0 /BM" enables DMA for the Master device
attached to the secondary IDE channel. This can be useful to
enable DMA on ATAPI devices ( CD-ROM, LS120, ZIP, etc) that
are defaulted to run in PIO mode.
If a device is UDMA capable, using the "/BM" or "/UDMA"
parameter is recommended only if the IDE 80 pin flat cable is
connected (instead of the normal 40 pin flat cable).
See section 5 for details on various chipsets.
/!BM This parameter is used to disable Bus Mastering DMA for an
adapter or device. For example, the statement
"BASEDEV=IBM1S506.ADD /A:1 /!BM"
disables BM DMA for secondary IDE channel,
"BASEDEV=IBM1S506.ADD /A:0 /U:1 /!BM"
disables BM DMA for master device on primary IDE channel
/!BIGLBA Disables 48 bit LBA support for specified drive. Drive size
will be limited to 128 (137) Gb and legacy LBA 28 bit support
will be used. See section 3.10 for details. Examples:
"BASEDEV=IBM1S506.ADD /A:0 /U:0 /!BIGLBA"
disables 48 bit LBA support for master device on primary
IDE channel,
"BASEDEV=IBM1S506.ADD /A:1 /U:1 /!BIGLBA"
disables 48 bit LBA support for slave device on
secondary IDE channel.
/CDA Enables Chipset Extended Detection Algorithm for Intel
chipsets. Example:
BASEDEV=IBM1S506.ADD /CDA
Enables detection of newer Intel PCI IDE chipset as the latest
described in the supported chipset table in section 5.1. See
section 5.3 for additional information about Chipset Extended
Detection Algorithm.
3.9 Very Large (128/137 Gb limit) Hard drives considerations (48 bit LBA)
_____________________________________________________________________________
Legacy LBA (also know as 28 bit LBA) maximum drive size is limited to 137
GB (268,435,455 sectors by 512 bytes each). The 48 Bit LBA support was
introduced to break this barrier and provide support for hard disk with sizes
larger than 137 GB.
This version of the IBM1S506.ADD driver has the 48 bit LBA support and
the driver will automaticaly detect drives with the capability of 48 bit LBA.
This 48 bit LBA support will allow the use of hard disk drives with up up to
2 TB (Terabytes) (1 TB = 1024 GB) in size.
Currently the OS2DASD.DMD driver has a limitation of 502 GB in size for a
hard disk. Therefore the maximum physical hard disk size OS/2 will support
currently is 502 GB.
To maintain backward compatibility a new config.sys parameter,"/!BIGLBA",
is introduced. If "/!BIGLBA" is specify in config.sys, this parameter for the
specfic drive will disable 48 bit LBA support and will revert to legacy 28
bit LBA and usable drive size will be limited to 137 GB (268,435,455 sectors
by 512 bytes each). If the drive is partitioned when using this switch, then
it will be compatible when connected to a system without 48 bit LBA support.
See section 3.8 for the "/!BIGLBA" parameter syntax.
4.0 REMOVABLE MEDIA SUPPORT
____________________________
Removable media devices attach to the system by a variety of interfaces.
IDE Supported with the OS/2 supplied IBM1S506.ADD device driver.
EIDE Supported with the OS/2 supplied IBM1S506.ADD device driver.
ATAPI Supported with the OS/2 supplied IBMATAPI.FLT device driver.
ATA Supported with the OS/2 supplied IBM1S506.ADD device driver.
Iomega Zip ATA drives are supported only as single partition
media and be configured in ATA Compatibility Mode; that is,
the jumpers are:
Master Slave
■ ■
SCSI Small Computer System Interface. Supported with the OS/2
device driver for the SCSI controller to which the device is
attached. Many SCSI drivers are supplied with OS/2. If your
device is not recognized you must acquire the proper device
driver from the vendor. Consult
http://service.software.ibm.com/os2ddpak/html/diskands/index.htm.
To ensure correct operation with the Adaptec 1542 SCSI
adapter, partition sizes should always be less than 1GB.
PP Parallel Port attached devices are supported with vendor-
supplied drivers. The device driver must have an ".ADD"
extension for the media to be supported as partitioned remov-
able. For example, the Syquest Syjet Parallel drive is prop-
erly supported by the vendor-supplied EPST.ADD driver, the
Iomega Zip Parallel uses a vendor-supplied *.SYS driver and is
not supported by the partitioned removable support, and the
Syquest SparQ Parallel Iomega ZipPlus Parallel drives have no
OS/2 drivers at all.
USB Floppy and removable media devices (including CDROM, CD-RW devices)
are supported with the OS/2 supplied USBMSD.ADD device driver and
special CDROM class device driver USBCDROM.ADD.
Removable media devices are supported in one of two ways.
LARGE FLOPPY The LS-120 / LS-240 drive.
PARTITIONED All other magnetic removable media devices. This media
appears as a removable hard drive.
4.1 PARTITIONED REMOVABLE MEDIA
________________________________
Features of the partitioned removable media support are:
o Ability to partition removable media into multiple partitions
o Ability to format with either HPFS or FAT
o Ability to exploit caching performance
o Ability to use HPFS long file names
o Drag/drop capability through the Workplace drive icon
o Operating system protection to safely eject media through software eject
utility
o Assignment of drive letters to end of disk drive lettering chain to
prevent floating drive letters
o Ability to predetermine a fixed number of drive letters for multiple par-
titions for removable media
4.1.1 USING PROTECTED MEDIA
There are some restrictions on the use of these devices. These restrictions
deal with vendor-provided protection routines that either read/write or pass-
word protect the media.
You are unable to read or write HPFS formatted media that has been read,
write or password protected by a vendor supplied protection utility. For all
read and write protected media, remove the vendor protection prior to trying
to read or write to the media. For instance, if you do not remove the pro-
tection, you will get the following failures:
o If you issue a DIR command to write or password protected media, you will
receive a "Drive improperly stopped" error message.
o If you try to FORMAT a write or password protected media, you will
receive numerous error messages after a few minutes.
o If you try to use desktop operations like drag/drop folders/files, you
will receive numerous error messages.
Once the vendor supplied protection is removed, then these errors will no
longer occur.
4.1.2 ASSIGNMENT OF DRIVE LETTERS
New Algorithm: no filters assumed
Primary from fixed disk 1
Primary from fixed disk 2
Primary from fixed disk n
Extended from fixed disk 1
Extended from fixed disk 2
Extended from fixed disk n
Primary from removable disk 1
Extended(s) from removable disk 1
Primary from removable disk 2
Extended(s) from removable disk 2
Primary from removable disk n
Extended(s) from removable disk n
Lack of a primary partition (or Extended Partition only) is allowed. If no
media is present at boot, a single logical drive is reported. Note that some
drives, Syquest EZ135A for example, do NOT report correctly when no media is
present and will not be seen at all. If media with multiple partitions is
present at boot, then all partitions will be assigned drive letters.
4.1.3 CONFIGURING PARTITION SUPPORT (OS2DASD)
BASEDEV=OS2DASD.DMD [/LF] [/MP:(disk,count)[,(disk,count)]]
PARAMETER DESCRIPTION
/LF Forces all removable devices to be treated as Large Floppy
rather than partitioned media.
/MP Used to support allocating a predetermined number of
drive letters for a partitioned removable media device.
Note that this option only applies to partitioned
removable devices, and is ignored for any other device
type.
If the /MP parameter is used, then:
SUB-PARAMETER DESCRIPTION
DISK The integer disk number of the device, as reported by FDISK,
or the wildcard character * to specify all partitioned remov-
able devices.
COUNT The integer count of the number of partitions to reserve for
the device. If the wildcard character * is used, it specifies
a default number of drive letters to reserve for all parti-
tioned removable devices. Specifying a count for a particular
disk will override this default. Also, if there is media in
the device at boot time, and it has more partitions which are
eligible to receive drive letters than there are drive letters
reserved for the device through the /MP option, then the
number of drive letters reserved for the device will be
increased so that every eligible partition on the media will
have a drive letter.
If the /MP option is not used, the rules for determining the number of drive
letters reserved for a partitioned removable media device are as follows:
o If there is no media in the drive at boot time, or the media in the drive
has no valid partitions, then one drive letter is reserved for the
device.
o If there is media in the drive at boot time and the media has valid par-
titions which are eligible for drive letters, the number of drive
letters is equal to the number of eligible partitions on the media.
Media which is formatted in floppy mode is treated as a single partition
and allocated a single drive letter.
4.1.4 EJECTING THE MEDIA
OS/2 prevents the media from being ejected during data transfers or while
there are pending file transactions. The hardware manual eject button is
disabled during these times. The eject button will be enabled when the media
can be safely ejected.
There is a new OS/2 utility, EJECT.EXE, that provides a command line method
for ejecting the media. The Workplace Drive Icon now supports the software
eject option for these drives as well. For example, the command EJECT J:,
where J: is the logical drive letter of one of the partitions on the media
will cause the media to be ejected.
In order for this command to succeed there must be no open files on any of
the partitions on the media, nor any open search operations. Removable media
that is shared on a server cannot be ejected because of open file handles.
If it is necessary to remove the media without rebooting you may issue the
command CHKDSK J: /F, where J: is the logical drive letter of one of the par-
titions on the media. This will free the media and a subsequent EJECT J:
command will cause the media to be ejected.
4.1.5 LIMITATIONS OF PARTITIONED REMOVABLE MEDIA SUPPORT
o Applications that manipulate partitioned devices, such as file managers,
must be updated to test the fixed/removable flag in order to account for
partitioned removable devices. Such applications that have not been
updated treat the removable devices as fixed and the results are unpre-
dictable whenever media is not present.
o Due to the variability of hardware adapter support, installing to or
booting from partitioned removable media is not supported.
o Optical drive support is unchanged. Partitioned removable media and HPFS
do not support optical drives. You should continue to use OPTICAL.DMD
and OS2SCSI.DMD.
o The following devices were tested during the development of the Parti-
tioned Removable Media Support. Similar devices should operate cor-
rectly, as should other removable media devices that are made available
with a supporting ADD device driver.
- Iomega SCSI jaz 1GB and 2GB personal hard drives
- Iomega Zip ATA 100MB drives (supported only as single partition
media).
- Iomega Zip ATAPI 100 MB drives
- Iomega Zip ATAPI 250 MB drives
- Syquest SCSI Syjet 1.5GB portable hard drives
- Syquest IDE Syjet 1.5GB portable hard drives
- Syquest SparQ IDE portable hard drives
4.2 LARGE FLOPPY REMOVABLE MEDIA (LS-120 / LS-240)
___________________________________________________
The LS-120 drive supports 120-MB diskettes and is compatible with 3.5 inch
1.44-MB standard diskettes, with improved performance. The LS-240 drive
supports 240-BM diskettes, 120-MB diskettes and is also is compatible with
1.44-MB standard diskettes.
4.2.1 LIMITATIONS OF LS-120 / LS-240 SUPPORT
o If you have an LS-120 drive as drive B, then you must not format it from
an OS/2 windowed or full screen session where the current drive is drive
A or drive B. The current drive for an OS/2 windowed or full screen
session is given as part of the command prompt. For example, if the
command prompt in an OS/2 windowed or full screen session is [C:\], then
drive C is the current drive.
o If an LS-120 drive is installed in a ThinkPad docking station and a
CD-ROM or DVD drive is in the system UltraBay, you may get an error
message "A program in this session encountered a problem and cannot
continue." when a DOS window is opened. In this case edit the config.sys
file and move the statement BASEDEV=IBMIDECD.FLT so that it appears
before the statement BASEDEV=IBMATAPI.FLT in the file.
o The following devices were tested during the development of the Large
Floppy Removable Media Support. Similar devices should operate cor-
rectly.
- Imation LS-120
- SuperDisk LS-120
- SuperDisk LS-240
4.3 CD-ROM DEVICE MANAGER (OS2CDROM.DMD)
__________________________________________________
The CD-ROM Device Manager (OS2CDROM.DMD) has the following additional
features:
o support read/write blocks for CD-RW media,
o support USB CD-ROM, CD-RW, DVD-ROM, DVD-RAM devices,
o low level formatting for CD-RW and DVD-RAM media,
o new IOCtl functions added:
Format and Verify Disk (Cat: 8, Funct: 45h),
Execute SCSI-command (Cat: 80h, Funct: 7Ah),
Write sectors (Cat: 80h, Funct: 52h),
Write and verify sectors (Cat: 80h, Funct: 53h),
OS2CDROM Features (Cat: 82h, Funct: 63h),
Get CD-ROM Drives (Cat: 82h, Funct: 60h).
o some IOCtl functions modified:
Get Device Parameters (Cat: 8, Funct: 63h),
Read sectors (Cat: 80h, Funct: 72h).
Category: IOCTL_DISK (08h)
Function: DSK_FORMATVERIFY (45h)
Description: Format and Verify Disk
Parameter Packet format:
struct FmtVerify_param {
UCHAR Command; // Bit 7: 0 = start formatting, 1 = format status
};
Data Packet format:
struct FmtVerify_data {
UCHAR Status; // Percent of formatted volume, if supported such
// feature
// 0, if not supported
};
Returns:
02h - device not ready
03h - bad command (this IOCtl function is not supported)
13h - unsupported parameter
14h - device already in use
a3h - uncertain media
Compatibility problem:
If IOCtl function DSK_FORMATVERIFY (45h) is used in an earlier version of
OS2CDROM.DMD you get back return code 03h. It means this version of
OS2CDROM.DMD is not supported.
Category: IOCTL_CDROMDISK (80h)
Function: CDROMDISK_EXECMD (7Ah)
Description: Executes SCSI command
Parameter Packet format:
struct ExecCMD {
ULONG ID_code; // 'CD01'
USHORT data_length; // length of the Data Packet
USHORT cmd_length; // length of the Command Buffer
USHORT flags; // flags
UCHAR cmd_buffer[16]; // Command Buffer for SCSI command
};
flags:
#define EX_DIRECTION_IN 0x0001
#define EX_PLAYING_CHK 0x0002
EX_DIRECTION_IN 0, if transfer data to device,
1, if transfer data from device
EX_PLAYING_CHK 0, if don't check playing audio,
1, if device plays audio return error
Data Packet format:
Content of the Data Packet depends on the SCSI command. Length is defined by
data_length field in the Parameter Packet.
Returns:
02h - device not ready
03h - bad command (this IOCtl function is not supported)
13h - unsupported parameter
14h - device already in use
Compatibility problem:
If IOCtl function CDROMDISK_EXECMD (7Ah) is used in an earlier version of
OS2CDROM.DMD you get back return code 03h. It means this version of
OS2CDROM.DMD is not supported.
Category: IOCTL_CDROMDISK2 (82h)
Function: CDROMDISK2_FEATURES (63h)
Description: Returns features of the current DM version if applied to
"CD-ROM2$" device name.
Parameter Packet format:
None.
Data Packet format:
ULONG driver_status;
#define FEATURE_USB_SUPPORT 0x00000001L
#define FEATURE_CDRW_SUPPORT 0x00000002L
#define FEATURE_EXECMD_SUPPORT 0x00000004L
Returns:
03h - bad command (this IOCtl function is not supported)
Compatibility problem:
If IOCtl function CDROMDISK2_FEATURES (63h) is used in an earlier version of
OS2CDROM.DMD you get back return code 03h. It means this version of
OS2CDROM.DMD doesn't support this function.
Category: IOCTL_CDROMDISK2 (82h)
Function: CDROMDISK2_DRIVELETTERS (60h)
Description: Returns drive letters for CD-ROM devices if applied to
"CD-ROM2$" device name.
Parameter Packet format:
None.
Data Packet format:
struct DriveLetters {
USHORT DriveCount; // number of supported CD-ROM drives
USHORT DriveFirst; // letter of the first CD-ROM drive
};
Returns:
03h - bad command (this IOCtl function is not supported)
Compatibility problem:
This function didn't work correctly in previous versions of OS2CDROM.DMD.
Category: IOCTL_DISK (08h)
Function: DSK_GETDEVICEPARAMS (63h)
Description: Query device parameters
Parameter and data packet formats are standard but the values of 2 fields
of BIOSPARAMETERBLOCK depends on device and media type.
Media Descriptor contains information about media type:
MEDIA TYPE VALUE
CD-R 4
CD-ROM 5
DVD-ROM 6
DVD-RAM 7
CD-RW 8
DVD-R 9
DVD-RW 10
DVD+RW 11
DDCD-ROM 12
DDCD-R 13
DDCD-RW 14
DVD+R 15
If media allows writing but cannot be written at the moment (device cannot
write such media type or disk is write-protected) 128 is added to the value.
Device Type field contains information about device type. If device cannot
write on the disk inserted value 7 is returned. If device allows writing on
the disk inserted (DVD-RAM disk in the DVD-RAM device or CD-RW disk in the
CD-Writer) value 8 is returned.
Category: IOCTL_CDROMDISK (80h)
Function: CDROMDISK_READLONG (72h)
Description: Reads the specified sectors in the data buffer.
Parameter Packet format:
struct ReadLong_param {
ULONG ID_code; // 'CD01'
UCHAR address_mode; // Addressing format of start_sector:
// 00 - Logical Block format
// 01 - Minutes/Seconds/Frame format
USHORT transfer_count; // Numbers of sectors to read.
// Must not be 0
ULONG start_sector; // Starting sector number of the read
// operation
UCHAR reserved; // Reserved. Must be 0
UCHAR interleave_size; // Not used. Must be 0
UCHAR interleave_skip_factor; // Not used. Must be 0
};
Data Packet format:
struct ReadLong_data {
UCHAR sector_data[SECTOR_SIZE]; // Sector read from the disk
// SECTOR_SIZE is 2352 for CD disks
// and 2048 for DVD disks
};
The media type is detected by means of IOCtl function DSK_GETDEVICEPARAMS
(63h) of category IOCTL_DISK (08h) (see above).
For DVD disk (DVD-ROM, DVD-R, DVD+R, DVD-RAM, DVD-RW and DVD+RW) sector_data
contains user data (2048 bytes).
For CD disk (CD-ROM, CD-R, CD-RW, DDCD-ROM, DDCD-R, DDCD-RW) sector_data
consists of 2352 bytes. Contents of the sector depends on the mode of the
sector (byte 15 from the beginning of the sector_data or field data_mode of
the structure describing sector's contents (see below)).
Mode 0 is rarely used format as it is zero filled in the entire user data
area. Structure of the sector for Mode 0 is described by Mode_0_sector_data:
struct Mode_0_sector_data {
UCHAR sync_pattern[12]; // Data block sync pattern
UCHAR msf[3]; // Block MSF address
UCHAR data_mode; // Data mode = 0
UCHAR user_data[2336]; // User data (each byte is 0)
};
Mode 1 data is most prevalent in CD-ROM applications. Structure of the
sector for Mode 1 is described by Mode_1_sector_data:
struct Mode_1_sector_data {
UCHAR sync_pattern[12]; // Data block sync pattern
UCHAR msf[3]; // Block MSF address
UCHAR data_mode; // Data mode = 1
UCHAR user_data[2048]; // User data
UCHAR crc[4]; // CRC
UCHAR zero_fill[8]; // Zero bytes
UCHAR p_parity[172]; // P parity symbols
UCHAR q_parity[104]; // Q parity symbols
};
The Mode 2 form 1 format is regularly used in recorder applications and
Video CD. Structure of the sector for Mode 2 form 1 is described by
Mode_21_sector_data:
struct Mode_21_sector_data {
UCHAR sync_pattern[12]; // Data block sync pattern
UCHAR msf[3]; // Block MSF address
UCHAR data_mode; // Data mode = 2
UCHAR sub_header1[4]; // Sub-header, first copy
UCHAR sub_header2[4]; // Sub-header, second copy
UCHAR user_data[2048]; // User data
UCHAR crc[4]; // CRC
UCHAR p_parity[172]; // P parity symbols
UCHAR q_parity[104]; // Q parity symbols
};
The Mode 2 form 2 format is regularly used in recorder applications and
Video CD. Structure of the sector for Mode 2 form 2 is described by
Mode_22_sector_data:
struct Mode_22_sector_data {
UCHAR sync_pattern[12]; // Data block sync pattern
UCHAR msf[3]; // Block MSF address
UCHAR data_mode; // Data mode = 2
UCHAR sub_header1[4]; // Sub-header, first copy
UCHAR sub_header2[4]; // Sub-header, second copy
UCHAR user_data[2324]; // User data
UCHAR crc[4]; // Optional CRC
};
The difference between 2 forms of Mode 2 is defined by sub-header (Bit 5 of
the field sub_mode):
struct Mode_2_sub_header {
UCHAR file_number; // Identifies the file to which the block
// belongs
UCHAR channel_number; // Playback channel selection
UCHAR sub_mode; // Bit 7: End of file
// Bit 6: Real time block
// Bit 5: 0 = form 1, 1 = form 2
// Bit 4: Trigger block
// Bit 3: Data block
// Bit 2: Audio block
// Bit 1: Video block
// Bit 0: End of record
UCHAR code_info; // Coding information
};
Returns:
02h - device not ready
03h - bad command (this IOCtl function is not supported)
08h - sector not found
10h - uncertain media
13h - unsupported parameter
14h - device already in use
Category: IOCTL_CDROMDISK (80h)
Function: CDROMDISK_WRITELONG (52h)
Description: Writes the data buffer to the specified sectors.
Parameter Packet format:
struct WriteLong_param {
ULONG ID_code; // 'CD01'
UCHAR address_mode; // Addressing format of start_sector:
// 00 - Logical Block format
// 01 - Minutes/Seconds/Frame format
USHORT transfer_count; // Numbers of sectors to read.
// Must not be 0
ULONG start_sector; // Starting sector number of the read
// operation
UCHAR reserved; // Reserved. Must be 0
UCHAR interleave_size; // Not used. Must be 0
UCHAR interleave_skip_factor; // Not used. Must be 0
};
Data Packet format:
struct WriteLong_data {
UCHAR sector_data[2048]; // Sector to be written to the disk
};
Returns:
02h - device not ready
03h - bad command (this IOCtl function is not supported)
08h - sector not found
10h - uncertain media
13h - unsupported parameter
14h - device already in use
Category: IOCTL_CDROMDISK (80h)
Function: CDROMDISK_WRITEVLONG (53h)
Description: Writes the data buffer to the specified sectors and verifies.
Parameter Packet format:
struct WriteVLong_param {
ULONG ID_code; // 'CD01'
UCHAR address_mode; // Addressing format of start_sector:
// 00 - Logical Block format
// 01 - Minutes/Seconds/Frame format
USHORT transfer_count; // Numbers of sectors to read.
// Must not be 0
ULONG start_sector; // Starting sector number of the read
// operation
UCHAR reserved; // Reserved. Must be 0
UCHAR interleave_size; // Not used. Must be 0
UCHAR interleave_skip_factor; // Not used. Must be 0
};
Data Packet format:
struct WriteVLong_data {
UCHAR sector_data[2048]; // Sector to be written to the disk
};
Returns:
02h - device not ready
03h - bad command (this IOCtl function is not supported)
08h - sector not found
10h - uncertain media
13h - unsupported parameter
14h - device already in use
4.4 CD-RW MEDIA SUPPORT IN IBMIDECD.FLT and IBMATAPI.FLT
________________________________________
IBMIDECD.FLT and IBMATAPI.FLT now supports IDE CD-Writers for reading and writing.
4.5 ADDITIONAL PARAMETERS FOR IBMATAPI.FLT DRIVER
__________________________________________________
PARAMETER FUNCTION
/V Verbose Mode, displays filter status on detected and emulated
devices.
/A:n Specify adapter: 0=primary, 1=secondary, 2=DockingStation primary,
3=DockingStation secondary.
/I Ignore adapter n specified by /A:n. Example:
"/A:1 /I" secondary IDE channel will not be filtered.
/U:n Specify unit: 0=master, 1=slave.
/!U:n Specified unit will be ignored. Examples:
"/A:1 /!U:1" ignore (not claim) slave unit on secondary IDE channel.
"/A:2 /!U:0" ignore (not claim) DockingStation UltraBay.
/SCSI Export IDE device as SCSI device. Can be used to emulate SCSI
CD-RW device as IDE CD-RW device. Example:
"/A:1 /U:0 /SCSI" will report SCSI CD device attached as secondary
IDE channel master unit .
/TYPES:xxx Specify device types supported by WarmSwap. x can be C=CD (CD-ROM,
CD-R, CD-RW, DVD, etc), L=LS (LS-120, LS-240), Z=ZIP. Examples:
"/A:1 /U:0 /TYPES:CLZ" enable swapping between CD, LS and ZIP
"/A:1 /U:0 /TYPES:CZ" enable swapping only between CD and ZIP
If certain device is in the UltraBay during Boot it will be
enabled for swapping.
/C IBMATAPI.FLT and IBMIDECD.FLT have been modified so that they
no longer fill the request's Scatter/Gather (S/G) list with
0's for the commands without a data tranfer phase, even if the
particular command contains a valid S/G list. To avoid
possible unforseen compatibility problems with older drivers,
the /C parameter can be used to disables this new behavior.
5.0 SUPPORTED IDE CONTROLLERS, KNOWN RESTRICTIONS AND LIMITATIONS
_________________________________________________________________
5.1 Supported chipset table
___________________________
The OS/2 IDE Controller Adapter Device Driver (IBM1S506.ADD)
supports the following PCI IDE Controllers
---------------------------------------------------------------
|Controller| Controller Info | Highest | Comments |
| Name | | UDMA | |
---------------------------------------------------------------
|CMD640 | First CMD640 | - | |
|RZ1000 | First RZ1000 | - | |
|I82371FB | INTEL82371FB | - | |
|PIIX3 | Intel PIIX3 IDE | - | |
|ORION | INTEL_ORION | - | |
|PIIX4 | Intel PIIX4 IDE | ATA 33 | |
|I82801AA | Intel 82801AA IO HUB | ATA 66 |See sec. 5.2.1 |
|I82801AB | Intel 82801AB IO HUB | ATA 33 | |
|I82801BA | Intel 82801BA IO HUB | ATA 100 |See sec. 5.2.1 |
|I82801CA | Intel 82801CA IO HUB | ATA 100 |See sec. 5.2.1 |
|I82801DB | Intel 82801DB IO HUB | ATA 100 |See sec. 5.2.1 |
|I82801EB | Intel 82801EB IO HUB | SATA 150 |See sec. 5.4 |
|CMD646 | CMD 646 PCI to IDE | ATA 33 | |
|CMD648 | CMD 648 PCI to IDE | ATA 66 | |
|VIA586B | VIA 586B PCI to IDE | ATA 33 |See sec. 5.2.2 |
|VIA596B | VIA 596B PCI to IDE | ATA 66 |See sec. 5.2.2 |
|VIA686A | VIA 686A PCI to IDE | ATA 66 |See sec. 5.2.2 |
|SIS630 | SIS 630 PCI to IDE | ATA 66 |See sec. 5.2.3 |
---------------------------------------------------------------
5.2 Known restrictions and limitations
______________________________________
This section covers some restrictions and/or limitation for the IBM1S506.ADD
driver. These restrictions are mainly due to hardware problems.
DMA for ATAPI devices is disabled by default. The exception to this
is ATAPI devices on Intel I82801AA through I82801DB (ICH - ICH4)
chipsets.
DMA for the ATAPI device can be enabled by using the "/BM" parameter.
(To enable it see sec. 3.8) Example: "/A:1 /U:0 /BM" enables DMA for the
Master device attached to the secondary IDE channel.
If a device is UDMA capable, using "/BM" parameter is recommended only
if the IDE 80 pin flat ribbon cable is used (instead of standard 40 pin
flat cable).
5.2.1 Intel chipsets limitations
________________________________
-for the 82801AA, 82801BA and 82801BA Mobile chipsets where there
are 2 devices on a channel, the fastest UDMA mode will be limited
to UDMA 2.
-on some systems with 82801DB chipset, there is problem with proper 40 pin
cable detection if 2 devices (one master and one slave device) is attached
to it. If you use 40 pin cable on primary or secondary channel, please
specify the parameter "/UDMA:2" in CONFIG.SYS for that channel. Usage of
this parameter is described above (see sec. 3.8). Examples:
use "/A:0 /UDMA:2" if you have a 40 pin cable on the primary channel
use "/A:1 /UDMA:2" if you have a 40 pin cable on the secondary channel
use "/A:0 /UDMA:2 /A:1 /UDMA:2" if you have a 40 pin cable on both channels
-for 82801 series chipsets DMA is enabled for ATAPI devices by
default. It can be disabled using "/!BM" parameter (see sec. 3.8).
Example:
"/A:1 /U:1 /!BM" disables DMA for Slave device attached
to secondary IDE channel.
5.2.2 VIA chipsets restrictions
_______________________________
The IBM1S506.ADD driver has the following limitations for the VIA IDE
controllers listed above:
-all of the VIA chipsets have a problem with 80 pin cable detection.
To ensure proper operation, please check to see what kind of IDE
cables are used. If you have a 40 pin cable on the primary or
secondary channel, please specify the parameter "/UDMA:2" in
CONFIG.SYS for that channel. Usage of this parameter is described
above (see sec. 3.8). Examples:
use "/A:0 /UDMA:2" if you have a 40 pin cable on the primary channel
use "/A:1 /UDMA:2" if you have a 40 pin cable on the secondary channel
use "/A:0 /UDMA:2 /A:1 /UDMA:2" if you have a 40 pin cable on both channels
-any VIA chipset, which is not listed above, but has the same
PCI Device ID, will be detected as a VIA586B and UDMA performance mode will
be limited to UDMA 2 for any device that can operate above UDMA Mode 2.
5.2.3 SiS chipset limitations
_____________________________
For SiS IDE controllers listed above the following restrictions applies:
- If there is a UDMA device on the SiS Secondary channel and an 80 pin
ribbon cable is not detected, then the driver will limited the mode to
PIO for this channel.
- Some systems with SiS chipsets may be unable to boot from a FAT partition
if the Hard Drive capacity is larger than 32GB. In this case, you can
either boot from an HPFS partition or change your BIOS settings to disable
"Block mode" for this drive in the system's setup.
5.3. Chipset Extended Detection Algorithm for Intel chipsets
____________________________________________________________
The IBM1S506.ADD driver can automatically detect all PCI IDE chipsets
described in section 5.1 and enables the highest possible DMA/UDMA modes for
all drives. Because Intel's chipsets provide good backward compatibility it
is possible to detect a newer chipset and use it as the latest known one.
To use this feature, this support must be enabled by the user with a
config.sys parameter "/CDA". If this parameter is specified, then Extended
Detection Algorithm will be enabled and newer Intel chipset can be detected
as the latest chipset described in the supported chipset table (see section
5.1) and higher possible DMA/UDMA modes can be properly detected and enabled
for all drives attached to that chipset.
If a system hang or trap occurs when this parameter is used, then it should be
removed from config.sys and legacy detection mode should be used for that
chipset.
5.4. Serial ATA for Intel chipsets considerations
_________________________________________________
The IBM1S506.ADD driver automatically detects Intel Serial ATA and Parallel ATA
controllers described in section 5.1 and enables the highest possible DMA/UDMA
modes for all drives. For PATA devices (know also as standard IDE devices or
ATA devices) the maximum transfer rate for Intel IDE controllers is ATA100. For
SATA devices this is SATA150. For SATA devices parameters /UDMA:n and /!UDMA
(see section 3.8 for details) have no effect. SATA devices in DMA mode will
always operate in the maximum possible transfer rate.
6.0 COPYRIGHT AND TRADEMARK INFORMATION
________________________________________
The following terms are trademarks of International Business Machines
Corporation in the United States and/or other countries:
IBM
OS/2
ThinkPad
Ultrabay
Other company, product, and service names may be trademarks or service
marks of others.
THE INFORMATION PROVIDED IN THIS README IS PROVIDED "AS IS" WITHOUT
WARRANTY OF ANY KIND. IBM DISCLAIMS ALL WARRANTIES, WHETHER
EXPRESSED OR IMPLIED, INCLUDING WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE AND MERCHANTABILITY
WITH RESPECT TO THE INFORMATION IN THIS DOCUMENT. BY FURNISHING
THIS DOCUMENT, IBM GRANTS NO LICENSES TO ANY PATENTS OR COPYRIGHTS.
(C) Copyright IBM Corporation, 2001, 2003. All rights reserved.
U.S. Government Users Restricted Rights -- Use, duplication or
disclosure restricted by GSA ADP Schedule Contract with IBM Corp. |
Aggiungi un commento