
ABOUT FDCDTEST
==============



PRODUCT DESCRIPTION
-------------------

The CD-ROM test utility was designed to test the integrity of the Future 
Domain CD-ROM Device Driver and CD-ROM drives.  Users and Developers will 
now be able to test all the functions supported by the CD-ROM Driver for 
problems related to the CD-ROM Driver or the CD-ROM drive itself.

This utility is also used in the Future Domain Quality Assurance Test 
Procedure for each drive supported by the Future Domain CD-ROM Driver.  
This is performed to ensure that every available function is operational 
for use with the CD-ROM applications on the market as well as future CD-ROM 
applications.  FDCD test is written to the Microsoft CD-ROM Extensions.  
For a complete description of all the functions supported by the Microsoft 
CD-ROM Extensions, you may contact Microsoft Corporation for a copy.



TO START FDCDTEST
-----------------

To run the FDCDTEST program change directory to where the FDCDTEST.COM file 
is and at the DOS prompt type the following:
        
        fdcdtest <Enter>
   
The program locates all CD-ROM drives within the system attached to the 
Future Domain SCSI Controller(s) and prompts for a drive selection.
You need to select a CD-ROM drive to test.

The Main menu is then displayed.

FDCDTEST will abort if the following conditions occur:

  The CD-ROM Extensions are not installed.
  No CD-ROM drives found attached to the Future Domain SCSI Controller.

There are three Function Menus available. These are:

   Main Menu
   IOCTL Input Menu
   IOCTL Output Menu

To minimize the screen output, the menus are displayed only once.  You may 
press the ? key to re-display a menu.



FUNCTION MENUS
--------------


Main Menu
---------

This menu is displayed upon startup of the program.  Pressing the <Enter> 
key from this menu will cause the program to terminate.

Following are the descriptions of the options available from the Main menu.

0 - IOCTL INPUT

Choose this option to select an IOCTL Input option from the IOCTL Input Menu.

1 - INPUT FLUSH

Clears all input buffers and pending requests in the Device Driver.

2 - IOCTL OUTPUT

Choose this option to select an IOCTL Output option from the IOCTL Output 
Menu.

3 - DEVICE OPEN

Used by the Dvice Driver to determine the number of callers that are 
currently using the CD-ROM Device Driver.

4 - DEVICE CLOSE

Used by the Device Driver to determine the number of callers that are 
currently using the CD-ROM Device Driver.

5 - READ LONG

A SCSI Read command is issued to the CD-ROM drive with the option of 
specifying the Addressing Mode and the Data Read Mode.

    Addressing        0 - High Sierra Mode
    Modes:
                      1 - Red Book mode

    Date Read         0 - Cooked mode : usually the
    Modes:                default mode for EDC/ECC
                          checking which returns a block
                          size of 2048 bytes.
                      1 - Raw mode - for no EDC/ECC
                          checking, this option returns all
                          2352 bytes which includes the
                          EDC/ECC data.

6 - READ LONG PREFETCH

Same as READ LONG but no data is transferred.

7 - SEEK

A SCSI Seek command is issued to the CD-ROM drive with the option of 
specifying the Addressing Mode.

    Addressing        0 - High Sierra mode
    Modes:
                      1 - Red Book mode

8 - PLAY AUDIO

This function is used to play a selected track on an audio disc.

    Track Number:        Any valid track on an audio disc.
    Play to end of disc: This gives you the option to either play to
                         the end of the disc or just the specified
                         track.

9 - STOP AUDIO

This function is used to pause or stop a CD-ROM drive while in Play mode.  
Selecting this option once will put the drive in Pause mode and selecting 
this option twice consecutively will put the drive in the Stop mode.

A - RESUME AUDIO

This function is used to restart Play mode on a CD-ROM drive currently in 
Pause mode.  A "General Failure" error status will occur if the drive is 
in Stop mode.

B - DISPLAY DEVICE STATUS

The Device status is a 2-byte value which is returned by the device driver 
to indicate the command request has successfully been completed.  This 
function displays Bit 8 and 9 of this status which corresponds to the Done 
and Busy bit.


IOCTL Input Menu
----------------

The IOCTL Input menu is displayed by selecting option 0 from the Main menu.  
Press the <Enter> key to return to the Main menu.  The following section 
describes the options available from the IOCTL Input menu.

0 - RETURN DRIVER ADDRESS

A 4-byte address is displayed indicating where in the system memory the 
CD-ROM driver is located.

1 - LOCATION OF HEAD

Displays the current location of th drive head in High Sierra and Red Book 
format.

2 - AUDIO CHANNEL INFO

Use to display the current Audio Channel control settings. These settings 
may be changed using the Audio Channel Control IOCTL Output function.

There are a total of 4 input and output channels that may be supported by 
a CD-ROM drive.  Valid channels are 0 to 3 which represent the following:

   Channel 0:            Front left
   Channel 1:            Front right
   Channel 2:            Rear left
   Channel 3:            Rear right
   Input Channel:        This is the actual channel that is read
                         from an Audio track on a disc.
   Output Channel:       This is the channel that comes from
                         the drive's amplifier to power the
                         speakers.
   Volume Control:       A value from 0 to 255 indicating the
                         volume setting on the specified
                         channel.  A volume control of 0
                         indicates Mute mode and a volume
                         control of 255 indicats Full volume.

3 - DEVICE STATUS

