/*--------------------------------------------------------------------
 * FICHERO:  PanCarGr.c
 * OBJETIVO: Definir la funcin interna PC Pan_CarGraf()
 * AUTOR:    Pedro Reina
 * FECHA:    L.18.7.1994
 *------------------------------------------------------------------*/

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

#include "Pantalla.h"

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

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

#ifdef OLIMPO_PC
/*--------------------------------------------------------------------
 * FUNCION:  Pan_CarGraf()
 * OBJETIVO: Escribir un caracter en la pantalla grfica
 * ENTRADAS: El caracter
 * SALIDAS:  Ninguna
 * EJEMPLO:  Pan_CarGraf ( 'A' )
 *------------------------------------------------------------------*/
#pragma warn -aus
void Pan_CarGraf (Car)
unsigned char Car;
  {
  unsigned int  Pos;
  char far    * Direccion;
  unsigned char Base;
  contador      i;
  int           Octeto, Inutil;

  Pos = Car * Pan_AltoCar();

  for ( i = 0 , Octeto = Pan_AltoCar() * Pan_Fil_ * 80 + Pan_Col_ ;
        i < Pan_AltoCar() ; i++ , Octeto += 80 )
    {
    Direccion = MK_FP ( 0xA000, Octeto );
    if ( Pan_Resal_ && i==14 ) { Base = 0xFF; }
    else                       { Base = Pan_TabCar_[Pos+i]; }

    Pan_MandaOrden (0x3CE,8,Base);
    Pan_MandaOrden (0x3C4,2,0x0F);
    Inutil = *Direccion;
    *Direccion = 0;
    Pan_MandaOrden (0x3C4,2,Pan_Tin_);
    *Direccion = 0xFF;

    Pan_MandaOrden (0x3CE,8,~Base);
    Pan_MandaOrden (0x3C4,2,0x0F);
    Inutil = *Direccion;
    *Direccion = 0;
    Pan_MandaOrden(0x3C4,2,Pan_Pap_);
    *Direccion = 0xFF;
    }
  Pan_MandaOrden (0x3C4,2,0x0F);
  Pan_MandaOrden (0x3CE,3,0);
  Pan_MandaOrden (0x3CE,8,0xFF);

  Pan_Col_++;
  }
#pragma warn +aus
#endif