#ifndef _TIMER_H_
#define _TIMER_H_

#ifndef _ZSTDDEF_H_
#include	"zstddef.h"
#endif

/*****************************************************************************
* Define timer routines.
*
* (c) Copyright 2003, Zektor.  All rights reserved.
*****************************************************************************/

// The clock ticks are times 1000 to allow better resolution during tick
// calculations.

#define	TICK_RATE1000		1193181667		// tick rate * 1000
#define	TICKS_PER_MS		1193				// ticks in a millisecond

// Define timer type

typedef unsigned long		Timer_t;

// External frame counter, incremented each frame

extern uint		TmrFrameCounter;

// Assembly language routines

extern void		init_8254( short dos_selector);
extern void		restore_8254( void);
extern Timer_t	readTimer( void);

// C routines

#define	tmrRead()				readTimer()
#define	tmrRestore()			restore_8254()
#define	tmrReadFrameCount()	TmrFrameCounter

extern void		tmrInit( void);
//extern void		tmrRestore( void);
extern void		tmrSetFrameRate( int fps);
extern uint		tmrTestFrame( void);
extern uint		tmrWaitFrame( void);
//extern timer_t	tmrRead( void);
extern bool		tmrTestTicks( Timer_t timer, ulong ticks);
extern bool		tmrTestms( Timer_t timer, ulong ms);
//extern uint		framesRead( void)
extern bool		tmrTestFrameCount( uint frameCount, uint frames);
#endif
