/*--------------------------------------------------------------------
 * FICHERO:  FchInic.c
 * OBJETIVO: Definir la funcin privada PC Fch_Inicia()
 * AUTOR:    Pedro Reina
 * FECHA:    D.23.4.1995
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Funciones internas PC
 *
 *   Fch_ManejadorInterrupciones()
 *------------------------------------------------------------------*/

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

#include "Fichero.h"

#ifdef OLIMPO_PC
#include <dos.h>                /* harderr()   hardretn()           */
#endif

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

#ifdef OLIMPO_PC
static int Fch_ManejadorInterrupciones();
#endif

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

#ifdef OLIMPO_PC
/*--------------------------------------------------------------------
 * FUNCION:  Fch_Inicia()
 * OBJETIVO: Instalar el manejador de interrupciones del PC
 * ENTRADAS: Ninguna
 * SALIDAS:  Ninguna
 * EJEMPLO:  Fch_Inicia()
 *------------------------------------------------------------------*/
void Fch_Inicia()
  {
  static logico InstaladoManejadorDeInterrupciones = NO;

  if ( !InstaladoManejadorDeInterrupciones )
    {
    InstaladoManejadorDeInterrupciones = SI;
    harderr(Fch_ManejadorInterrupciones);
    }
  }
#endif

#ifdef OLIMPO_PC
/*--------------------------------------------------------------------
 * FUNCION:  Fch_ManejadorInterrupciones()
 * OBJETIVO: Atraparar las interrupciones de hardware. En esta versin
 *           simplemente se ignoran.
 * ENTRADAS: 4 valores exigidos por MS-DOS
 * SALIDAS:  La orden de continuar el programa abortando cualquier
 *           accin del sistema operativo
 * EJEMPLO:  Hay que instalar la funcin con harderr, as:
 *           harderr(Fch_ManejadorInterrupciones)
 * NOTA:     El pragma se utiliza para que el compilador no d avisos
 *           por no utilizar los parmetros de la funcin, que hay que
 *           definirlos obligatoriamente
 *------------------------------------------------------------------*/
#pragma warn -par
int Fch_ManejadorInterrupciones(int errval,int ax,int bp,int si)
  {
  hardretn(2);  /* 2 quiere decir ABORT */
  return (2);
  }
#pragma warn +par
#endif
