Microsoft KB Archive/105189

{|
 * width="100%"|

Contents of READTOC.DOC for Kodak Photo CD Compatibility

 * }

Q105189

-

The information in this article applies to:


 * Microsoft Windows NT Server version 3.1
 * Microsoft Windows NT Workstation version 3.1
 * Microsoft Windows NT Advanced Server, version 3.1

-

SUMMARY
In an effort to help facilitate the compatibility of a Kodak Multisession Photo CD with Windows NT and future Windows operating systems, this document will help outline the necessary details to enable this compatibility through the Read TOC command. If the drive's firmware does not or cannot implement the Read TOC Command in this way, a filter driver needs to be written to enable your CD-ROM drives to be multisession-capable.

For additional information on the Kodak Photo CD and Windows NT, query on the following words in the Microsoft Knowledge Base:

"kodak and windows and nt and support"

MORE INFORMATION
To identify the Photo CD TOC information, the most significant two bits of the control field of the CDB of the Read TOC Command has been assigned to identify this information. In order to maintain compatibility with ANSI SCSI-2 specification, the Format Field is assigned to 00b for SCSI-II compatible read TOC commands. For handling the Kodak Photo CD multisession, format 01b can be used. This will give the start address of the last session which is required when the driver calculates the offset to the file descriptor block of the last session. Format 10b is used to return all Q subcode data in the TOC area.

Please enable ALL of the Formats to ensure future compatibility. Mode 01 must report a data length of 0A for a multisession-capable drive. And Mode 00 must report a data length greater than 0A.

A mode 01 TOC command that returns a data length of greater than 0A will be considered incapable of reading multisession discs. The data length represents the length of the returned data not including the size of the data length field.

READ TOC Command (43h)

=
========================================================= Bit |   7   |   6   |   5   |   4   |   3   |   2   |   1   |   0   | Byte |      |       |       |       |       |       |       |       |

=
========================================================= 0  |                   Operation Code (43h)                        | -|---| 1  | Logical Unit Number   |       Reserved        |  MSF  | Rsvd  | -|---| 2  |                               Reserved                        | -|---| 3  |                               Reserved                        | -|---| 4  |                               Reserved                        | -|---| 5  |                               Reserved                        | -|---| 6  |                Starting Track/Session Number                  | -|---| 7  |   (MSB)                                                       | -|---                  Allocation Length                     ---| 8  |                                                       (LSB)   | -|---| 9  |   Format      |            Control Byte                       |

=
========================================================= The READ TOC command requests the target to transfer the table of contents (TOC) data to the initiator.

This command is modified from the SCSI-2 Read TOC command with the addition of the Format field and the Session Number field to support a multisession disc.

The following are definitions for the Format Field:

Format:

00b

Same definition as in SCSI-2. The start Track/Session Number field specifies the starting track number for which the data will be returned. For multisession Photo CD, this command will return the TOC data for all sessions.

01b

This format returns the first session number, last session number and the last session starting address. In this format, the Starting Track/Session Number field is reserved and should be set to 00h.

NOTE: This format provides the host to access the last session starting address quickly.

10b

This format returns all Q subcodes data in the lead in (TOC) area starting from a specified session number as specified in the Session Number field. In this mode, the drive will support Q Subcode Point field value of A0h, A1h, A2h, Track numbers, B0h, B1h, B2h, B3h, B4h, and C0h.

11b

Reserved.

The starting track field specifies the starting track number for which the TOC data will be returned. The data is returned in contiguous ascending order. Valid values for the starting track field are 0h to 63h. A value of AAh requests that the starting address of the lead out area be returned. If this value is zero, the table of contents data will begin with the first track on the disc.

If the track number field is not valid for he disc inserted, the command will be terminated with a CHECK CONDITION status. The sense key is set to ILLEGAL REQUEST. The additional sense code is set to ILLEGAL VALUE in CDB.

NOTE:

CD-I disc format does not have track descriptor for CD-I tracks. It has track descriptor for each CD-DA tracks.

For Format = 00b, the returned data of READ TOC Command is defined as follows.

TOC Data with Format Field = 00b

