Implementation Notes

If the XBIOS driver responds to the XBIOS Identify command but fails the XBIOS VxD Query Command, the FASTDISK driver should refuse to load. This provides backward compatibility with older XBIOS drivers in the field.

If the XBIOS driver returns a value other than 33h in the VxD_Data_Size field or something other than 0 or 63 as the VxD_Delta value, the FASTDISK driver should refuse to load. This provides forward compatibility should there be changes or enhancements to XBIOS.

When a drive contains a non-zero value in the VxD_Delta field, the following rules apply:

  1. The INT13 geometry for the drive is presented as a 2**n by 63 translation where total cylinders are always less than or equal to 1024 and the head value doubles as drive capacity increases up to a maximum of 1024 x 255 x 63 or 8.4Gb. The INT13 geometry is always obtainable by using INT13 Function 8. The INT41/46 vector for such a drive also contains these values but does not contain the "A0" translation signature because of the sector skewing described later.
  2. The drive is configured to operate using the VxD_Heads and VxD_SPT values. These values are obtained during the XBIOS startup process from words 3 and 6 of the IDE Identify data.
  3. For every I/O request, the driver must perform a CHS-to-CHS translation with a sector skew added as described below.
    INT13 CHS -> Logical Block Address -> +VxD_Delta -> Drive CHS -> TaskFile 
    

When a drive contains a non-zero value in the VxD_MBS field, the following rules apply:

  1. The drive has been configured with the Set Multiple Mode command to perform Read Multiple and Write Multiple at the blocking factor contained in the VxD_MBS field.
  2. The VxD_MBS_Flags bit descriptions are as follows:
    X_SUPPORT_MULTIPLE
    

    This bit is set if the drive supports Multiple Mode. This bit can be set even if the VxD_MBS field is zero. This bit is always set if VxD_MBS is non-zero.

    X_READ_MULT_OFF
    

    This bit is set if the drive has been set to Multiple Mode but should not issue Read Multiple commands. Some drives perform poorly under Read Multiple.

    X_WRITE_MULT_OFF
    

    This bit is set if the drive has been set to Multiple Mode but should not issue Write Multiple commands. Some drives perform poorly under Write Multiple.

  3. It has been our experience that single sector requests should never use the Read Multiple and Write Multiple commands. Most drives have a performance degradation in this case.
  4. If the driver performs a soft reset, the drive should be sent a Set Multiple Mode command. XBIOS already does this on INT13 Function 00 and 0D. This is needed because some drives do not retain their blocking factor through a soft reset.

The VxD_Base_Port and VxD_IRQ_Channel deal with XBIOS's secondary controller support. If the FASTDISK driver does not support secondary controllers, simply make sure that it does not register any of these drives.