#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <dos.h>
#include <memory.h>
#include "cd_play.h"
#include "cd_time.h"

static unsigned char    data[300],sdat[6];
int                     i,st;
unsigned char           ed=0,stp=0,rep=0,hlp=0,dt=0;
char                    rt;
long                    fl;

void main(int argc,char *argv[])
{

	cd_vol_on();
	cd_vol(63);
	for(i=1;i<=argc;i++){
	  if((argv[i][1]=='e')||(argv[i][1]=='E')) ed=1;
	  if((argv[i][1]=='s')||(argv[i][1]=='S')) stp=1;
	  if((argv[i][1]=='r')||(argv[i][1]=='R')) rep=1;
	  if(argv[i][1]=='?') hlp=1;
	  }

	if(hlp==1){
	  printf("*****************************************\n");
	  printf("**  ＣＤ演奏開始プログラム  by N.Baba  **\n");
	  printf("*****************************************\n");
	  printf("CDSTART <option>\n");
	  printf("  <option> /e 音楽演奏終了しまーす\n");
	  printf("           /s 音楽演奏ストップさせてから演奏開始しなおすよー\n");
	  printf("           /r リピートモードで演奏するよー\n");
	  printf("           /? へるぷだよー\n");
	  printf("  複数指定オッケー！！\n\n");
	  exit(0);
	  }
	if(ed==1){
	  /*  音楽演奏ストップ  */
	  printf("音楽演奏終了しまーす...\n");
	  cd_stop();
	  exit(0);
	  }
	if(stp==1){
	  /*  音楽演奏ストップ  */
	  printf("音楽演奏ストップさせてから演奏開始しなおすよー...\n");
	  cd_stop();
	  }
/*  ＣＤ情報の読み取り  */
	rt=toc_read(data);
	if(rt==0x2){
	  printf("デバイス番号エラーが出ちゃったよー...\n");
	  exit(0);
	  }
	if(rt==0x10){
	  printf("演奏中だよー...\n");
	  exit(0);
	  }
	if(rt==0x80){
	  printf("ハードエラーが出ちゃったよー...\n");
	  exit(0);
	  }

/*  ＣＤ演奏スタート  */
	if((data[0]&1)==0){
	  rt=toc_read(data);
	  }
	if((data[0]&1)==0){
	  printf("オーディオデータが見つからないよー...\n");
	  exit(0);
	  }
	if((data[0]&2)!=0){
	  dt=1;
	  printf("データトラックが有るなー...\n");
	  }
	if(dt==1){
	  for(i=0;i<(int)(data[2]);i++){
	    if((data[6+i*3]&0x80)==0) break;
	    }
	  st=i;
	  }

	memcpy(sdat,data+6+st*3,3);
	msf2f(data[3],data[4],data[5],&fl);
	fl--;
	f2msf(fl,&sdat[3],&sdat[4],&sdat[5]);

	cd_play(sdat,rep,0);
	if(rep==1) printf("リピートモードで演奏するよー...\n");
	printf("%dトラックから演奏を開始しまーす...\n",st+1);
	printf("  開始時間 %2dm %2ds %2df \n",sdat[0],sdat[1],sdat[2]);
	printf("  終了時間 %2dm %2ds %2df \n",sdat[3],sdat[4],sdat[5]);
}
