/******************************************************************************
**
**		CD 関係のプログラム用時間ルーチン
**
**		Programmed by Y.HIRATA Nifty-ID (NAB03321)
**
******************************************************************************/

#include "cdtime.h"

/**************************  時間の大小を求める  *****************************/
/*	TIME1 : TIME2	: RETURN	*/
/*		  <			: = -1		*/
/*		  =			: =  0		*/
/*		  >			: = +1		*/
int	cmptime( min1,sec1,frame1,min2,sec2,frame2 )
signed char	min1, sec1, frame1 ;
signed char	min2, sec2, frame2 ;
{
	if ( min1 > min2 ) {
		return( 1 ) ;									/*  TIME1 > TIME2	*/

	} else if ( min1 == min2 ) {
		if ( sec1 > sec2 ) {
			return( 1 ) ;								/*  TIME1 > TIME2	*/

		} else if ( sec1 == sec2 ) {
			if ( frame1 > frame2 ) {
				return( 1 ) ;							/*  TIME1 > TIME2	*/

			} else if ( frame1 == frame2 ) {
				return( 0 ) ;							/*  TIME1 = TIME2	*/

			} else {
				return( -1 ) ;							/*  TIME1 < TIME2	*/
			}

		} else {
			return( -1 ) ;								/*  TIME1 < TIME2	*/
		}

	} else {
		return( -1 ) ;									/*  TIME1 < TIME2	*/
	}
}

/****************************  時間差を求める  *******************************/
void subtime( min1,sec1,frame1,min2,sec2,frame2,min,sec,frame )
char	min1, sec1, frame1 ;
char	min2, sec2, frame2 ;
char	*min, *sec, *frame ;
{
	*min = 0 ; *sec = 0 ; *frame = 0 ;
	if ( frame1 >= frame2 ) {
		*frame = frame1 - frame2 ;
	} else {
		frame1 += 75 ;
		if ( sec1 == 0 ) {
			sec1 += 60 ;
			min1 -- ;
		}
		sec1 -- ;
		*frame = frame1 - frame2 ;
	}
	if ( sec1 >= sec2 ) {
		*sec = sec1 - sec2 ;
	} else {
		sec1 += 60 ;
		min1 -- ;
		*sec = sec1 - sec2 ;
	}
	*min = min1 - min2 ;

}

/****************************  時間和を求める  *******************************/
void addtime( min1,sec1,frame1,min2,sec2,frame2,min,sec,frame )
char	min1, sec1, frame1 ;
char	min2, sec2, frame2 ;
char	*min, *sec, *frame ;
{
	min1 += min2 ;
	sec1 += sec2 ;
	frame1 += frame2 ;
	if ( sec1 >= 60 ) {
		sec1 -= 60 ;
		min1 ++ ;
	}
	if ( frame1 >= 75 ) {
		frame1 -= 75 ;
		sec1 ++ ;
		if ( sec1 >= 60 ) {
			sec1 -= 60 ;
			min1 ++ ;
		}
	}
	*min = min1 ;
	*sec = sec1 ;
	*frame = frame1 ;

	return ;
}

