/***********************************************\
*                                               *
*          CDx Audio Access Sample Code         *
*                                               *
*  Plays between two specified points, both     *
*  given in MSF (Minute/Second/Frame) format    *
*                                               *
*  This version uses the cdx.device (v1.7+)     *
\***********************************************/

#include <exec/types.h>
#include <exec/io.h>
#include <CDx.h>

int   PlayMSF(ULONG,ULONG);

extern   struct   IOStdReq       *Req;

main(argc,argv)
int   argc;
char **argv;
{
   ULONG startMSF,endMSF;
   int   min1,sec1,frm1,min2,sec2,frm2,error,drive;

   ParseParams("CDplay [DRIVE n] <start Min> <Sec> <Frm> <end Min> <Sec> <Frm>",
      argc,argv,&drive,6,&min1,&sec1,&frm1,&min2,&sec2,&frm2);

   startMSF = (min1<<16)+(sec1<<8)+(frm1);
   endMSF = (min2<<16)+(sec2<<8)+(frm2);

   if (OpenCDx(drive))
      Cleanup("Drive not found",0);

   error = PlayMSF(startMSF,endMSF);

   if (!error)
      printf("Playing...\n");

   Cleanup(0,error);
}


int PlayMSF(start,end)
ULONG start,end;
{
   Req->io_Command = CD_PLAYSEGMSF;
   Req->io_Offset = start;
   Req->io_Length = end;
   DoIO((struct IORequest *)Req);

   return((int)Req->io_Error);
}