=
========================================================= 0 |    (MSB)                                                       | ---|--        TOC Data Length                ---| 1 |                                                        (LSB)   | ---|-| 2 |                      First Track Number                        | ---|-| 3 |                      Last Track Number                         |

=
=========================================================

TOC Track Descriptor(s)

=
========================================================= 0 |                      Reserved                                  | ---|-| 1 |           ADR              |               Control             | ---|-| 2 |                      Track Number                              | ---|-| 3 |                      Reserved                                  | ---|-| 4 |   (MSB)                                                        | ---|                  Absolute CD-ROM Address               | 7 |                                                       (LSB)    |

=
========================================================= The TOC data returned is a four-byte header followed by one or more TOC track descriptors. The last track descriptor is for the lead-out area. The format of the CD address is determined by the MSF bit in the CDB.

The TOC data length specifies the length in bytes of the available table of contents data. The value of TOC data length does not include TOC data length field itself.

The first track number field indicates the first track number in the table of contents.

The last track number field indicates the last track number in the table of contents before the lead-out track number.

Implementor's Note:

A disc may start at any track number greater than zero. The track numbers between the first track number and the last track number are in contiguous ascending order, except for the lead-out track which has a track number of AAh.

The ADR field is defined in the Read Q Sub-Channel command.

The control field indicates the attributes of the track. It is defined in the Read Q Sub-channel command.

The track number field indicates the track number for which the data in the TOC track descriptor is valid.

The absolute CD-ROM address contains the address of the first block with user information for that track number as read from the table of contents. An MSF bit of zero indicates that the absolute CD-ROM address field contains a logical block address. An MSF bit of one indicates the absolute CD-ROM address field contains an MSF address.

Implementor's Note:

The starting logical block address value recovered from the TOC has a tolerance of zero for data tracks and plus or minus 75 CD sectors for audio tracks. This tolerance is multiplied by a factor dependent on the logical block length.

For format = 01b, the returned data of READ TOC command is defined as follows:

TOC Data with Format Field = 01b

=
========================================================= 0 |   (MSB)                                                        | ---|-          TOC Data Length                   ---| 1 |                       (0Ah)                             (LSB)  | ---|-| 2 |                       First Session Number                     | ---|-| 3 |                       Last Session Number                      |

=
=========================================================

TOC Track Descriptor

=
========================================================= 0 |                       Reserved                                 | ---|-| 1 |            ADR              |             Control              | ---|-| 2 |              First Track Number in Last Session                | ---|-| 3 |                       Reserved                                 | ---|-| 4 |   (MSB)                                                        | ---|-             Absolute CD-ROM Address                ---| 7 |                  of First Track in Last Session         (LSB)  |

=
=========================================================

For Format - 10b, the returned data of READ TOC Command is defined as follows:

TOC Data with Format Field = 10b

=
========================================================= 0 |   (MSB)                                                         | ---|---             TOC Data Length             | 1 |                                                         (LSB)  | ---|-| 2 |                        First Session Number                    | ---|-| 3 |                        Last Session Number                     |

=
=========================================================

TOC Track Descriptor(s)

=
========================================================= 0 |                        Session Number                          | ---|-| 1 |          ADR                 |              Control            | ---|-| 2 |                        Byte 1 or TNO                           | ---|-| 3 |                        Byte 2 or Point                         | ---|-| 4 |                        Byte 3 or Min                           | ---|-| 5 |                        Byte 4 or Sec                           | ---|-| 6 |                        Byte 5 or Frame                         | ---|-| 7 |                        Byte 6 or Zero                          | ---|-| 8 |                        Byte 7 or Min                           | ---|-| 9 |                        Byte 8 or PSec                          | ---|-| 10|                        Byte 9 or PFrame                        |

=
========================================================= For Format field of 10b, the drive should return TOC data for Q- subcode modes (ADR field) 1 and 5 (except mode 5, point 1 through 40) in the lead in area.

The First Session Number is equal to the Last Session Number for single session discs.

The returned TOC data of a multisession disc is arranged in ascending order of the session number. The TOC data within a session is arranged in the order of Q Subcode Point field value of A0h, A1h, A2h, Track Numbers, B0h, B1h, B2h, B3h, B4h, and C0h.