
  FIXED IDE HARD DRIVE AND REMOVABLE MEDIA SUPPORT

  June  12, 2003

  OS/2 Device Driver Development
  IBM Solution Technologies
  Austin, TX

  (c) Copyright International Business Machines Corporation, 2001, 2003.
  All rights Reserved.

  CONTENTS
  ________

  1.0  INTRODUCTION

  2.0  INSTALLATION
  2.1  Updating the Installation Diskettes
  2.2  Updating a Previously Installed Warp System

  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  Additional Parameters for IBMATAPI.FLT and IBMIDECD.FLT drivers
  3.10 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)
    4.2.1  Limitations of LS-120 Support
  4.3 CD-ROM Device Manager (OS2CDROM.DMD)
  4.4 CD-RW media support in IBMIDECD.FLT

  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

  6.0  COPYRIGHT AND TRADEMARK INFORMATION

  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.

  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.

  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.

  /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.

  /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.6 for additional information about Chipset Extended
                Detection Algorithm.



  3.9  ADDITIONAL PARAMETERS FOR IBMATAPI.FLT AND IBMIDECD.FLT DRIVERS
  ____________________________________________________________________

  PARAMETER      FUNCTION

  /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.


  3.10  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 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

      -   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)
  __________________________________________

  The LS-120 drive supports 120-MB diskettes and is compatible with 3.5 inch
  1.44-MB standard diskettes, with improved performance.

  4.2.1  LIMITATIONS OF LS-120 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

  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
  ________________________________________

  IBMIDECD.FLT now supports IDE CD-Writers for reading and writing.


  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 |
  |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.
  

  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.
  