The device status is maintained by the CD-ROM driver to provide a general 
description of the options currently set and available on the CD-ROM drive. 
The device status is maDe up of 32 bits which are defined as follows:

   Bit 0:     0 -  Door closed
              1 -  Door open
   Bit 1:     0 -  Door locked
              1 -  Door unlocked
   Bit 2:     0 -  Supports only cooked reading
              1 -  Supports cooked and raw reading
   Bit 3:     0 -  Read only
              1 -  Read/write
   Bit 4:     0 -  Data read only
              1 -  Data read and plays audio/video tracks
   Bit 5:     0 -  No interleaving
              1 -  Supports ISO-9660 interleaving
                   Using interleave size and skip factor
   Bit 6:     0 -  Reserved
   Bit 7:     0 -  No prefetching
              1 -  Supports prefetching requests
   Bit 8:     0 -  No audio channel manipulation
              1 -  Supports audio channel manipulation
   Bit 9:     0 -  Supports HSG addressing mode
              1 -  Supports HSG and red book addressing modes
   Bit 10:    0 -  Reserved
   Bit 11:    0 -  Disc is present in drive
              1 -  No disc is present in drive
   Bit 12:    0 -  Does not support R-W sub-channels
              1 -  Supports R-W sub-channels
   Bit 13-31: 0 -  Reserved

4 - RETURN SECTOR SIZE

The driver will return a cooked sector size of 2048 bytes and a raw sector 
size of 2352.

5 - RETURN VOLUME SIZE

This function returns the lead-out track which corresponds to the total 
number of blocks on the disc.  The displayed address is in High Sierra 
format.

6 - MEDIA CHANGED

This function is used to determine the current media state of the drive.  
The returned values are defined as follows:

   1  media not changed

   0  don't know if changed

  -1  media changed

7 - AUDIO DISC INFO

Displays the first and last track of an audio disc.  The lead-out address 
is also displayed in Red Book format.

8 - AUDIO TRACK INFO

Displays the starting Red Book address for each track found on the disc.

9 - AUDIO Q-CHANNEL INFO

This function returns the current track number and the running time within 
the track and disc in Red Book format.

A - UPC CODE

Use this option to get the UPC/EAN (Universal Product Code) from the disc.  
Most discs do not contain this code and will cause the driver to return a 
"Sector not Found" message.  Also, if the CD-ROM drive does not support 
this function, an "Unknown Command" message will be returned by the driver.

B - AUDIO STATUS INFO

After selecting an audio track to play, this function will display the 
starting and ending addresses specified by the play request. Will also 
display the Pause status of drive.


IOCTL Output Menu
-----------------

The IOCTL Output menu is displayed by selection Option 2 from the Main menu.  Press the Enter key to return to the Main
menu.  The following section describes the options available from the IOCTL 
Output menu.

0 - EJECT DISC

Use this function to eject a disc from the CD-ROM drive.  If the drive door 
is locked, the driver will unlock the door before ejecting.

1 - LOCK DOOR

This function will lock the door on a CD-ROM drive.

2 - UNLOCK DOOR

This function will cause the drive to unkock the door if previously locked.

3 - RESET DRIVE

Use this function to reset and reinitialize the drive.

4 - AUDIO CHANNEL CONTROL

This function displays the current Audio Channel control settings and 
prompts for an Input and Output channel and a Volume control setting for 
the specified channel.  See "IOCTL Input Audio Channel Info" option for 
additional information.

5 - CLOSE TRAY

This function will close the tray on a CD-ROM drive that employs a tray 
mechanism.



ERROR MESSAGES
--------------

The CD-ROM driver returns a Status code for every command request that is 
completed.  This code is used to indicate whether the command request was 
completed successfully or if an error occurred.  In the event of an error, 
the driver will set the Error bit (bit-15) in the status code and will 
place the error code in bits 0-7.

If an error occurs when using this utility, the program will automatically 
convert the error code to one of the following error messages.

Error Code:   Error Messages:

  0           Write protect violation
  1           Unknown unit
  2           Drive not ready
  3           Unknown command
  4           CRC error
  5           Bad drive request structure length
  6           Seek error
  7           Unknown media
  8           Sector not found
  9           Printer out of paper
  10          Write fault
  11          Read fault
  12          General failure
  13          Reserved
  14          Reserved
  15          Invalid disc change



COMMAND CODE TABLE
------------------

The following table shows the menu selection codes as corresponding to the 
Microsoft CD-ROM Extensions command codes.  The numbers in brackets are the 
IOCTL command sub-codes.

  FDCDTEST Menu
  Selection Codes      CD-ROM Extensions Codes

  0-[0]    3-[0]       ADDRESS OF DEVICE DRIVER
  0-[1]    3-[1]       LOCATION OF HEAD
  0-[2]    3-[4]       AUDIO CHANNEL INFO
  0-[3]    3-[6]       DEVICE STATUS
  0-[4]    3-[7]       RETURN SECTOR SIZE
  0-[5]    3-[8]       RETURN VOLUME SIZE
  0-[6]    3-[9]       MEDIA CHANGED
  0-[7]    3-[10]      AUDIO DISC INFO
  0-[8]    3-[11]      AUDIO TRACK INFO
  0-[9]    3-[12]      AUDIO O-CHANNEL INFO
  0-[A]    3-[14]      UPC CODE
  0-[B]    3-[15]      AUDIO STATUS INFO
  1        7           INPUT FLUSH
  2-[0]    12-[0]      EJECT DISC
  2-[1]    12-[1]      LOCK DOOR
  2-[2]    12-[1]      UNLOCK DOOR
  2-[3]    12-[2]      RESET DRIVE
  2-[4]    12-[3]      AUDIO CHANNEL CONTROL
  2-[5]    12-[5]      CLOSE TRAY
  3        13          DEVICE OPEN
  4        14          DEVICE CLOSE
  5        128         READ LONG
  6        130         READ LONG PREFETCH
  7        131         SEEK
  8        132         PLAY AUDIO
  9        133         STOP AUDIO
  A        136         RESUME AUDIO




