/*--------------------------------------------------------------------
 * FICHERO:       Tiempo.h
 * OBJETIVO:      Definir el objeto "Tiempo"
 * IDENTIFICADOR: Tim
 * AUTOR:         Pedro Reina
 * FECHA:         J.13.7.1995
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Funciones pblicas
 *
 *   Tim_Crono()             Tiempo.h
 *   Tim_Espera()            Tiempo.h
 *   Tim_Ano()               TimAno.c
 *   Tim_Mes()               TimMes.c
 *   Tim_Dia()               TimDia.c
 *   Tim_Hora()              TimHora.c
 *   Tim_Minuto()            TimMinut.c
 *   Tim_Segundo()           TimSegun.c
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Funciones conocidas
 *
 *   Ninguna
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Funciones privadas
 *
 *   Ninguna
 *------------------------------------------------------------------*/

#ifndef _TIEMPO_
#define _TIEMPO_

/*--------------------------------------------------------------------
 * Ficheros de cabecera
 *------------------------------------------------------------------*/

#include "General.h"

#ifdef OLIMPO_PC
#include <bios.h>               /*  biostime()                      */
#include <dos.h>                /*  delay()                         */
#endif

#ifdef OLIMPO_QL
#include <qlib.h>               /* mt_rclck()  mt_susjb()  mt_inf() */
#endif

/*--------------------------------------------------------------------
 * Definicin de macros constantes
 *------------------------------------------------------------------*/

#ifdef OLIMPO_QL
#define TIM_REFRESCO  50
#endif

/*--------------------------------------------------------------------
 * Definicin de tipos
 *------------------------------------------------------------------*/

   /* Ninguno */

/*--------------------------------------------------------------------
 * Variables globales
 *------------------------------------------------------------------*/

   /* Ninguna */

/*--------------------------------------------------------------------
 * Declaracin de funciones
 *------------------------------------------------------------------*/

contador Tim_Ano();
octeto   Tim_Mes();
octeto   Tim_Dia();
octeto   Tim_Hora();
octeto   Tim_Minuto();
octeto   Tim_Segundo();

/*--------------------------------------------------------------------
 * Definicin de macros funciones
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------Olimpo
 * MACRO:    Tim_Crono()
 * OBJETIVO: Obtener una referencia temporal de precisin
 * ENTRADAS: Ninguna, se consulta el reloj del sistema
 * SALIDAS:  Un nmero real que indica el nmero de segundos
 *           desde la medianoche
 * NOTA:     Esta funcin no tiene la misma precisin en
 *           TurboC y en C68
 * EJEMPLO:  Tim_Crono()
 *------------------------------------------------------------------*/

#ifdef OLIMPO_PC
#define Tim_Crono()  ((real)(biostime(0,0L)/18.2))
#endif

#ifdef OLIMPO_QL
#define Tim_Crono()  ((real)(mt_rclck()%86400))
#endif

/*--------------------------------------------------------------Olimpo
 * MACRO:    Tim_Espera()
 * OBJETIVO: Suspender la ejecucin del programa durante
 *           cierto tiempo
 * ENTRADAS: El tiempo en segundos
 * SALIDAS:  Ninguna
 * EJEMPLO:  Tim_Espera (0.5)
 *------------------------------------------------------------------*/

#ifdef OLIMPO_PC
#define Tim_Espera(s)    delay((real)(s)*1000)
#endif

#ifdef OLIMPO_QL
#define Tim_Espera(s)    mt_susjb(mt_inf(NULL,NULL),\
                                 (int)(((real)(s))*TIM_REFRESCO),NULL)
#endif

#endif  /* _TIEMPO_ */