First commit 10/06/1992
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								EGAVGA.BGI
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								EGAVGA.BGI
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										280
									
								
								FREC.IMG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										280
									
								
								FREC.IMG
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,280 @@
 | 
			
		||||
*
 | 
			
		||||
* ATENCION, ESTE ES EL C<>DIGO FUENTE DE MIS LIBRERIAS PARA GENERAR FONDOS
 | 
			
		||||
*           Y PULSADORES.
 | 
			
		||||
*
 | 
			
		||||
*           VERSION DEL CODIGO COMPILABLE EN TIEMPO DE EJECUCION
 | 
			
		||||
*
 | 
			
		||||
*           UTILICE EL PROGRAMA MK_BOTON.EXE PARA CONVERTIR A C++    
 | 
			
		||||
*           Y COMPILARLO JUNTO AL CODIGO FUENTE DE LA APLICACION.    
 | 
			
		||||
*
 | 
			
		||||
* El autor de este programa vende LAS LIBRERIAS que el mismo a fabricado
 | 
			
		||||
* y con las que estan ello este programa:
 | 
			
		||||
*
 | 
			
		||||
*  MAKE_BOTON           5.000 ptas  ( Crea Pulsadores y FX's sin esfuerzo   )
 | 
			
		||||
*  WAVE_GENER           5.000 ptas  ( Muestreador y retocador completo      )
 | 
			
		||||
*  FX_PACK              5.000 ptas  ( N<>s Grandes, Letras Despl, MouseP...  )
 | 
			
		||||
*  WAVE_PLAY            3.500 ptas  ( Librerias de reproducci<63>n de waves
 | 
			
		||||
*                                      de hasta 32 TeraBytes con solo 8 Kb  )
 | 
			
		||||
*  XMS_MEMMGR           3.500 ptas  ( Clase para manejar la XMS             )
 | 
			
		||||
*  B_DATOS              5.000 ptas  ( Clase  " la gestion de bases de datos )
 | 
			
		||||
*
 | 
			
		||||
*    <20>---> 15.000 <---<2D>---> 15.000 <---<2D>---> 15.000 <---<2D>---> 15.000 <---<2D>
 | 
			
		||||
*    <20>---> 15.000 <---<2D>      TODO EL KIT POR SOLO       <20>---> 15.000 <---<2D>
 | 
			
		||||
*    <20>---> 15.000 <---<2D>---> 15.000 <---<2D>---> 15.000 <---<2D>---> 15.000 <---<2D>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
* <20>                                                                      <20>
 | 
			
		||||
* <20>                         Pantalla Principal                           <20>
 | 
			
		||||
* <20>                                                                      <20>
 | 
			
		||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
<EFBFBD>1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* Cuadro de ondas
 | 
			
		||||
&   0, 120, 640, 480,       7, 63, 56, 2, 2
 | 
			
		||||
&   5, 125, 635, 284,       0, 56, 63, 1, 2
 | 
			
		||||
&   5, 288, 635, 313,       1, 56, 63, 1, 2
 | 
			
		||||
&   5, 317, 635, 475,       0, 56, 63, 1, 2
 | 
			
		||||
 | 
			
		||||
* Cuadro de numeros
 | 
			
		||||
&   0,   0, 240, 120,       7, 63, 56, 2, 2
 | 
			
		||||
&   8,   8, 232,  82,       0, 56, 63, 2, 2
 | 
			
		||||
&   8,  87, 232, 112,       0, 56, 63, 2, 2
 | 
			
		||||
 | 
			
		||||
* Cuadro de Botone
 | 
			
		||||
*
 | 
			
		||||
*       COMIENZA EL JUEGO... ( JD EL GENIO DE GENIOS... )
 | 
			
		||||
*
 | 
			
		||||
*
 | 
			
		||||
 | 
			
		||||
#5
 | 
			
		||||
 | 
			
		||||
!1, 33
 | 
			
		||||
 | 
			
		||||
* Boton Seleccion Generador/Osciloscopio
 | 
			
		||||
$ 240,   0, 315,  24,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
 * Boton ejecutar accion GENERAR/OBTENER onda
 | 
			
		||||
 $ 315,   0, 340,  24,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
* ????????????????????????????????????
 | 
			
		||||
$ 240,  24, 315,  48,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
 * ????????????????????????????????????
 | 
			
		||||
 $ 315,  24, 340,  48,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
 | 
			
		||||
* Boton Salvar
 | 
			
		||||
$ 240,  48, 340,  72,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
* Boton Cargar
 | 
			
		||||
$ 240,  72, 340,  96,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
 | 
			
		||||
* Boton Salir
 | 
			
		||||
$ 240,  96, 340, 120,       7, 63, 56, 2, 2, 83, 00
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* Boton Ayuda on-Line
 | 
			
		||||
$ 340,   0, 365,  30,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
* Boton Creditos
 | 
			
		||||
$ 340,  30, 365,  60,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
* Boton REGISTRO / MI LICENCIA
 | 
			
		||||
$ 340,  60, 365, 120,       7, 63, 56, 2, 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* Cuadro/Boton Amplitud
 | 
			
		||||
& 540,   0, 615,  24,       7, 63, 56, 2, 2
 | 
			
		||||
 $ 542,   2, 613,  22,       0, 56, 63, 2, 2, 00, 00
 | 
			
		||||
& 540,  24, 615,  48,       7, 63, 56, 2, 2
 | 
			
		||||
 $ 542,  26, 613,  46,       0, 56, 63, 2, 2, 00, 00
 | 
			
		||||
* Cuadro/Boton unidad
 | 
			
		||||
& 611,   0, 640,  24,       7, 63, 56, 2, 2
 | 
			
		||||
 $ 613,   2, 638,  22,       0, 56, 63, 2, 2, 00, 00
 | 
			
		||||
& 611,  24, 640,  48,       7, 63, 56, 2, 2
 | 
			
		||||
 $ 613,  26, 638,  46,       0, 56, 63, 2, 2, 00, 00
 | 
			
		||||
 | 
			
		||||
* Botones de cursor y acciones mas precisas para estos
 | 
			
		||||
        *
 | 
			
		||||
        $ 615,  48, 640,  72,       7, 63, 56, 2, 2, 00, 73
 | 
			
		||||
        * --------->>>>>>       Flecha derecha
 | 
			
		||||
        $ 615,  72, 640,  96,       7, 63, 56, 2, 2, 00, 77
 | 
			
		||||
        * Marcar Parte de la onda
 | 
			
		||||
        $ 615,  96, 640, 120,       7, 63, 56, 2, 2, 00, 81
 | 
			
		||||
 | 
			
		||||
        * ^^^^^                 Flecha arriba
 | 
			
		||||
        $ 590,  48, 615,  72,       7, 63, 56, 2, 2, 00, 72
 | 
			
		||||
        * Centrar cero
 | 
			
		||||
        $ 590,  72, 615,  96,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
        * \/ \/ \/ \/ \/        Flecha abajo
 | 
			
		||||
        $ 590,  96, 615, 120,       7, 63, 56, 2, 2, 00, 80
 | 
			
		||||
 | 
			
		||||
        *
 | 
			
		||||
        $ 565,  48, 590,  72,       7, 63, 56, 2, 2, 00, 71
 | 
			
		||||
        * <<<<<<--------        Flecha izquierda
 | 
			
		||||
        $ 565,  72, 590,  96,       7, 63, 56, 2, 2, 00, 75
 | 
			
		||||
        * Ground ( Tierra )
 | 
			
		||||
        $ 565,  96, 590, 120,       7, 63, 56, 2, 2, 00, 79
 | 
			
		||||
 | 
			
		||||
* Selecciona la onda completa
 | 
			
		||||
$ 540,  48, 565, 120,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
 | 
			
		||||
* Creacion de onda predefinida
 | 
			
		||||
        * Estancar proceso
 | 
			
		||||
        $ 365,   0, 395,  24,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
        * Retroceder tipo de onda
 | 
			
		||||
        $ 395,   0, 424,  24,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
        * Onda pred. 1, 2, 3
 | 
			
		||||
        $ 424,   0, 453,  24,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
        $ 453,   0, 482,  24,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
        $ 482,   0, 511,  24,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
        * Avanzar tipo de onda
 | 
			
		||||
        $ 511,   0, 540,  24,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
$ 365,  24, 424,  48,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
*
 | 
			
		||||
$ 424,  24, 482,  48,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
*
 | 
			
		||||
$ 482,  24, 540,  48,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
 | 
			
		||||
* |     397,      50,        2,  4,  0, 63, MMMMMMMMM-MMMMMMMMM-MMMMMMMMM-,
 | 
			
		||||
 | 
			
		||||
<EFBFBD>2
 | 
			
		||||
 | 
			
		||||
|     240,      50,        2,  6,  0, 63,    Salvar,
 | 
			
		||||
|     241,      51,        2,  6,  0,  0,    Salvar,
 | 
			
		||||
|     240,      74,        2,  6,  0, 63,    Cargar,
 | 
			
		||||
|     241,      75,        2,  6,  0,  0,    Cargar,
 | 
			
		||||
|     240,      98,        2,  6,  0, 63,    Salir,
 | 
			
		||||
|     241,      99,        2,  6,  0,  0,    Salir,
 | 
			
		||||
 |     240,      99,        2,  6,  0, 63,    _,
 | 
			
		||||
 |     241,     100,        2,  6,  0,  0,    _,
 | 
			
		||||
 | 
			
		||||
|     614,     108,        2,  2,  0, 63,  Marca,
 | 
			
		||||
|     615,     109,        2,  2,  0,  0,  Marca,
 | 
			
		||||
|     563,     107,        2,  4,  0, 63,  GND,
 | 
			
		||||
|     564,     108,        2,  4,  0,  0,  GND,
 | 
			
		||||
|     382,       1,        2,  4,  1, 63, CRT,
 | 
			
		||||
|     383,       2,        2,  4,  1,  0, CRT,
 | 
			
		||||
 | 
			
		||||
!2, 1
 | 
			
		||||
$  204, 274, 276, 291,       7,  56,  63,  -2,  1, 00, 30
 | 
			
		||||
 | 
			
		||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
* <20>                                                                      <20>
 | 
			
		||||
* <20>         Casilla de pregunta ( OPTAR por....  ACEPTAR CANCELAR        <20>
 | 
			
		||||
* <20>                                                                      <20>
 | 
			
		||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
<EFBFBD>100
 | 
			
		||||
&  200, 212, 440, 267,       7,  56,  63,  2,  1
 | 
			
		||||
&  205, 217, 435, 262,       7,  63,  56, -2,  1
 | 
			
		||||
 | 
			
		||||
* Boton Aceptar
 | 
			
		||||
&  200, 270, 280, 295,       7,  63,  56,  2,  1
 | 
			
		||||
* Boton Cancelar
 | 
			
		||||
&  360, 270, 440, 295,       7,  63,  56,  2,  1
 | 
			
		||||
 | 
			
		||||
<EFBFBD>101
 | 
			
		||||
|       200,      274,       2,  5, 0,   63,   Aceptar,
 | 
			
		||||
|       201,      275,       2,  5, 0,    0,   Aceptar,
 | 
			
		||||
 |       200,      274,       2,  5, 0,   14,   A,
 | 
			
		||||
 |       201,      275,       2,  5, 0,    0,   A,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
|       340,      274,       2,  5, 0,   63,     Cancelar,
 | 
			
		||||
|       341,      275,       2,  5, 0,    0,     Cancelar,
 | 
			
		||||
 |       340,      274,       2,  5, 0,   14,     C,
 | 
			
		||||
 |       341,      275,       2,  5, 0,    0,     C,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
!3, 2
 | 
			
		||||
* Boton Aceptar
 | 
			
		||||
$  204, 274, 276, 291,       7,  56,  63,  -2,  1, 00, 30
 | 
			
		||||
* Boton Cancelar
 | 
			
		||||
$  364, 274, 436, 291,       7,  56,  63,  -2,  1, 00, 46
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
* <20>                                                                      <20>
 | 
			
		||||
* <20>                              File Browser                            <20>
 | 
			
		||||
* <20>                                                                      <20>
 | 
			
		||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
!4, 4
 | 
			
		||||
 | 
			
		||||
*Cuadro Cancelar
 | 
			
		||||
$  377, 169, 391, 221,       7,  56,  63,  0,  1, 00, 46
 | 
			
		||||
*Boton Aceptar
 | 
			
		||||
$  377, 223, 391, 276,       7,  56,  63,  0,  1, 00, 30
 | 
			
		||||
 | 
			
		||||
* Subir
 | 
			
		||||
$  377, 278, 391, 303,       7,  56,  63,  0,  1, 00, 72
 | 
			
		||||
* Bajar
 | 
			
		||||
$  377, 305, 391, 330,       7,  56,  63,  0,  1, 00, 80
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* x y fuente tama<6D>o orientacion color texto
 | 
			
		||||
 | 
			
		||||
* Men<65> para Cargar o Salvar
 | 
			
		||||
<EFBFBD>10
 | 
			
		||||
 | 
			
		||||
*Cuadro Total
 | 
			
		||||
&  240, 140, 400, 340,       7,  63,  56,  2,  1
 | 
			
		||||
&  243, 143, 397, 337,       7,  56,  63, -2,  1
 | 
			
		||||
*Cuadro Informativo
 | 
			
		||||
&  250, 150, 391, 164,       7,  56,  63, -0,  1
 | 
			
		||||
*Cuadro introduccion nuevos datos
 | 
			
		||||
&  250, 169, 375, 180,       0,  56,  63,  0,  1
 | 
			
		||||
*Cuadro de muestreo
 | 
			
		||||
&  250, 185, 375, 330,       0,  56,  63,  0,  1
 | 
			
		||||
 | 
			
		||||
*Cuadro Cancelar
 | 
			
		||||
&  377, 169, 391, 221,       7,  56,  63,  0,  1
 | 
			
		||||
*Boton Aceptar
 | 
			
		||||
&  377, 223, 391, 276,       7,  56,  63,  0,  1
 | 
			
		||||
 | 
			
		||||
* Subir
 | 
			
		||||
&  377, 278, 391, 303,       7,  56,  63,  0,  1
 | 
			
		||||
* Bajar
 | 
			
		||||
&  377, 305, 391, 330,       7,  56,  63,  0,  1
 | 
			
		||||
 | 
			
		||||
|377, 169, 2, 4, 1, 63, Cancelar,
 | 
			
		||||
 |378, 170, 2, 4, 1,  0, Cancelar,
 | 
			
		||||
  |377, 169, 2, 4, 1,  2, C       ,
 | 
			
		||||
   |378, 170, 2, 4, 1,  0, C       ,
 | 
			
		||||
|377, 223, 2, 4, 1, 63, Aceptar ,
 | 
			
		||||
 |378, 224, 2, 4, 1,  0, Aceptar ,
 | 
			
		||||
  |377, 223, 2, 4, 1,  2, A       ,
 | 
			
		||||
   |378, 224, 2, 4, 1,  0, A       ,
 | 
			
		||||
 | 
			
		||||
|377, 288, 2, 4, 0, 63,  -,
 | 
			
		||||
 |378, 289, 2, 4, 0,  0,  -,
 | 
			
		||||
|377, 315, 2, 4, 0, 63,  +,
 | 
			
		||||
 |378, 316, 2, 4, 0,  0,  +,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
********************************************************************************
 | 
			
		||||
****  Prueba del pulsador derecho... *******************************************
 | 
			
		||||
********************************************************************************
 | 
			
		||||
!5, 7
 | 
			
		||||
* Boton Cerrar seleccion derecho
 | 
			
		||||
$    0,   0,  25,  52,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
 | 
			
		||||
* Boton seleccion DISPERSION
 | 
			
		||||
$   30,   0, 105,  24,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
$   50,   3, 103,  21,       0, 56, 63, 2, 1, 00, 00
 | 
			
		||||
 | 
			
		||||
* Boton seleccion PRESICI<43>N
 | 
			
		||||
$   30,  29, 105,  52,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
$   50,  32, 103,  49,       0, 56, 63, 2, 1, 00, 00
 | 
			
		||||
 | 
			
		||||
 * Subir selecci<63>n
 | 
			
		||||
 $ 110,   0, 135,  24,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
 * Bajar selecci<63>n
 | 
			
		||||
 $ 110,  29, 135,  52,       7, 63, 56, 2, 2, 00, 00
 | 
			
		||||
* TODO EL CUADRO MIDE: (0, 0) - (135, 52)
 | 
			
		||||
********************************************************************************
 | 
			
		||||
********************************************************************************
 | 
			
		||||
********************************************************************************
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										758
									
								
								LLAVE.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										758
									
								
								LLAVE.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,758 @@
 | 
			
		||||
#define SEC_OPTAR 2
 | 
			
		||||
#define ENCUADRE       3
 | 
			
		||||
 | 
			
		||||
#include <math.h>
 | 
			
		||||
 | 
			
		||||
#include <io.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
#include <time.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <alloc.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <graphics.h>
 | 
			
		||||
 | 
			
		||||
#include "..\libs\make_bot\make_bot.h"		// Fuciones de MAKE_BOTON
 | 
			
		||||
 | 
			
		||||
#define PULSO_QUE_CABEN 48
 | 
			
		||||
#define ANCHO_PULSO     12
 | 
			
		||||
#define ALTO_PULSO      12
 | 
			
		||||
extern void ponicono(int x,int y,char matriz[18][18], char pos);
 | 
			
		||||
extern char flecha [18] [18];
 | 
			
		||||
 | 
			
		||||
typedef struct
 | 
			
		||||
 {
 | 
			
		||||
  int x, y;             // Coordenadas iniciales de muestreo
 | 
			
		||||
  char ndigitos;        // n<>mero de digitos a mostrar
 | 
			
		||||
  char AX, AY;          // factor de espaciado
 | 
			
		||||
  char C1, C2, C3;      // colores de fondo, texto, borde
 | 
			
		||||
 | 
			
		||||
  // Datos privados y uso interno exclusivamente
 | 
			
		||||
  unsigned int  Flen;   // longitud de la frase actual
 | 
			
		||||
  char BitByte;         // bit del byte por el que va en el recorrido
 | 
			
		||||
  char currByte;        // byte actual dentro de la frase
 | 
			
		||||
 } p_Ampliada;
 | 
			
		||||
 | 
			
		||||
#define OFF     0
 | 
			
		||||
#define ON      1
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
    #define __CPPARGS ...
 | 
			
		||||
#else
 | 
			
		||||
    #define __CPPARGS
 | 
			
		||||
#endif
 | 
			
		||||
#define INTR                           0X1C /* The clock tick interrupt */
 | 
			
		||||
 | 
			
		||||
char count = 0, intvect = OFF, IntVect = OFF;
 | 
			
		||||
 | 
			
		||||
extern int Optar( int optar, ...);
 | 
			
		||||
 | 
			
		||||
void AnulaInterrupcion(void);
 | 
			
		||||
void interrupt handler(__CPPARGS);
 | 
			
		||||
void interrupt ( *oldhandler)(__CPPARGS);
 | 
			
		||||
char *ptr_char;
 | 
			
		||||
 | 
			
		||||
void DibujaPulsos( long comienzo, char bit, char far *Datos, int x, int y, char color, long TotalPulsos );
 | 
			
		||||
void LeeFuentes(char *file);
 | 
			
		||||
void Fuente_Amplia( char *Frase, p_Ampliada far *FA );
 | 
			
		||||
void DibujaFondo(void);
 | 
			
		||||
void DibujaSeparadores( int X1, int Y1, int X2, int Y2, char color );
 | 
			
		||||
 | 
			
		||||
void Error( int code, char *MensajeError );
 | 
			
		||||
 | 
			
		||||
void BorraPantalla(void);
 | 
			
		||||
void ComienzaRutina(void);
 | 
			
		||||
 | 
			
		||||
extern char file_browser( char *comodin_name, char *texto1, char Cargar_Salvar );
 | 
			
		||||
 | 
			
		||||
long InicioPulso[6][2];
 | 
			
		||||
 | 
			
		||||
void CargarOnda( char *file, char far *Datos, char Ventana );
 | 
			
		||||
void SalvarOnda( char *file, char far *Datos, char Ventana );
 | 
			
		||||
 | 
			
		||||
char far *Datos[2];
 | 
			
		||||
 | 
			
		||||
int TiempoEspera = 5, DIR_LPT = 0x378, ANGULO = 0;
 | 
			
		||||
 | 
			
		||||
int main( int argc, char *argv[] )
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 int i;
 | 
			
		||||
 long j;
 | 
			
		||||
 char buffer[4][80] = { "Jos<EFBFBD> David Guill<6C>n || _-<2D>FuTuRe ViSiOn<4F>-_ || 1996 (c)",
 | 
			
		||||
                        "                                                     ",
 | 
			
		||||
                        "        e-mail: Jose-David.Guillen@cs.us.es          ",
 | 
			
		||||
                        "                                                     " };
 | 
			
		||||
 | 
			
		||||
 if ( argc == 2 )
 | 
			
		||||
 {
 | 
			
		||||
      TiempoEspera = atoi(argv[1]);
 | 
			
		||||
      if ( TiempoEspera < 0 || TiempoEspera > 1000 )
 | 
			
		||||
                                              TiempoEspera = 5;
 | 
			
		||||
 }
 | 
			
		||||
 if ( argc == 3 )
 | 
			
		||||
 {
 | 
			
		||||
     DIR_LPT = atoi( argv[2] );
 | 
			
		||||
     if ( DIR_LPT < 0 )
 | 
			
		||||
                      DIR_LPT = 0x379;
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
 if ( argc == 4 )
 | 
			
		||||
 {
 | 
			
		||||
     ANGULO = atoi( argv[3] );
 | 
			
		||||
     if ( ANGULO < 0 )
 | 
			
		||||
                      ANGULO = 0;
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 if ( atexit( AnulaInterrupcion ) != 0 )
 | 
			
		||||
                                  intvect = OFF;
 | 
			
		||||
 else
 | 
			
		||||
                                  intvect = ON;
 | 
			
		||||
 | 
			
		||||
 True_Push = ON;                        PunteroRaton = 1;
 | 
			
		||||
 Initialize( 9, 2 );                    // Inicializa el Modo Gr<47>fico
 | 
			
		||||
 inicializa_raton_grafico( 0, 0, 639, 479 );
 | 
			
		||||
 setrgbpalette(EGA_WHITE,     56, 58, 59 );
 | 
			
		||||
 setrgbpalette(EGA_LIGHTGRAY, 30, 37, 43 );
 | 
			
		||||
 setrgbpalette(EGA_DARKGRAY,   24, 27, 30 );
 | 
			
		||||
 | 
			
		||||
 if ( carga_botones( "llave.img" ) != OK ) Error( 0x03, "Make Boton, no pudo cargar los botones" );
 | 
			
		||||
 | 
			
		||||
 if ( ( Datos[0] = (char far *)farcalloc( 100000, sizeof(char) ) ) == NULL )
 | 
			
		||||
 {
 | 
			
		||||
  Optar( 0, "ERROR DE MEMORIA", "Memoria insuficiente", "para la primera forma", "de onda.", NULL );
 | 
			
		||||
  closegraph();
 | 
			
		||||
  return -1;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 if ( ( Datos[1] = (char far *)farcalloc( 100000, sizeof(char) ) ) == NULL )
 | 
			
		||||
 {
 | 
			
		||||
  farfree( Datos[0] );
 | 
			
		||||
  Optar( 0, "ERROR DE MEMORIA", "Memoria insuficiente", "para la segunda forma", "de onda.", NULL );
 | 
			
		||||
  closegraph();
 | 
			
		||||
  return -1;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 _fmemcpy( Datos[0], &i, 50000 );
 | 
			
		||||
 | 
			
		||||
 if ( intvect == ON )
 | 
			
		||||
 {
 | 
			
		||||
   // save the old interrupt vector
 | 
			
		||||
   oldhandler = getvect(INTR);
 | 
			
		||||
   // install the new interrupt handler
 | 
			
		||||
   setvect(INTR, handler);
 | 
			
		||||
 | 
			
		||||
   IntVect = ON;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 if ( ( ptr_char = ( char *)malloc( sizeof(char)*4096 ) ) == NULL )
 | 
			
		||||
                     Error( 0x06, "Error inicializando Memoria, fuentes" );
 | 
			
		||||
 LeeFuentes("llave.fnt");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 DibujaFondo();
 | 
			
		||||
 | 
			
		||||
 ComienzaRutina();
 | 
			
		||||
 | 
			
		||||
 BorraPantalla();
 | 
			
		||||
 | 
			
		||||
 free( ptr_char );
 | 
			
		||||
 AnulaInterrupcion();
 | 
			
		||||
 | 
			
		||||
 closegraph();
 | 
			
		||||
 | 
			
		||||
 printf( "\n%s", buffer[0] );
 | 
			
		||||
 printf( "\n%s", buffer[1] );
 | 
			
		||||
 printf( "\n%s", buffer[2] );
 | 
			
		||||
 printf( "\n%s", buffer[3] );
 | 
			
		||||
 | 
			
		||||
 farfree( Datos[0] );
 | 
			
		||||
 farfree( Datos[1] );
 | 
			
		||||
 return 0;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void ComienzaRutina(void)
 | 
			
		||||
{
 | 
			
		||||
 int ok, BPush, VentanaActiva, i, j;
 | 
			
		||||
 long DLectura;
 | 
			
		||||
 char buffer[280];
 | 
			
		||||
 | 
			
		||||
 // Temporal hasta que existan datos reales...
 | 
			
		||||
/*
 | 
			
		||||
 Datos[0] = (char *)&ok;
 | 
			
		||||
 Datos[1] = (char *)&ok;
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 VentanaActiva = 0;
 | 
			
		||||
 for ( j = 0; j < 2; j++ )
 | 
			
		||||
   for ( i = 0; i < 5; i++ )
 | 
			
		||||
         InicioPulso[i][j] = 0;
 | 
			
		||||
 | 
			
		||||
 InicioPulso[5][0] = 100000;
 | 
			
		||||
 InicioPulso[5][1] = 100000;
 | 
			
		||||
 | 
			
		||||
 DibujaSeparadores( 63, 27, 630, 193, EGA_RED );
 | 
			
		||||
 DibujaSeparadores( 63, 27 + 250, 630, 193 + 250, EGA_RED );
 | 
			
		||||
 // Borramos los pulsos anteriores, y los desplazamos
 | 
			
		||||
 for ( j = 0; j < 5; j ++ )
 | 
			
		||||
 {
 | 
			
		||||
    DibujaPulsos( InicioPulso[j][0], 0x01 << j, Datos[0],  63,  42 + 30*j +  0, EGA_GREEN, InicioPulso[5][0] );
 | 
			
		||||
    DibujaPulsos( InicioPulso[j][1], 0x01 << j, Datos[1],  63,  42 + 30*j + 250, EGA_GREEN, InicioPulso[5][1] );
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 // Flecha hacia arriba
 | 
			
		||||
 ponicono( 20, 225, flecha, 2 );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 ok = 0;
 | 
			
		||||
 do {
 | 
			
		||||
 | 
			
		||||
   // Actualiza todos los puntos
 | 
			
		||||
   setfillstyle( SOLID_FILL, EGA_BLACK );
 | 
			
		||||
   setcolor( EGA_WHITE );
 | 
			
		||||
   for ( i = 0; i < 2; i++ )
 | 
			
		||||
     for ( j = 0; j < 5; j++ )
 | 
			
		||||
     {
 | 
			
		||||
      bar( 12, 42+31*j + 250*i, 52, 53+31*j + 250*i );
 | 
			
		||||
      sprintf( buffer, "%7ld", InicioPulso[j][i] );
 | 
			
		||||
      outtextxy( 12, 41 + 31*j + 250*i, buffer );
 | 
			
		||||
     }
 | 
			
		||||
 | 
			
		||||
   BPush = Comprueba_Secuencia( 1, NULL );
 | 
			
		||||
 | 
			
		||||
   switch( BPush )
 | 
			
		||||
   {
 | 
			
		||||
    case -2:
 | 
			
		||||
    case -1:
 | 
			
		||||
    case -0:
 | 
			
		||||
         while( kbhit() ) getch();
 | 
			
		||||
         break;
 | 
			
		||||
    // Salir
 | 
			
		||||
    case 1:
 | 
			
		||||
         ok = 1;
 | 
			
		||||
         break;
 | 
			
		||||
    // Cambio de Ventana
 | 
			
		||||
    case 2:
 | 
			
		||||
         VentanaActiva = !VentanaActiva;
 | 
			
		||||
         // Flecha hacia arriba
 | 
			
		||||
         ponicono( 20, 225, flecha, VentanaActiva == 0 ? 2 : 4 );
 | 
			
		||||
 | 
			
		||||
         break;
 | 
			
		||||
    // Desplazamiento de ondas (IZQUIERDA )
 | 
			
		||||
    case 3:
 | 
			
		||||
    case 4:
 | 
			
		||||
    case 5:
 | 
			
		||||
    case 6:
 | 
			
		||||
    case 7:
 | 
			
		||||
         InicioPulso[BPush-3][VentanaActiva] --;
 | 
			
		||||
         if ( InicioPulso[BPush-3][VentanaActiva] < 0 )
 | 
			
		||||
         {
 | 
			
		||||
                            InicioPulso[BPush-3][VentanaActiva] = 0;
 | 
			
		||||
         } else {
 | 
			
		||||
          // Borramos la onda anterior
 | 
			
		||||
          DibujaPulsos( InicioPulso[BPush-3][VentanaActiva] + 1, 0x01 << (BPush - 3), Datos[VentanaActiva],  63,  42 + 30*(BPush-3) + ( VentanaActiva ? 250 : 0 ), EGA_BLACK, InicioPulso[5][VentanaActiva] );
 | 
			
		||||
 | 
			
		||||
          // Dibujamos la nueva onda
 | 
			
		||||
          DibujaPulsos( InicioPulso[BPush-3][VentanaActiva], 0x01 << (BPush - 3), Datos[VentanaActiva],  63,  42 + 30*(BPush-3) + ( VentanaActiva ? 250 : 0 ), EGA_GREEN, InicioPulso[5][VentanaActiva] );
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
    // Desplazamiento de ondas (DERECHA)
 | 
			
		||||
    case  8:
 | 
			
		||||
    case  9:
 | 
			
		||||
    case 10:
 | 
			
		||||
    case 11:
 | 
			
		||||
    case 12:
 | 
			
		||||
         InicioPulso[BPush-8][VentanaActiva] ++;
 | 
			
		||||
         if ( InicioPulso[BPush-8][VentanaActiva] > InicioPulso[5][VentanaActiva] )
 | 
			
		||||
         {
 | 
			
		||||
                            InicioPulso[BPush-8][VentanaActiva] --;
 | 
			
		||||
         } else {
 | 
			
		||||
          // Borramos la onda anterior
 | 
			
		||||
          DibujaPulsos( InicioPulso[BPush-8][VentanaActiva] - 1, 0x01 << (BPush - 8), Datos[VentanaActiva],  63,  42 + 30*(BPush-8) + (VentanaActiva ? 250 : 0), EGA_BLACK, InicioPulso[5][VentanaActiva] );
 | 
			
		||||
 | 
			
		||||
          // Dibujamos la nueva onda
 | 
			
		||||
          DibujaPulsos( InicioPulso[BPush-8][VentanaActiva], 0x01 << (BPush - 8), Datos[VentanaActiva],  63,  42 + 30*(BPush-8) + (VentanaActiva ? 250 : 0), EGA_GREEN, InicioPulso[5][VentanaActiva] );
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
    // Desplazamiento de pulsos TODAS (IZQUIERDA)
 | 
			
		||||
    case 13:
 | 
			
		||||
         // Borramos los pulsos anteriores, y los desplazamos
 | 
			
		||||
         for ( j = 0; j < 5; j ++ )
 | 
			
		||||
         {
 | 
			
		||||
          DibujaPulsos( InicioPulso[j][VentanaActiva], 0x01 << j, Datos[VentanaActiva],  63,  42 + 30*j + ( VentanaActiva ? 250 : 0 ), EGA_BLACK, InicioPulso[5][VentanaActiva] );
 | 
			
		||||
          InicioPulso[j][VentanaActiva]--;
 | 
			
		||||
          if ( InicioPulso[j][VentanaActiva] < 0 )
 | 
			
		||||
                                            InicioPulso[j][VentanaActiva] = 0;
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         DibujaSeparadores( 63, 27 + (VentanaActiva ? 250 : 0 ), 630, 193 + (VentanaActiva ? 250 : 0 ), EGA_RED );
 | 
			
		||||
 | 
			
		||||
         // Dibujamos los nuevos pulsos.
 | 
			
		||||
         for ( j = 0; j < 5; j ++ )
 | 
			
		||||
          DibujaPulsos( InicioPulso[j][VentanaActiva], 0x01 << j, Datos[VentanaActiva],  63,  42 + 30*j + ( VentanaActiva ? 250 : 0 ), EGA_GREEN, InicioPulso[5][VentanaActiva] );
 | 
			
		||||
         break;
 | 
			
		||||
    // Reset de todos los pulsos
 | 
			
		||||
    case 14:
 | 
			
		||||
         // Borramos los pulsos anteriores, y los reseteamos
 | 
			
		||||
         for ( j = 0; j < 5; j ++ )
 | 
			
		||||
         {
 | 
			
		||||
          DibujaPulsos( InicioPulso[j][VentanaActiva], 0x01 << j, Datos[VentanaActiva],  63,  42 + 30*j + ( VentanaActiva ? 250 : 0 ), EGA_BLACK, InicioPulso[5][VentanaActiva] );
 | 
			
		||||
          InicioPulso[j][VentanaActiva] = 0;
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         DibujaSeparadores( 63, 27 + (VentanaActiva ? 250 : 0 ), 630, 193 + (VentanaActiva ? 250 : 0 ), EGA_RED );
 | 
			
		||||
 | 
			
		||||
         // Dibujamos los nuevos pulsos.
 | 
			
		||||
         for ( j = 0; j < 5; j ++ )
 | 
			
		||||
          DibujaPulsos( InicioPulso[j][VentanaActiva], 0x01 << j, Datos[VentanaActiva],  63,  42 + 30*j + ( VentanaActiva ? 250 : 0 ), EGA_GREEN, InicioPulso[5][VentanaActiva] );
 | 
			
		||||
         break;
 | 
			
		||||
    // Al final de todos los pulso
 | 
			
		||||
    case 15:
 | 
			
		||||
         // Borramos los pulsos anteriores, nos colocamos al final
 | 
			
		||||
         for ( j = 0; j < 5; j ++ )
 | 
			
		||||
         {
 | 
			
		||||
          DibujaPulsos( InicioPulso[j][VentanaActiva], 0x01 << j, Datos[VentanaActiva],  63,  42 + 30*j + ( VentanaActiva ? 250 : 0 ), EGA_BLACK, InicioPulso[5][VentanaActiva] );
 | 
			
		||||
          InicioPulso[j][VentanaActiva] = InicioPulso[5][VentanaActiva] - PULSO_QUE_CABEN;
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         DibujaSeparadores( 63, 27 + (VentanaActiva ? 250 : 0 ), 630, 193 + (VentanaActiva ? 250 : 0 ), EGA_RED );
 | 
			
		||||
 | 
			
		||||
         // Dibujamos los nuevos pulsos.
 | 
			
		||||
         for ( j = 0; j < 5; j ++ )
 | 
			
		||||
          DibujaPulsos( InicioPulso[j][VentanaActiva], 0x01 << j, Datos[VentanaActiva],  63,  42 + 30*j + ( VentanaActiva ? 250 : 0 ), EGA_GREEN, InicioPulso[5][VentanaActiva] );
 | 
			
		||||
         break;
 | 
			
		||||
    // Desplazamiento de pulsoso TODOS (Derecha)
 | 
			
		||||
    case 16:
 | 
			
		||||
         // Borramos los pulsos anteriores, y los desplazamos
 | 
			
		||||
         for ( j = 0; j < 5; j ++ )
 | 
			
		||||
         {
 | 
			
		||||
          DibujaPulsos( InicioPulso[j][VentanaActiva], 0x01 << j, Datos[VentanaActiva],  63,  42 + 30*j + ( VentanaActiva ? 250 : 0 ), EGA_BLACK, InicioPulso[5][VentanaActiva] );
 | 
			
		||||
          InicioPulso[j][VentanaActiva]++;
 | 
			
		||||
          if ( InicioPulso[j][VentanaActiva] > InicioPulso[5][VentanaActiva] )
 | 
			
		||||
                                            InicioPulso[j][VentanaActiva]--;
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         DibujaSeparadores( 63, 27 + (VentanaActiva ? 250 : 0 ), 630, 193 + (VentanaActiva ? 250 : 0 ), EGA_RED );
 | 
			
		||||
 | 
			
		||||
         // Dibujamos los nuevos pulsos.
 | 
			
		||||
         for ( j = 0; j < 5; j ++ )
 | 
			
		||||
          DibujaPulsos( InicioPulso[j][VentanaActiva], 0x01 << j, Datos[VentanaActiva],  63,  42 + 30*j + ( VentanaActiva ? 250 : 0 ), EGA_GREEN, InicioPulso[5][VentanaActiva] );
 | 
			
		||||
         break;
 | 
			
		||||
    // CARGAR
 | 
			
		||||
    case 17:
 | 
			
		||||
         for ( j = 0; j < 5; j ++ )
 | 
			
		||||
         {
 | 
			
		||||
             DibujaPulsos( InicioPulso[j][0], 0x01 << j, Datos[0],  63,  42 + 30*j +  0, EGA_BLACK, InicioPulso[5][0] );
 | 
			
		||||
             DibujaPulsos( InicioPulso[j][1], 0x01 << j, Datos[1],  63,  42 + 30*j + 250, EGA_BLACK, InicioPulso[5][1] );
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         strcpy( buffer, "*.llv" );
 | 
			
		||||
         if ( file_browser( buffer, "Cargar Archivo", 0 ) )
 | 
			
		||||
                                     CargarOnda( buffer, Datos[VentanaActiva], VentanaActiva );
 | 
			
		||||
 | 
			
		||||
         DibujaSeparadores( 63, 27, 630, 193, EGA_RED );
 | 
			
		||||
         DibujaSeparadores( 63, 27 + 250, 630, 193 + 250, EGA_RED );
 | 
			
		||||
         for ( j = 0; j < 5; j ++ )
 | 
			
		||||
         {
 | 
			
		||||
             DibujaPulsos( InicioPulso[j][0], 0x01 << j, Datos[0],  63,  42 + 30*j +  0, EGA_BLACK, InicioPulso[5][0] );
 | 
			
		||||
             DibujaPulsos( InicioPulso[j][1], 0x01 << j, Datos[1],  63,  42 + 30*j + 250, EGA_BLACK, InicioPulso[5][1] );
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
    // SALVAR
 | 
			
		||||
    case 18:
 | 
			
		||||
         strcpy( buffer, "*.llv" );
 | 
			
		||||
         if ( file_browser( buffer, "Salvar Archivo", 1 ) )
 | 
			
		||||
                                     SalvarOnda( buffer, Datos[VentanaActiva], VentanaActiva );
 | 
			
		||||
         break;
 | 
			
		||||
    // LEER ONDA
 | 
			
		||||
    case 19:
 | 
			
		||||
         for ( j = 0; j < 5; j ++ )
 | 
			
		||||
         {
 | 
			
		||||
             DibujaPulsos( InicioPulso[j][0], 0x01 << j, Datos[0],  63,  42 + 30*j +  0, EGA_BLACK, InicioPulso[5][0] );
 | 
			
		||||
             DibujaPulsos( InicioPulso[j][1], 0x01 << j, Datos[1],  63,  42 + 30*j + 250, EGA_BLACK, InicioPulso[5][1] );
 | 
			
		||||
         }
 | 
			
		||||
         Optar( 0, "Lectura de Onda", "Prepare el chisme, y", "pulse una tecla cuando este", "preparado...", NULL );
 | 
			
		||||
         Optar( ENCUADRE, "Leyendo Onda", "Presione una cualquier", "tecla para interrumpir el", "proceso...", NULL );
 | 
			
		||||
 | 
			
		||||
         outportb( DIR_LPT + 0, 0xFF );
 | 
			
		||||
         outportb( DIR_LPT + 1, 0x01 );
 | 
			
		||||
         // Comienza lectura
 | 
			
		||||
         for ( DLectura=0; DLectura < InicioPulso[5][VentanaActiva] && !kbhit(); DLectura++ )
 | 
			
		||||
         {
 | 
			
		||||
          Datos[VentanaActiva][DLectura] = inportb( DIR_LPT );
 | 
			
		||||
 | 
			
		||||
          sin( ANGULO );
 | 
			
		||||
          delay(TiempoEspera);
 | 
			
		||||
         }
 | 
			
		||||
 | 
			
		||||
         while( kbhit() ) getch();
 | 
			
		||||
 | 
			
		||||
         Optar( ENCUADRE, NULL );
 | 
			
		||||
         DibujaSeparadores( 63, 27, 630, 193, EGA_RED );
 | 
			
		||||
         DibujaSeparadores( 63, 27 + 250, 630, 193 + 250, EGA_RED );
 | 
			
		||||
         // Borramos los pulsos anteriores, y los desplazamos
 | 
			
		||||
         for ( j = 0; j < 5; j ++ )
 | 
			
		||||
         {
 | 
			
		||||
             DibujaPulsos( InicioPulso[j][0], 0x01 << j, Datos[0],  63,  42 + 30*j +  0, EGA_GREEN, InicioPulso[5][0] );
 | 
			
		||||
             DibujaPulsos( InicioPulso[j][1], 0x01 << j, Datos[1],  63,  42 + 30*j + 250, EGA_GREEN, InicioPulso[5][1] );
 | 
			
		||||
         }
 | 
			
		||||
         break;
 | 
			
		||||
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
 }while ( !ok );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void CargarOnda( char *file, char far *Datos, char Ventana )
 | 
			
		||||
{
 | 
			
		||||
 FILE *file_in;
 | 
			
		||||
 int i;
 | 
			
		||||
 char buffer[80];
 | 
			
		||||
 | 
			
		||||
 struct CABECERA
 | 
			
		||||
 {
 | 
			
		||||
  long DPulsos[6];
 | 
			
		||||
 } Cabecera;
 | 
			
		||||
 | 
			
		||||
 if ( ( file_in = fopen( file, "rb" ) ) != NULL )
 | 
			
		||||
 {
 | 
			
		||||
  fread( &Cabecera, sizeof( CABECERA ), 1, file_in );
 | 
			
		||||
 | 
			
		||||
  farfree( Datos );
 | 
			
		||||
  if ( ( Datos = (char far *)farmalloc( sizeof(char)*Cabecera.DPulsos[5] ) ) == NULL )
 | 
			
		||||
  {
 | 
			
		||||
   sprintf( buffer, "longitud %ld bytes.", (long)(sizeof(char)*Cabecera.DPulsos[5]) );
 | 
			
		||||
   Optar( 0, "ATENCION !!!", "No hay suficiente memoria", "no pude cargar el pulso", buffer, NULL );
 | 
			
		||||
   for ( i = 0; i  < 6; i++ )
 | 
			
		||||
      Cabecera.DPulsos[i] = 0;
 | 
			
		||||
  } else {
 | 
			
		||||
   fseek( file_in, sizeof( CABECERA ), SEEK_SET );
 | 
			
		||||
   fread( Datos, sizeof(char), Cabecera.DPulsos[5], file_in );
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  for ( i = 0; i < 6; i++ )
 | 
			
		||||
      InicioPulso[i][Ventana]  = Cabecera.DPulsos[i];
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  fclose(file_in);
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void SalvarOnda( char *file, char far *Datos, char Ventana )
 | 
			
		||||
{
 | 
			
		||||
 FILE *file_out;
 | 
			
		||||
 int i;
 | 
			
		||||
 | 
			
		||||
 struct CABECERA
 | 
			
		||||
 {
 | 
			
		||||
  long DPulsos[6];
 | 
			
		||||
 } Cabecera;
 | 
			
		||||
 | 
			
		||||
 if ( ( file_out = fopen( file, "wb" ) ) != NULL )
 | 
			
		||||
 {
 | 
			
		||||
  for ( i = 0; i < 6; i++ )
 | 
			
		||||
      Cabecera.DPulsos[i] = InicioPulso[i][Ventana];
 | 
			
		||||
 | 
			
		||||
  fwrite( &Cabecera, sizeof( CABECERA ), 1, file_out );
 | 
			
		||||
  fseek( file_out, sizeof( CABECERA ), SEEK_SET );
 | 
			
		||||
  fwrite( Datos, sizeof(char), Cabecera.DPulsos[5], file_out );
 | 
			
		||||
 | 
			
		||||
  fclose(file_out);
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void BorraPantalla(void)
 | 
			
		||||
{
 | 
			
		||||
 int CLS;
 | 
			
		||||
 setcolor( 0 );
 | 
			
		||||
 randomize();
 | 
			
		||||
 | 
			
		||||
 switch( random(4)+1 )
 | 
			
		||||
 {
 | 
			
		||||
  case 1:
 | 
			
		||||
    for ( CLS = 0; CLS < 640; CLS+=2 )
 | 
			
		||||
    {
 | 
			
		||||
     line( CLS,     0,     CLS, 479 );
 | 
			
		||||
     line( 639-CLS, 0, 639-CLS, 479 );
 | 
			
		||||
     delay( 10 );
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case 2:
 | 
			
		||||
    for ( CLS = 0; CLS < 480; CLS+=2 )
 | 
			
		||||
    {
 | 
			
		||||
     line( 0,     CLS, 639,     CLS );
 | 
			
		||||
     line( 0, 479-CLS, 639, 479-CLS );
 | 
			
		||||
     delay( 10 );
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case 3:
 | 
			
		||||
    for ( CLS = 0; CLS < 640*2; CLS+=2 )
 | 
			
		||||
    {
 | 
			
		||||
     line( 639-CLS,   0, 639 , CLS );
 | 
			
		||||
     line(     CLS,   479,   0, 480-CLS );
 | 
			
		||||
     delay( 10 );
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
  case 4:
 | 
			
		||||
    for ( CLS = 0; CLS < 640*2; CLS+=2 )
 | 
			
		||||
    {
 | 
			
		||||
     line( CLS,   0, 0, CLS );
 | 
			
		||||
     line( 640-CLS,   479, 639, 480-CLS );
 | 
			
		||||
     delay( 10 );
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void DibujaPulsos( long comienzo, char And_bit, char far *Datos, int x, int y, char color, long TotalPulsos )
 | 
			
		||||
{
 | 
			
		||||
 long Pulso;
 | 
			
		||||
 | 
			
		||||
 // seleccionamos el color de usuario
 | 
			
		||||
 setcolor( color );
 | 
			
		||||
 | 
			
		||||
 y += ALTO_PULSO + 5;
 | 
			
		||||
 | 
			
		||||
// moveto( x, y + ( comienzo > 0 ? ( ( Datos[comienzo-1] & And_bit ) ?  ALTO_PULSO : 0 ) : 0 ) );
 | 
			
		||||
 moveto( x, y - ( comienzo > 0 ? ( ( Datos[comienzo] & And_bit ) ?  ALTO_PULSO : 0 ) : 0 ) );
 | 
			
		||||
 for ( Pulso = comienzo; Pulso < ( comienzo + PULSO_QUE_CABEN ) & Pulso < TotalPulsos; Pulso++, x+=ANCHO_PULSO )
 | 
			
		||||
 {
 | 
			
		||||
  lineto( x, y - ( ( Datos[Pulso]   & And_bit ) ? ALTO_PULSO : 0 ) );
 | 
			
		||||
  lineto( x, y - ( ( Datos[Pulso+1] & And_bit ) ? ALTO_PULSO : 0 ) );
 | 
			
		||||
 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void DibujaSeparadores( int X1, int Y1, int X2, int Y2, char color )
 | 
			
		||||
{
 | 
			
		||||
 setcolor( color );
 | 
			
		||||
 | 
			
		||||
 setlinestyle( CENTER_LINE, 0, NORM_WIDTH );
 | 
			
		||||
 | 
			
		||||
 for ( ; X1 < X2; X1 += ANCHO_PULSO )
 | 
			
		||||
                      line( X1, Y1, X1, Y2 );
 | 
			
		||||
 | 
			
		||||
 setlinestyle( SOLID_LINE, 0, NORM_WIDTH );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void DibujaFondo(void)
 | 
			
		||||
{
 | 
			
		||||
 FILE *fp;
 | 
			
		||||
 int alto, ancho; unsigned char byte; int contador; char BitMap[40][40];
 | 
			
		||||
 | 
			
		||||
 int x, y, vez = -1;
 | 
			
		||||
 | 
			
		||||
 if ( ( fp = fopen ( "1.PCX", "rb" ) ) != NULL )
 | 
			
		||||
 {
 | 
			
		||||
  // Saltamos la cabecera
 | 
			
		||||
  fseek( fp, 128, SEEK_SET );
 | 
			
		||||
 | 
			
		||||
  for(alto=0; alto<32; alto++)
 | 
			
		||||
  {
 | 
			
		||||
    for(ancho=0; ancho<32; )
 | 
			
		||||
    {
 | 
			
		||||
      byte=getc(fp);
 | 
			
		||||
      if(byte<=0xC0)
 | 
			
		||||
      {
 | 
			
		||||
       if ( vez == -1 ) vez = byte;
 | 
			
		||||
       BitMap[ancho%32][alto%32] = byte;
 | 
			
		||||
       ancho++;
 | 
			
		||||
      }
 | 
			
		||||
      else
 | 
			
		||||
      {
 | 
			
		||||
	contador=byte&0x3F; byte=getc(fp);
 | 
			
		||||
	  for(; contador>0; contador--)
 | 
			
		||||
	  {
 | 
			
		||||
            BitMap[ancho%32][alto%32] = byte;
 | 
			
		||||
            ancho++;
 | 
			
		||||
	  }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  // Rellenamos la pantalla con un fondo atractivo...
 | 
			
		||||
  setfillstyle( SOLID_FILL, vez ); bar( 0, 0, 640, 480 );
 | 
			
		||||
  for ( ancho = 0; ancho < 32; ancho++ )
 | 
			
		||||
   for ( y = 0; y < 480; y+=35 )
 | 
			
		||||
    for ( alto = 0; alto < 32; alto++ )
 | 
			
		||||
     for ( x = 0; x < 640; x+=35 )
 | 
			
		||||
          putpixel( x + ancho, y + alto, BitMap[ancho][alto] );
 | 
			
		||||
  fclose( fp );
 | 
			
		||||
 } else {
 | 
			
		||||
  // Rellenamos la pantalla con un fondo atractivo...
 | 
			
		||||
  setcolor( 1 );
 | 
			
		||||
  setfillstyle( LTBKSLASH_FILL, 1 ); bar( 0, 0, 640, 480 );
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 Imprime_Estaticos( 10, "llave.img" );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 setfillstyle( SOLID_FILL, EGA_GREEN );
 | 
			
		||||
 setcolor( 11 );
 | 
			
		||||
 rectangle( 58, 23, 632, 197 );
 | 
			
		||||
*/
 | 
			
		||||
// & 58,  23, 632,  197,           0, 56, 63, 2, 2
 | 
			
		||||
// & 58, 273, 632,  447,           0, 56, 63, 2, 2
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void AnulaInterrupcion(void)
 | 
			
		||||
{
 | 
			
		||||
/* reset the old interrupt handler */
 | 
			
		||||
if ( intvect == ON )
 | 
			
		||||
                setvect(INTR, oldhandler);
 | 
			
		||||
intvect = OFF;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/***************************************************************************\
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
|* INT CLK                                                                 *|
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
|* Descripci<63>n:                                                            *|
 | 
			
		||||
|*              interrupci<63>n para el parpadeo de los led's                 *|
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
|* Entradas: (indeterminadas)                                              *|
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
|* Salidas:  (ninguna)                                                     *|
 | 
			
		||||
|*                                                                         *|
 | 
			
		||||
\***************************************************************************/
 | 
			
		||||
void interrupt handler(__CPPARGS)
 | 
			
		||||
{
 | 
			
		||||
/* increase the global counter */
 | 
			
		||||
 if ( IntVect == ON )
 | 
			
		||||
 {
 | 
			
		||||
   count = (count++)%16;
 | 
			
		||||
   if ( count == 1 )
 | 
			
		||||
   {
 | 
			
		||||
         setpalette( 11,  EGA_GREEN      );
 | 
			
		||||
         setpalette( 13,  EGA_LIGHTGREEN );
 | 
			
		||||
   }
 | 
			
		||||
   else if ( count == 8 )
 | 
			
		||||
   {
 | 
			
		||||
         setpalette( 11, EGA_RED        );
 | 
			
		||||
         setpalette( 13, EGA_LIGHTRED   );
 | 
			
		||||
 | 
			
		||||
   }
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
/* call the old routine */
 | 
			
		||||
   oldhandler();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void LeeFuentes(char *file)
 | 
			
		||||
{
 | 
			
		||||
FILE *fich;
 | 
			
		||||
	/* Reservamos 4 Kb. para cargar la fuente en memoria */
 | 
			
		||||
 | 
			
		||||
	/* Abrimos el fichero de la fuente */
 | 
			
		||||
 | 
			
		||||
        if ((fich=fopen(file,"rb"))==NULL) {
 | 
			
		||||
                printf("\a\nArchivo %s no encontrado.\n",file);
 | 
			
		||||
		Error(0, "No se encuentra el archivo de fuentes");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	fseek(fich, SEEK_SET, 0);	/* Nos colocamos al principio del fichero     */
 | 
			
		||||
        fread(ptr_char,1,4096,fich);      /* Cargamos en memoria 4096 bytes del fichero */
 | 
			
		||||
	fclose(fich);					/* Cerramos el fichero 								 */
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#define TAMx 8
 | 
			
		||||
#define TAMy 8
 | 
			
		||||
void Fuente_Amplia( char *Frase, p_Ampliada far *FA )
 | 
			
		||||
{
 | 
			
		||||
 int  i, j, k;           // Variables de avance
 | 
			
		||||
 int  c_elec;            // Color en el momento de imprimir
 | 
			
		||||
 int  PosX, PosY;        // Posicion fisica final
 | 
			
		||||
 char LCaract;           // Caracter de linea a tratar
 | 
			
		||||
 | 
			
		||||
 if ( FA->Flen != _fstrlen( Frase ) ) // Reseteamos las variables de control interno
 | 
			
		||||
 {
 | 
			
		||||
  // Obtenemos la longitud de la frase. ( En d<>gitos )
 | 
			
		||||
  FA -> Flen = _fstrlen( Frase );
 | 
			
		||||
  // Contador de digito actual a cero
 | 
			
		||||
  FA -> BitByte  = 0;
 | 
			
		||||
  // Posicion dentro de la frase
 | 
			
		||||
  FA -> currByte = 0;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 // Avance horizontal de bit's ( avance de digitos )
 | 
			
		||||
 for ( i = 0; i < ( TAMx * (FA -> ndigitos) ); i++ )
 | 
			
		||||
 {
 | 
			
		||||
  k = ( Frase[ ( (i+FA->BitByte)/TAMx + FA -> currByte ) % FA->Flen ] ) << 4;
 | 
			
		||||
  LCaract = ( (char)0x01 << (7 - (i+FA->BitByte)%TAMx) );
 | 
			
		||||
  PosX = FA -> x + FA->AX   * i;         // Posicion f<>sica horizontal
 | 
			
		||||
  // Avance vertical de bit's
 | 
			
		||||
  for ( j = 0; j < TAMy; j ++ )
 | 
			
		||||
  {
 | 
			
		||||
    PosY = FA -> y + FA->AY * j;         // Posicion f<>sica vertical
 | 
			
		||||
 | 
			
		||||
    if ( ptr_char[ k + j ] & LCaract )
 | 
			
		||||
      c_elec = FA->C2;
 | 
			
		||||
    else
 | 
			
		||||
      c_elec = FA->C1;
 | 
			
		||||
 | 
			
		||||
    putpixel ( PosX, PosY, c_elec );
 | 
			
		||||
  }
 | 
			
		||||
 }
 | 
			
		||||
 // Tenemos en cuenta el avance dentro de la frase
 | 
			
		||||
 if ( ( FA -> BitByte ++ ) >= 7 )
 | 
			
		||||
 {
 | 
			
		||||
  FA -> BitByte = 0; FA -> currByte ++;
 | 
			
		||||
  if ( FA -> currByte >= FA -> Flen )
 | 
			
		||||
     FA -> currByte = 0;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
#undef TAMy
 | 
			
		||||
#undef TAMx
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void Error( int code, char *MensajeError )
 | 
			
		||||
{
 | 
			
		||||
 free( ptr_char );
 | 
			
		||||
 AnulaInterrupcion();
 | 
			
		||||
 restorecrtmode();
 | 
			
		||||
 | 
			
		||||
 printf( "\nSe produjo un codigo de error %d, subcodigo no disponible ", code );
 | 
			
		||||
 switch( code )
 | 
			
		||||
 {
 | 
			
		||||
  case 0:
 | 
			
		||||
       printf( "\n Error Desconocido " );
 | 
			
		||||
       break;
 | 
			
		||||
  case 1:
 | 
			
		||||
       printf( "\n BDatos gener<65> el error de salida. |ERROR DE ACCESO| " );
 | 
			
		||||
       break;
 | 
			
		||||
  case 2:
 | 
			
		||||
       printf( "\n Make Boton gener<65> el error de salida " );
 | 
			
		||||
       break;
 | 
			
		||||
  case 3:
 | 
			
		||||
       printf( "\n Fall<6C> en alg<6C>n punto del men<65> principal" );
 | 
			
		||||
       break;
 | 
			
		||||
 | 
			
		||||
 };
 | 
			
		||||
 | 
			
		||||
 printf( "\n> %s_", MensajeError );
 | 
			
		||||
 exit(code);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										240
									
								
								LLAVE.IMG
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										240
									
								
								LLAVE.IMG
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,240 @@
 | 
			
		||||
** Codigo fuente para MAKE_BOTON
 | 
			
		||||
**
 | 
			
		||||
** Make BOTON es un programa realizado por Jos<6F> David Guill<6C>n
 | 
			
		||||
**
 | 
			
		||||
** Enlazar al programa principal con MB2CPP,  y compilar a OBJ para Linkar
 | 
			
		||||
**
 | 
			
		||||
**
 | 
			
		||||
** MAKE_BOTON es un producto de JD. -->>> 5.000 Libreria exelente para
 | 
			
		||||
**                                              tratamiento de botones y grf.
 | 
			
		||||
** ONDA_GRN  es un producto de JD. --->>> 5.000 Le gustaria representar ondas
 | 
			
		||||
**                                              sonoras con facilidad: ONDA_GRN        
 | 
			
		||||
**                                              UTILIZADO EN <20><><EFBFBD> FREC_OSC !!!      
 | 
			
		||||
**
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
*****************************************************************************
 | 
			
		||||
*
 | 
			
		||||
*  ATENCION !!! 
 | 
			
		||||
*               ALTERAR ESTE FICHERO, CAUSARA EL MALFUNCIONAMIENTO DEL
 | 
			
		||||
*               PROGRAMA DE APOYO... ( ERRORES NO DOCUMENTADOS )
 | 
			
		||||
*
 | 
			
		||||
*****************************************************************************
 | 
			
		||||
 | 
			
		||||
#3
 | 
			
		||||
 | 
			
		||||
!1,20
 | 
			
		||||
 | 
			
		||||
* Boton SALIR!!!
 | 
			
		||||
$ 570,  215, 630, 255,           7,  7,  7, 0, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
* Forma de onda
 | 
			
		||||
$ 15,  205,  48, 265,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
* Desplazamiento de ondas
 | 
			
		||||
$  58,  205, 110, 217,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
$  58,  217, 110, 229,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
$  58,  229, 110, 241,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
$  58,  241, 110, 253,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
$  58,  253, 110, 265,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
 $ 113,  205, 165, 217,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
 $ 113,  217, 165, 229,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
 $ 113,  229, 165, 241,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
 $ 113,  241, 165, 253,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
 $ 113,  253, 165, 265,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
* Reset Total
 | 
			
		||||
$ 170,  205, 185, 265,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
$ 185,  205, 200, 265,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
$ 200,  205, 215, 265,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
$ 215,  205, 230, 265,           7, 63, 56, 1, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
* Cargar / Salvar
 | 
			
		||||
$ 485, 205, 565,  233,           7, 63, 56, 2, 2, 000, 000
 | 
			
		||||
$ 485, 237, 565,  265,           7, 63, 56, 2, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
* Leer / ???
 | 
			
		||||
$ 400, 205, 480,  233,           7, 63, 56, 2, 2, 000, 000
 | 
			
		||||
*$ 300, 205, 380,  233,           7, 63, 56, 2, 2, 000, 000
 | 
			
		||||
$ 400, 237, 480,  265,           7, 63, 56, 2, 2, 000, 000
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
<EFBFBD>10
 | 
			
		||||
 | 
			
		||||
* Selector de forma de onda
 | 
			
		||||
& 15,  205,  48, 265,           7, 63, 56, 1, 2
 | 
			
		||||
 | 
			
		||||
*& 5,  20, 635,  200,           7, 63, 56, 2, 2
 | 
			
		||||
*& 5, 270, 635,  450,           7, 63, 56, 2, 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* Desplazamiento de ondas
 | 
			
		||||
&  58,  205, 110, 217,           7, 63, 56, 1, 2
 | 
			
		||||
&  58,  217, 110, 229,           7, 63, 56, 1, 2
 | 
			
		||||
&  58,  229, 110, 241,           7, 63, 56, 1, 2
 | 
			
		||||
&  58,  241, 110, 253,           7, 63, 56, 1, 2
 | 
			
		||||
&  58,  253, 110, 265,           7, 63, 56, 1, 2
 | 
			
		||||
 & 113,  205, 165, 217,           7, 63, 56, 1, 2
 | 
			
		||||
 & 113,  217, 165, 229,           7, 63, 56, 1, 2
 | 
			
		||||
 & 113,  229, 165, 241,           7, 63, 56, 1, 2
 | 
			
		||||
 & 113,  241, 165, 253,           7, 63, 56, 1, 2
 | 
			
		||||
 & 113,  253, 165, 265,           7, 63, 56, 1, 2
 | 
			
		||||
 |  60,     205,       2,  4,  0,  0,  <--- 1    1 --->,
 | 
			
		||||
 |  60,     217,       2,  4,  0,  0,  <--- 2    2 --->,
 | 
			
		||||
 |  60,     229,       2,  4,  0,  0,  <--- 3    3 --->,
 | 
			
		||||
 |  60,     241,       2,  4,  0,  0,  <--- 4    4 --->,
 | 
			
		||||
 |  60,     253,       2,  4,  0,  0,  <--- 5    5 --->,
 | 
			
		||||
 | 
			
		||||
* Reset Total
 | 
			
		||||
& 170,  205, 185, 265,           7, 63, 56, 1, 2
 | 
			
		||||
& 185,  205, 200, 265,           7, 63, 56, 1, 2
 | 
			
		||||
& 200,  205, 215, 265,           7, 63, 56, 1, 2
 | 
			
		||||
& 215,  205, 230, 265,           7, 63, 56, 1, 2
 | 
			
		||||
 | 170,     205,       2,  4,  1,  0, Retrocede,
 | 
			
		||||
 | 185,     205,       2,  4,  1,  0,  INICIO  ,
 | 
			
		||||
 | 200,     205,       2,  4,  1,  0,   FIN    ,
 | 
			
		||||
 | 215,     205,       2,  4,  1,  0,  Avanza  ,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* Boton SALIR!!!
 | 
			
		||||
& 600,  235, 30,  -1,           7, 63, 56, 3, 2
 | 
			
		||||
| 578,     220,       2,  6,  0,  0, Salir,
 | 
			
		||||
| 579,     221,       2,  6,  0, 63, Salir,
 | 
			
		||||
 | 
			
		||||
& 485, 205, 565,  233,           7, 63, 56, 2, 2
 | 
			
		||||
& 485, 237, 565,  265,           7, 63, 56, 2, 2
 | 
			
		||||
| 485,     207,       2,  5,  0,  0,   Cargar,
 | 
			
		||||
| 486,     208,       2,  5,  0, 63,   Cargar,
 | 
			
		||||
 | 
			
		||||
| 485,     237,       2,  5,  0,  0,   Salvar,
 | 
			
		||||
| 486,     238,       2,  5,  0, 63,   Salvar,
 | 
			
		||||
 | 
			
		||||
& 400, 205, 480,  233,           7, 63, 56, 2, 2
 | 
			
		||||
*& 300, 205, 380,  233,           7, 63, 56, 2, 2
 | 
			
		||||
& 400, 237, 480,  265,           7, 63, 56, 2, 2
 | 
			
		||||
| 404,     207,       2,  5,  0,  0, Leer Onda,
 | 
			
		||||
| 405,     208,       2,  5,  0, 63, Leer Onda,
 | 
			
		||||
*| 486,     238,       2,  5,  0, 63,   Salvar,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
*& 5,  20, 635,  200,           7, 63, 56, 2, 2
 | 
			
		||||
*& 5, 270, 635,  450,           7, 63, 56, 2, 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* Linea de fondo para ayudas
 | 
			
		||||
& 5, 455, 500,  475,           0, 63, 56, 0, 2
 | 
			
		||||
& 505, 455, 635,  475,        63,  0, 56, 0, 2
 | 
			
		||||
 | 
			
		||||
* Pulsadores da avance global
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* Ventanas para las formas de ondas
 | 
			
		||||
& 5,  20, 635,  200,           7, 63, 56, 2, 2
 | 
			
		||||
& 5, 270, 635,  450,           7, 63, 56, 2, 2
 | 
			
		||||
 & 58,  23, 632,  197,           0, 56, 63, 2, 2
 | 
			
		||||
 & 58, 273, 632,  447,           0, 56, 63, 2, 2
 | 
			
		||||
 | 
			
		||||
* Ventanitas para saber cuanto se ha desplazado una onda en particualar
 | 
			
		||||
& 10,  40, 53,  55,           0, 56, 63, 0, 2
 | 
			
		||||
& 10,  71, 53,  86,           0, 56, 63, 0, 2
 | 
			
		||||
& 10, 102, 53, 117,           0, 56, 63, 0, 2
 | 
			
		||||
& 10, 133, 53, 148,           0, 56, 63, 0, 2
 | 
			
		||||
& 10, 164, 53, 179,           0, 56, 63, 0, 2
 | 
			
		||||
* Ventanitas para saber cuanto se ha desplazado una onda en particualar
 | 
			
		||||
& 10, 290, 53, 305,           0, 56, 63, 0, 2
 | 
			
		||||
& 10, 321, 53, 336,           0, 56, 63, 0, 2
 | 
			
		||||
& 10, 352, 53, 367,           0, 56, 63, 0, 2
 | 
			
		||||
& 10, 383, 53, 398,           0, 56, 63, 0, 2
 | 
			
		||||
& 10, 414, 53, 429,           0, 56, 63, 0, 2
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 0,     0,       2,  4,  0,  0,    ,
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
* <20>                                                                      <20>
 | 
			
		||||
* <20>                              File Browser                            <20>
 | 
			
		||||
* <20>                                                                      <20>
 | 
			
		||||
* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
 | 
			
		||||
 | 
			
		||||
!2, 4
 | 
			
		||||
 | 
			
		||||
*Cuadro Cancelar
 | 
			
		||||
$  377, 169, 391, 221,       7,  56,  63,  0,  1, 00, 46
 | 
			
		||||
*Boton Aceptar
 | 
			
		||||
$  377, 223, 391, 276,       7,  56,  63,  0,  1, 00, 30
 | 
			
		||||
 | 
			
		||||
* Subir
 | 
			
		||||
$  377, 278, 391, 303,       7,  56,  63,  0,  1, 00, 72
 | 
			
		||||
* Bajar
 | 
			
		||||
$  377, 305, 391, 330,       7,  56,  63,  0,  1, 00, 80
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* x y fuente tama<6D>o orientacion color texto
 | 
			
		||||
 | 
			
		||||
* Men<65> para Cargar o Salvar
 | 
			
		||||
<EFBFBD>20
 | 
			
		||||
 | 
			
		||||
*Cuadro Total
 | 
			
		||||
&  240, 140, 400, 340,       7,  63,  56,  2,  1
 | 
			
		||||
&  243, 143, 397, 337,       7,  56,  63, -2,  1
 | 
			
		||||
*Cuadro Informativo
 | 
			
		||||
&  250, 150, 391, 164,       7,  56,  63, -0,  1
 | 
			
		||||
*Cuadro introduccion nuevos datos
 | 
			
		||||
&  250, 169, 375, 180,       0,  56,  63,  0,  1
 | 
			
		||||
*Cuadro de muestreo
 | 
			
		||||
&  250, 185, 375, 330,       0,  56,  63,  0,  1
 | 
			
		||||
 | 
			
		||||
*Cuadro Cancelar
 | 
			
		||||
&  377, 169, 391, 221,       7,  56,  63,  0,  1
 | 
			
		||||
*Boton Aceptar
 | 
			
		||||
&  377, 223, 391, 276,       7,  56,  63,  0,  1
 | 
			
		||||
 | 
			
		||||
* Subir
 | 
			
		||||
&  377, 278, 391, 303,       7,  56,  63,  0,  1
 | 
			
		||||
* Bajar
 | 
			
		||||
&  377, 305, 391, 330,       7,  56,  63,  0,  1
 | 
			
		||||
 | 
			
		||||
|377, 169, 2, 4, 1, 63, Cancelar,
 | 
			
		||||
 |378, 170, 2, 4, 1,  0, Cancelar,
 | 
			
		||||
  |377, 169, 2, 4, 1,  2, C       ,
 | 
			
		||||
   |378, 170, 2, 4, 1,  0, C       ,
 | 
			
		||||
|377, 223, 2, 4, 1, 63, Aceptar ,
 | 
			
		||||
 |378, 224, 2, 4, 1,  0, Aceptar ,
 | 
			
		||||
  |377, 223, 2, 4, 1,  2, A       ,
 | 
			
		||||
   |378, 224, 2, 4, 1,  0, A       ,
 | 
			
		||||
 | 
			
		||||
|377, 288, 2, 4, 0, 63,  -,
 | 
			
		||||
 |378, 289, 2, 4, 0,  0,  -,
 | 
			
		||||
|377, 315, 2, 4, 0, 63,  +,
 | 
			
		||||
 |378, 316, 2, 4, 0,  0,  +,
 | 
			
		||||
 | 
			
		||||
************************************************  Botones D:   6
 | 
			
		||||
****                                        ****  Botones S:
 | 
			
		||||
**          Parte Utilizada por Optar         **
 | 
			
		||||
****                                        ****
 | 
			
		||||
************************************************
 | 
			
		||||
!3, 2
 | 
			
		||||
 | 
			
		||||
$  170, 320, 270, 350,       7, 63, 56, 2, 2, 000,  30
 | 
			
		||||
$  370, 320, 470, 350,       7, 63, 56, 2, 2, 000,  46
 | 
			
		||||
 | 
			
		||||
<EFBFBD>100
 | 
			
		||||
&  170, 165, 470, 315,       7, 63, 56, 0, 2
 | 
			
		||||
&  172, 167, 468, 190,       1, 56, 63, 0, 2
 | 
			
		||||
 | 
			
		||||
&  170, 320, 270, 350,       7, 63, 56, 2, 2
 | 
			
		||||
|  175, 325,                 2,  6,  0, 63,  Aceptar,
 | 
			
		||||
|  176, 326,                 2,  6,  0,  0,  Aceptar,
 | 
			
		||||
|  175, 327,                 2,  6,  0, 63,  _,
 | 
			
		||||
|  176, 328,                 2,  6,  0,  0,  _,
 | 
			
		||||
 | 
			
		||||
&  370, 320, 470, 350,       7, 63, 56, 2, 2
 | 
			
		||||
|  373, 325,                 2,  6,  0, 63,  Cancelar,
 | 
			
		||||
|  374, 326,                 2,  6,  0,  0,  Cancelar,
 | 
			
		||||
|  373, 327,                 2,  6,  0, 63,  _,
 | 
			
		||||
|  374, 328,                 2,  6,  0,  0,  _,
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										752
									
								
								LLAVE_FL.CPP
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										752
									
								
								LLAVE_FL.CPP
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,752 @@
 | 
			
		||||
#include <io.h>
 | 
			
		||||
#include <dos.h>
 | 
			
		||||
#include <dir.h>
 | 
			
		||||
#include <direct.h>
 | 
			
		||||
#include <ctype.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdarg.h>
 | 
			
		||||
 | 
			
		||||
#include <string.h>
 | 
			
		||||
#include <alloc.h>
 | 
			
		||||
#include <conio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <graphics.h>
 | 
			
		||||
 | 
			
		||||
char flecha [18] [18] =
 | 
			
		||||
 {
 | 
			
		||||
  7,7,7,7,7,7,7,7,7,0,7,7,7,7,7,7,7,7,
 | 
			
		||||
  7,7,7,7,7,7,7,7,0,4,0,7,7,7,7,7,7,7,
 | 
			
		||||
  7,7,7,7,7,7,7,0,4,4,4,0,7,7,7,7,7,7,
 | 
			
		||||
  7,7,7,7,7,7,0,4,4,4,4,4,0,7,7,7,7,7,
 | 
			
		||||
  7,7,7,7,7,0,4,4,4,4,4,4,4,0,7,7,7,7,
 | 
			
		||||
  7,7,7,7,0,4,4,4,4,4,4,4,4,4,0,7,7,7,
 | 
			
		||||
  7,7,7,0,4,4,4,4,4,4,4,4,4,4,4,0,7,7,
 | 
			
		||||
  7,7,0,0,0,0,0,4,4,4,4,4,0,0,0,0,0,7,
 | 
			
		||||
  7,7,7,7,7,7,0,4,4,4,4,4,0,7,7,7,7,7,
 | 
			
		||||
  7,7,7,7,7,7,0,4,4,4,4,4,0,7,7,7,7,7,
 | 
			
		||||
  7,7,7,7,7,7,0,4,4,4,4,4,0,7,7,7,7,7,
 | 
			
		||||
  7,7,7,7,7,7,0,4,4,4,4,4,0,7,7,7,7,7,
 | 
			
		||||
  7,7,7,7,7,7,0,4,4,4,4,4,0,7,7,7,7,7,
 | 
			
		||||
  7,7,7,7,7,7,0,4,4,4,4,4,0,7,7,7,7,7,
 | 
			
		||||
  7,7,7,7,7,7,0,4,4,4,4,4,0,7,7,7,7,7,
 | 
			
		||||
  7,7,7,7,7,7,0,4,4,4,4,4,0,7,7,7,7,7,
 | 
			
		||||
  7,7,7,7,7,7,0,4,4,4,4,4,0,7,7,7,7,7,
 | 
			
		||||
  7,7,7,7,7,7,0,0,0,0,0,0,0,7,7,7,7,7
 | 
			
		||||
 };
 | 
			
		||||
void ponicono(int x,int y,char matriz[18][18], char pos)
 | 
			
		||||
{
 | 
			
		||||
 int veces1,veces2;
 | 
			
		||||
 | 
			
		||||
 for (veces1=0;veces1<=17;veces1++)
 | 
			
		||||
     {
 | 
			
		||||
     for (veces2=0;veces2<=17;veces2++)
 | 
			
		||||
	 {
 | 
			
		||||
 | 
			
		||||
          switch( pos )
 | 
			
		||||
          {
 | 
			
		||||
           case 1:
 | 
			
		||||
                   if ( matriz[veces1][veces2] != 3 )
 | 
			
		||||
           	    putpixel(x+veces1,y+veces2,matriz[veces1][veces2]);
 | 
			
		||||
                   break;
 | 
			
		||||
           case 2:
 | 
			
		||||
                   if ( matriz[17-veces2][veces1] != 3 )
 | 
			
		||||
           	    putpixel(x+veces1,y+veces2,matriz[17-veces2][veces1]);
 | 
			
		||||
                   break;
 | 
			
		||||
           case 3:
 | 
			
		||||
                   if ( matriz[17-veces1][veces2] != 3 )
 | 
			
		||||
           	    putpixel(x+veces1,y+veces2,matriz[17-veces1][veces2]);
 | 
			
		||||
                   break;
 | 
			
		||||
           case 4:
 | 
			
		||||
                   if ( matriz[veces2][veces1] != 3 )
 | 
			
		||||
           	    putpixel(x+veces1,y+veces2,matriz[veces2][veces1]);
 | 
			
		||||
                   break;
 | 
			
		||||
          }
 | 
			
		||||
	 }
 | 
			
		||||
     }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include "..\libs\make_bot\make_bot.h"
 | 
			
		||||
 | 
			
		||||
/*extern CFG_FREC cfgFREC;*/
 | 
			
		||||
////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
/***************************************************************************\
 | 
			
		||||
| Critical Disk Error handling routines (C) 1995 Jason Speight.             |
 | 
			
		||||
|	void interrupt critical_error_handler(__CPPARGS) is the interrupt which   |
 | 
			
		||||
|	captures disk io errors. (int 0x24, if you're interested!) Such errors    |
 | 
			
		||||
|	are : Disk not inserted in drive, seek error reading from a drive, general|
 | 
			
		||||
|	disk failure etc. The only things the interrupt does is :                 |
 | 
			
		||||
|		Suppress the dos ABORT,RETRY,FAIL,IGNORE statement                      |
 | 
			
		||||
|		Sets a variable erroroccurred to the dos error statement. (!=0)         |
 | 
			
		||||
|																																						|
 | 
			
		||||
|	StartCEH() and StopCEH() start and stop the error handler. YOU MUST       |
 | 
			
		||||
|	STOPCEH BEFORE THE EXIT OF THE PROGRAM. or else when you get a disk       |
 | 
			
		||||
|	error, the int 24 issued bu DOS points to the middle of nowhere! *HANG*   |
 | 
			
		||||
|																																						|
 | 
			
		||||
|	diskerror() is my routine to display a disk IO error. It also sets the    |
 | 
			
		||||
|	global variable erroroccurred to 0 for future use. This procedure also    |
 | 
			
		||||
|	needs access to "SCRNHNDL.H" and "BOXES.H"                                |
 | 
			
		||||
|																																						|
 | 
			
		||||
|	BTW, anybody know how to trap the message "PLEASE INSERT DISK FOR DRIVE x"|
 | 
			
		||||
\***************************************************************************/
 | 
			
		||||
 | 
			
		||||
void interrupt critical_error_handler(.../*__CPPARGS*/);	// interrupt prototype
 | 
			
		||||
void interrupt (*old_int24)(.../*__CPPARGS*/);			// interrupt function pointer
 | 
			
		||||
void startceh();
 | 
			
		||||
void stopceh();
 | 
			
		||||
 | 
			
		||||
int erroroccurred=0;
 | 
			
		||||
 | 
			
		||||
////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
 char files[13]   ;  //100 files, 12 byte filename (+1 for terminator!)
 | 
			
		||||
 long filesize    ; //Try as static.. free up that ram, bud.  (Use HUGE mem model)
 | 
			
		||||
 unsigned char attrs       ;
 | 
			
		||||
} SFile;
 | 
			
		||||
 | 
			
		||||
SFile far *S_File;
 | 
			
		||||
 | 
			
		||||
void FileDownRow(void);
 | 
			
		||||
void FileUpRow(void)  ;
 | 
			
		||||
void PrintWholeScreen_Files(void);
 | 
			
		||||
void PrintSelectRow( char Hide_Show );
 | 
			
		||||
 | 
			
		||||
unsigned char FileRow = 0; int FileCurrTopRow = 0;
 | 
			
		||||
unsigned int maxfiles=0;
 | 
			
		||||
unsigned int rasterscan(char *fm);
 | 
			
		||||
char Archivo[13];
 | 
			
		||||
void PrintVisor(void);
 | 
			
		||||
 | 
			
		||||
int Optar( int optar, ... );
 | 
			
		||||
 | 
			
		||||
int InputCadenaG(char *s, int numalp, int lmax, int cc, int cf, int left, int up, int right, int down);
 | 
			
		||||
 | 
			
		||||
char file_browser( char *comodin_name, char *texto1, char Cargar_Salvar );
 | 
			
		||||
 | 
			
		||||
char file_browser( char *comodin_name, char *texto1, char Cargar_Salvar ){
 | 
			
		||||
 | 
			
		||||
 int ok = 0, inst = 0;
 | 
			
		||||
 struct textsettingstype textinfo;
 | 
			
		||||
 char oldpath[229]=" -- NONE -- ";				//internal. do not change
 | 
			
		||||
 unsigned char olddrive=255;					//impossible drive name
 | 
			
		||||
 char olddisk, key; long MemVideo;
 | 
			
		||||
 | 
			
		||||
 startceh();
 | 
			
		||||
 | 
			
		||||
 FileRow = FileCurrTopRow = 0;
 | 
			
		||||
 | 
			
		||||
 olddrive = getdisk();
 | 
			
		||||
 getcwd( oldpath, 229 );
 | 
			
		||||
 | 
			
		||||
       void far *C_Texto;
 | 
			
		||||
 | 
			
		||||
MemVideo = JD_imagesize(240, 140, 400, 340);
 | 
			
		||||
C_Texto    = farmalloc( MemVideo );
 | 
			
		||||
S_File     = (SFile far *)farmalloc( sizeof(SFile) * 101 );
 | 
			
		||||
 | 
			
		||||
if( C_Texto == NULL || S_File == NULL )
 | 
			
		||||
{
 | 
			
		||||
 closegraph();
 | 
			
		||||
 cprintf("\n\rSALIENDO");
 | 
			
		||||
 cprintf("\n\rImposible encontrar %ldKbytes en el Heap %ld", (long)(sizeof(SFile)*101), MemVideo );
 | 
			
		||||
 return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
rasterscan( comodin_name );
 | 
			
		||||
 | 
			
		||||
gettextsettings(&textinfo);
 | 
			
		||||
 | 
			
		||||
getimage( 240, 140, 400, 340, C_Texto);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  Imprime_Estaticos( 20, "llave.IMG");     // Imprime botones estaticos 'Seccion 20'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
settextstyle( SMALL_FONT, HORIZ_DIR, 4);
 | 
			
		||||
 | 
			
		||||
setcolor( EGA_YELLOW );
 | 
			
		||||
outtextxy( 250+( ( 141 - textwidth(texto1) ) / 2 ), 150, texto1 );
 | 
			
		||||
 | 
			
		||||
PrintWholeScreen_Files();
 | 
			
		||||
PrintSelectRow( 1 );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
while(!ok){				  // Bucle infinito
 | 
			
		||||
 | 
			
		||||
 switch( Comprueba_Secuencia( 2, NULL ) ) {     // Iniciamos comprobacion de 2<> sec
 | 
			
		||||
 | 
			
		||||
       case  0:				  // No se pulso ningun BOTON
 | 
			
		||||
					  // Pero el raton fue presionado en
 | 
			
		||||
					  // algun sitio...
 | 
			
		||||
	       break;
 | 
			
		||||
       case -2:				  // Hay una tecla normal en BUFFER
 | 
			
		||||
	       switch( key = getch() ) {  // La utilizamos
 | 
			
		||||
		// ESC   ( CANCELAR )
 | 
			
		||||
		case 27:
 | 
			
		||||
			inst = 0;
 | 
			
		||||
			ok   = 1;
 | 
			
		||||
			break;
 | 
			
		||||
		case 13:
 | 
			
		||||
			switch( S_File[FileRow + FileCurrTopRow].attrs )
 | 
			
		||||
			{
 | 
			
		||||
			 // Si directorio: cambiamos simplemente
 | 
			
		||||
			 case FA_DIREC:
 | 
			
		||||
				chdir( S_File[FileRow + FileCurrTopRow].files );
 | 
			
		||||
				FileRow = FileCurrTopRow = 0;
 | 
			
		||||
				rasterscan( comodin_name );
 | 
			
		||||
				PrintWholeScreen_Files();
 | 
			
		||||
				PrintSelectRow( 1 );
 | 
			
		||||
			    break;
 | 
			
		||||
			 // Si unidad comprobamos que podemos cambiar y como directorio...
 | 
			
		||||
			 case 255:
 | 
			
		||||
				 erroroccurred=0;
 | 
			
		||||
				 olddisk=getdisk();
 | 
			
		||||
				 setdisk( (S_File[FileRow + FileCurrTopRow].files[0] - 'A') );
 | 
			
		||||
				 if (erroroccurred) {
 | 
			
		||||
					setdisk(olddisk);
 | 
			
		||||
				 } else {
 | 
			
		||||
				  FileRow = FileCurrTopRow = 0;
 | 
			
		||||
				  rasterscan( comodin_name );
 | 
			
		||||
				  PrintWholeScreen_Files();
 | 
			
		||||
				  PrintSelectRow( 1 );
 | 
			
		||||
				 }
 | 
			
		||||
			    break;
 | 
			
		||||
			 default:
 | 
			
		||||
			 if ( strcmp(Archivo, S_File[FileRow+FileCurrTopRow].files) == 0 )
 | 
			
		||||
			  {
 | 
			
		||||
			       if ( Cargar_Salvar == 0 ) {
 | 
			
		||||
				if ( access(Archivo, 0) != 0) break;
 | 
			
		||||
				 sprintf( comodin_name, "%c:\\", getdisk() + 'A' );
 | 
			
		||||
				 getcurdir(0,comodin_name+3);
 | 
			
		||||
				 strcat(comodin_name, "\\");
 | 
			
		||||
				 strcat(comodin_name, Archivo);
 | 
			
		||||
				 inst = 1;
 | 
			
		||||
				 ok   = 1;
 | 
			
		||||
			       }
 | 
			
		||||
			  }
 | 
			
		||||
			  strcpy(Archivo, S_File[FileRow+FileCurrTopRow].files);
 | 
			
		||||
			  PrintVisor();
 | 
			
		||||
			    break;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			break;
 | 
			
		||||
		default:
 | 
			
		||||
			strcpy( Archivo, "\0" );
 | 
			
		||||
			ungetch(key);
 | 
			
		||||
			InputCadenaG(Archivo, 0, 12, 0, /*cfgFREC.F_Texto*/1, 252, 171, 373, 178);
 | 
			
		||||
			if (Cargar_Salvar == 0)
 | 
			
		||||
			{
 | 
			
		||||
			 // Comprobamos que existe el fichero
 | 
			
		||||
			 if ( access(Archivo, 0) != 0)
 | 
			
		||||
			   strcpy( Archivo, "\0" );
 | 
			
		||||
			}
 | 
			
		||||
			 PrintVisor();
 | 
			
		||||
			break;
 | 
			
		||||
	       }
 | 
			
		||||
	       break;
 | 
			
		||||
       case -1:				  // Hay una tecla especial en BUFFER
 | 
			
		||||
	       getch();			  // La eliminamos
 | 
			
		||||
	       break;
 | 
			
		||||
       // Boton Aceptar
 | 
			
		||||
       case  2:
 | 
			
		||||
	       if ( Cargar_Salvar == 0 ) {
 | 
			
		||||
		if ( access(Archivo, 0) != 0) break;
 | 
			
		||||
		 sprintf( comodin_name, "%c:\\", getdisk() + 'A' );
 | 
			
		||||
		 getcurdir(0,comodin_name+3);
 | 
			
		||||
		 strcat(comodin_name, "\\");
 | 
			
		||||
		 strcat(comodin_name, Archivo);
 | 
			
		||||
		 inst = 1;
 | 
			
		||||
		 ok   = 1;
 | 
			
		||||
	       } else {
 | 
			
		||||
		if ( access(Archivo, 0) == 0)
 | 
			
		||||
		 if ( Optar( 1, "ATENCION !!!", "El fichero ya existe", "<EFBFBD> Desea reemplazarlo ?", NULL ) != 1 ) break;
 | 
			
		||||
		  sprintf( comodin_name, "%c:\\", getdisk() + 'A' );
 | 
			
		||||
		  getcurdir(0,comodin_name+3);
 | 
			
		||||
		  strcat(comodin_name, "\\");
 | 
			
		||||
		  strcat(comodin_name, Archivo);
 | 
			
		||||
		  inst = 1;
 | 
			
		||||
		  ok   = 1;
 | 
			
		||||
	       }
 | 
			
		||||
	       break;
 | 
			
		||||
       // Boton Cancelar
 | 
			
		||||
       case  1:
 | 
			
		||||
	       inst = 0;
 | 
			
		||||
	       ok   = 1;
 | 
			
		||||
	       break;
 | 
			
		||||
       // Boton Subir
 | 
			
		||||
       case  3:
 | 
			
		||||
	       FileUpRow();
 | 
			
		||||
	       break;
 | 
			
		||||
       // Boton Bajar
 | 
			
		||||
       case  4:
 | 
			
		||||
	       FileDownRow();
 | 
			
		||||
	       break;
 | 
			
		||||
       default:
 | 
			
		||||
	       while( kbhit() ) getch();  // Limpiamos posibles teclas en BUFFER
 | 
			
		||||
	       break;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
putimage( 240, 140, C_Texto, COPY_PUT);
 | 
			
		||||
 | 
			
		||||
farfree ( C_Texto    );
 | 
			
		||||
farfree ( S_File     );
 | 
			
		||||
 | 
			
		||||
settextstyle(textinfo.font, textinfo.direction, textinfo.charsize );
 | 
			
		||||
settextjustify(textinfo.horiz, textinfo.vert);
 | 
			
		||||
 | 
			
		||||
 setdisk(olddrive);
 | 
			
		||||
 chdir(oldpath);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
stopceh();
 | 
			
		||||
 | 
			
		||||
return inst;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
unsigned int rasterscan(char *fm) {
 | 
			
		||||
	struct ffblk ffblk;
 | 
			
		||||
	char done=0;
 | 
			
		||||
	unsigned int olddisk;
 | 
			
		||||
	maxfiles = 0;
 | 
			
		||||
 | 
			
		||||
// build a disk drive availiable list
 | 
			
		||||
	olddisk=getdisk();
 | 
			
		||||
	for (int i=1;i<27;i++) if (_chdrive(i) == 0)
 | 
			
		||||
	{
 | 
			
		||||
			sprintf( S_File[maxfiles].files, "%c:", (char)('A' + i - 1) );
 | 
			
		||||
			S_File[maxfiles].filesize=0;
 | 
			
		||||
			S_File[maxfiles].attrs=255;	// Unidad
 | 
			
		||||
			if (ffblk.ff_attrib & 16) S_File[maxfiles].filesize=0;
 | 
			
		||||
			maxfiles++;
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
	setdisk(olddisk);
 | 
			
		||||
 | 
			
		||||
//	drivelist[2]='N'; //stop access to B drive until I sort out pahntom dive probs
 | 
			
		||||
//Ok, Drive B may be a phantom drive. If you try to access drive B, then
 | 
			
		||||
//the program looses controll. Bummer!
 | 
			
		||||
// needs debugging. (always ignores drive b...)
 | 
			
		||||
//	asm int 0x11
 | 
			
		||||
//	asm mov equipmentlist,ax
 | 
			
		||||
//	drivelist[2]='N';
 | 
			
		||||
//	if ((equipmentlist & 16)) drivelist[2]='Y';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	done = findfirst("*.*",&ffblk,FA_DIREC);
 | 
			
		||||
	while (!done) {
 | 
			
		||||
		if (ffblk.ff_attrib == 0x10) {
 | 
			
		||||
			strcpy(S_File[maxfiles].files,ffblk.ff_name);
 | 
			
		||||
			S_File[maxfiles].filesize=ffblk.ff_fsize;
 | 
			
		||||
			S_File[maxfiles].attrs=ffblk.ff_attrib;
 | 
			
		||||
			if (ffblk.ff_attrib & 16) S_File[maxfiles].filesize=0;
 | 
			
		||||
			maxfiles++;
 | 
			
		||||
		}
 | 
			
		||||
			done = findnext(&ffblk);
 | 
			
		||||
			if (maxfiles==100) done=!done; //stop to prevent internal crashes.
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	done = findfirst(fm,&ffblk,FA_DIREC);
 | 
			
		||||
	while (!done)	{
 | 
			
		||||
		if (ffblk.ff_attrib != 0x10) {
 | 
			
		||||
			strcpy(S_File[maxfiles].files,ffblk.ff_name);
 | 
			
		||||
			S_File[maxfiles].filesize=ffblk.ff_fsize;
 | 
			
		||||
			S_File[maxfiles].attrs=ffblk.ff_attrib;
 | 
			
		||||
			if (ffblk.ff_attrib & 16) S_File[maxfiles].filesize=0;
 | 
			
		||||
			maxfiles++;
 | 
			
		||||
		}
 | 
			
		||||
		done = findnext(&ffblk);
 | 
			
		||||
		if (maxfiles==100) done=!done; //stop to prevent internal crashes.
 | 
			
		||||
	}
 | 
			
		||||
	if (maxfiles==0) { //no files to browse
 | 
			
		||||
		strcpy(S_File[0].files," -- NONE -- ");
 | 
			
		||||
		S_File[0].filesize=-1;
 | 
			
		||||
		maxfiles=1;}
 | 
			
		||||
	strcpy(S_File[100].files," -- NONE -- ");
 | 
			
		||||
	S_File[100].filesize=-1;
 | 
			
		||||
	return maxfiles;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
void PrintWholeScreen_Files(void )
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  int OldFileRow = FileRow ;
 | 
			
		||||
  char Contador;
 | 
			
		||||
 | 
			
		||||
  setfillstyle( SOLID_FILL, 0 );
 | 
			
		||||
  bar(252, 187, 374, 327);
 | 
			
		||||
 | 
			
		||||
  PrintSelectRow ( 0 );
 | 
			
		||||
	for ( FileRow = 0; FileRow < 14; FileRow++ )
 | 
			
		||||
		if ( ( FileRow + FileCurrTopRow ) < maxfiles )
 | 
			
		||||
						  PrintSelectRow ( 0 );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
  FileRow = OldFileRow;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void PrintSelectRow( char Hide_Show )
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  char Buffer[80];
 | 
			
		||||
    char Buff1[80];
 | 
			
		||||
	char Buff2[80];
 | 
			
		||||
 | 
			
		||||
  if ( Hide_Show==0 )
 | 
			
		||||
  {
 | 
			
		||||
     setfillstyle( SOLID_FILL, 0 );
 | 
			
		||||
     bar(252, 188 + ( FileRow * 10 ) , 373, 187 + 10 + ( FileRow * 10 ) );
 | 
			
		||||
     setcolor( /*cfgFREC.Texto*/EGA_RED );
 | 
			
		||||
  } else {
 | 
			
		||||
     setfillstyle( SOLID_FILL, /*cfgFREC.F_Texto*/EGA_YELLOW );
 | 
			
		||||
     bar(252, 188 + ( FileRow * 10 ) , 373, 187 + 10 + ( FileRow * 10 ) );
 | 
			
		||||
     setcolor(0);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
switch( S_File[FileRow + FileCurrTopRow].attrs )
 | 
			
		||||
{
 | 
			
		||||
 case FA_DIREC:
 | 
			
		||||
           sprintf(Buffer, "%-13s", S_File[FileRow+FileCurrTopRow].files );
 | 
			
		||||
           sprintf(Buff1 , "              < DIR >"                       );
 | 
			
		||||
         break;
 | 
			
		||||
 case 255:
 | 
			
		||||
           sprintf(Buffer, "%-8s", strncpy( Buff1, S_File[FileRow+FileCurrTopRow].files, 8) );
 | 
			
		||||
           sprintf(Buff1 , "             >DRIVER<"                                         );
 | 
			
		||||
        break;
 | 
			
		||||
 default:
 | 
			
		||||
 | 
			
		||||
           sprintf(Buffer, "%-13s",        S_File[FileRow+FileCurrTopRow].files);
 | 
			
		||||
//           outtextxy( 252 , 187 + ( FileRow * 10 ) , Buffer );
 | 
			
		||||
           sprintf(Buff1 , "             %7lu", S_File[FileRow+FileCurrTopRow].filesize );
 | 
			
		||||
	break;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
  outtextxy( 252 , 187 + ( FileRow * 10 ) , Buffer );
 | 
			
		||||
  outtextxy( 252 , 187 + ( FileRow * 10 ) , Buff1  );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void FileDownRow(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 // <20><> Estoy en la linea fisica 000 ???
 | 
			
		||||
 if ( (FileRow + FileCurrTopRow) != (maxfiles - 1) ) {
 | 
			
		||||
 | 
			
		||||
    // Linea 0, Baja Con retroceso multiple
 | 
			
		||||
    if ( FileRow == 13 ) {
 | 
			
		||||
	FileCurrTopRow += 14;
 | 
			
		||||
	while ( (FileCurrTopRow + FileRow) > maxfiles ) FileCurrTopRow--;
 | 
			
		||||
	FileRow =  0;
 | 
			
		||||
	PrintWholeScreen_Files();
 | 
			
		||||
	PrintSelectRow( 1 );
 | 
			
		||||
    } else {
 | 
			
		||||
	PrintSelectRow( 0 );
 | 
			
		||||
	FileRow++;
 | 
			
		||||
	PrintSelectRow( 1 );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void FileUpRow(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
 // <20><> Estoy en la linea fisica 000 ???
 | 
			
		||||
 if ( (FileRow + FileCurrTopRow) != 0 ) {
 | 
			
		||||
 | 
			
		||||
    // Linea 0, Baja Con retroceso multiple
 | 
			
		||||
    if ( FileRow == 0 ) {
 | 
			
		||||
	FileCurrTopRow -= 14;
 | 
			
		||||
	if ( FileCurrTopRow < 0 ) FileCurrTopRow = 0;
 | 
			
		||||
	FileRow =  0;
 | 
			
		||||
	PrintWholeScreen_Files();
 | 
			
		||||
	FileRow = 13;
 | 
			
		||||
	PrintSelectRow( 1 );
 | 
			
		||||
    } else {
 | 
			
		||||
	PrintSelectRow( 0 );
 | 
			
		||||
	FileRow--;
 | 
			
		||||
	PrintSelectRow( 1 );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
void diskerror(void) {
 | 
			
		||||
char message[30];
 | 
			
		||||
	pushscreen();
 | 
			
		||||
	draw3dboxup(19,10,43,6);
 | 
			
		||||
	draw3dboxdn(21,11,39,4);
 | 
			
		||||
	switch (erroroccurred) {
 | 
			
		||||
		case 1 : strcpy(message,"Write Protected Disk"); break;
 | 
			
		||||
		case 2 : strcpy(message,"Drive Not Ready"); break;
 | 
			
		||||
		case 3 : strcpy(message,"Unknown Command"); break;
 | 
			
		||||
		case 4 : strcpy(message,"Data Error (CRC)"); break;
 | 
			
		||||
		case 5 : strcpy(message,"Bad Request Structure Length"); break;
 | 
			
		||||
		case 6 : strcpy(message,"Seek Error"); break;
 | 
			
		||||
		case 7 : strcpy(message,"Unknown Media Type"); break;
 | 
			
		||||
		case 8 : strcpy(message,"Sector Not Found"); break;
 | 
			
		||||
		case 9 : strcpy(message,"Printer Out Of Paper"); break;
 | 
			
		||||
		case 10: strcpy(message,"Write Fault"); break;
 | 
			
		||||
		case 11: strcpy(message,"Read Fault"); break;
 | 
			
		||||
		case 12: strcpy(message,"General Failure"); break;
 | 
			
		||||
		default: strcpy(message,"Unknown Error");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	printcentered(12,"Error - Press any key to continue",0x74);
 | 
			
		||||
	printcentered(13,message,0x70);
 | 
			
		||||
	getch();
 | 
			
		||||
	popscreen();
 | 
			
		||||
	erroroccurred=0;
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
 | 
			
		||||
void interrupt critical_error_handler(.../*__CPPARGS*/) {
 | 
			
		||||
	asm push ax               //preserve only modified register
 | 
			
		||||
	asm mov ax,di							//di holds error code ranging from 0 to 0x0c
 | 
			
		||||
//	asm inc ax
 | 
			
		||||
	asm mov erroroccurred,ax	//increase erroroccurred for ease of programming
 | 
			
		||||
	asm mov al,0x20
 | 
			
		||||
	asm out 0x20,al  					//send interrupt clear flag
 | 
			
		||||
//  asm pushf									// I think I dont need this line in....
 | 
			
		||||
	asm pop ax								//restore ax
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void startceh() {
 | 
			
		||||
	old_int24 = _dos_getvect( 0x24 );
 | 
			
		||||
	_dos_setvect( 0x24, critical_error_handler);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
void stopceh() {
 | 
			
		||||
	_dos_setvect(0x24,old_int24);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
void PrintVisor(void)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
     setfillstyle( SOLID_FILL, 0 );
 | 
			
		||||
     bar(252, 171, 373, 178);
 | 
			
		||||
     setcolor( /*cfgFREC.Texto*/1 );
 | 
			
		||||
     outtextxy(252, 169, strupr(Archivo) );
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
//////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
int InputCadenaG(char *s, int numalp, int lmax, int cc, int cf, int left, int up, int right, int down)
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
  int  ls;                                      // longitud cadena
 | 
			
		||||
  char *s1;                                     // puntero a cadena inicial
 | 
			
		||||
  int c, ok = 0;
 | 
			
		||||
 | 
			
		||||
  s1 = s;                                       // inicio cadena
 | 
			
		||||
  ls = strlen ( s );                            // Longitud de actual
 | 
			
		||||
  s += ls;                                      // se coloca en el final
 | 
			
		||||
 | 
			
		||||
			setfillstyle(SOLID_FILL, cf);
 | 
			
		||||
  do{
 | 
			
		||||
			bar(left, up, right, down);
 | 
			
		||||
			setcolor(cc);
 | 
			
		||||
			outtextxy( left, up-2, s1 );
 | 
			
		||||
			if ( ls < lmax ) {
 | 
			
		||||
				setcolor(4);
 | 
			
		||||
				outtextxy( left+textwidth( s1 ), up-2, "<");
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
	switch( c = getch() )                   // obtiene tecla
 | 
			
		||||
	 {
 | 
			
		||||
	  case  0:
 | 
			
		||||
	  case 13:
 | 
			
		||||
		  ok = 1;                       // 13 = INTRO || Especiales
 | 
			
		||||
		  break;
 | 
			
		||||
	  case  8:
 | 
			
		||||
		  if ( ls > 0 ) {  	 	//  8 = Back Space
 | 
			
		||||
		   ls--;
 | 
			
		||||
		   s--;
 | 
			
		||||
		   *s = '\0';
 | 
			
		||||
		  }
 | 
			
		||||
		  break;
 | 
			
		||||
	  case 27:
 | 
			
		||||
		  *s='\0';
 | 
			
		||||
		  ok = 1;
 | 
			
		||||
		  break;
 | 
			
		||||
	  default:
 | 
			
		||||
		  if ( !numalp && c >= 32 && c <= 254 && ls < lmax)
 | 
			
		||||
		  {
 | 
			
		||||
			*s++ = toupper(c);
 | 
			
		||||
			ls++;
 | 
			
		||||
			*s = '\0';
 | 
			
		||||
		  } else
 | 
			
		||||
		  if ( numalp && isdigit(c)  && ls < lmax) {
 | 
			
		||||
				*s++ = c;
 | 
			
		||||
				ls++;
 | 
			
		||||
				*s = '\0';
 | 
			
		||||
		  }
 | 
			
		||||
		  break;
 | 
			
		||||
	 }
 | 
			
		||||
 | 
			
		||||
  }while(!ok);
 | 
			
		||||
 | 
			
		||||
  ok = 1;
 | 
			
		||||
  *s = ' ';
 | 
			
		||||
  while( ok ) {
 | 
			
		||||
		if(*s==' ') { *s = '\0'; s--;
 | 
			
		||||
		} else { s++; ok = 0; }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  *s = '\0';
 | 
			
		||||
 | 
			
		||||
  while(kbhit()) getch();              // Vacia Buffer impidiendo falsas
 | 
			
		||||
				       //  pulsaciones...
 | 
			
		||||
 | 
			
		||||
  return ls;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/************************************/
 | 
			
		||||
/************************************//************************************/
 | 
			
		||||
/************************************//************************************/
 | 
			
		||||
/************************************//************************************/
 | 
			
		||||
/************************************/
 | 
			
		||||
#define SEC_OPTAR 3
 | 
			
		||||
#define ENCUADRE       3
 | 
			
		||||
int Optar( int optar, ... )
 | 
			
		||||
{
 | 
			
		||||
 static void far *fondo, far *fd_aceptar, far *fd_cancelar;
 | 
			
		||||
 static char Memoria = 0;
 | 
			
		||||
 | 
			
		||||
 int DEV = 0, ok = 0, linea = 0;
 | 
			
		||||
 int Center; char *buff;
 | 
			
		||||
 struct textsettingstype texttypeinfo;
 | 
			
		||||
 | 
			
		||||
 va_list ap;
 | 
			
		||||
 va_start( ap, &optar );
 | 
			
		||||
 | 
			
		||||
 if ( Memoria == 1 )
 | 
			
		||||
 {
 | 
			
		||||
  putimage( 170, 165, fondo      , COPY_PUT );
 | 
			
		||||
  putimage( 170, 320, fd_aceptar , COPY_PUT );
 | 
			
		||||
  putimage( 370, 320, fd_cancelar, COPY_PUT );
 | 
			
		||||
 | 
			
		||||
  farfree( fondo       );
 | 
			
		||||
  farfree( fd_aceptar  );
 | 
			
		||||
  farfree( fd_cancelar );
 | 
			
		||||
 | 
			
		||||
  Memoria = 0;
 | 
			
		||||
 | 
			
		||||
  if ( optar == ENCUADRE ) return DEV;
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 if ( ( fondo       = farmalloc( JD_imagesize( 170, 165, 470, 315 ) ) ) != NULL &&
 | 
			
		||||
      ( fd_aceptar  = farmalloc( JD_imagesize( 170, 320, 270, 350 ) ) ) != NULL &&
 | 
			
		||||
      ( fd_cancelar = farmalloc( JD_imagesize( 370, 320, 470, 350 ) ) ) != NULL   )
 | 
			
		||||
 {
 | 
			
		||||
   Memoria = 1;
 | 
			
		||||
 | 
			
		||||
   getimage( 170, 165, 470, 315, fondo      );
 | 
			
		||||
   getimage( 170, 320, 270, 350, fd_aceptar );
 | 
			
		||||
   getimage( 370, 320, 470, 350, fd_cancelar);
 | 
			
		||||
 | 
			
		||||
   gettextsettings( &texttypeinfo );
 | 
			
		||||
 | 
			
		||||
   Imprime_Estaticos( 100, "llave.img" );
 | 
			
		||||
 | 
			
		||||
   settextstyle( SMALL_FONT, HORIZ_DIR, 6 );
 | 
			
		||||
 | 
			
		||||
   setcolor( 63 );
 | 
			
		||||
 | 
			
		||||
   while ( (buff = va_arg(ap, char *)) != NULL )
 | 
			
		||||
   {
 | 
			
		||||
     Center = (296 - textwidth( buff ) ) / 2;
 | 
			
		||||
     outtextxy( 172+Center, ( (linea == 0 ) ? 167 : 200 + 20*linea ), buff );
 | 
			
		||||
     linea++;
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
   va_end(ap);
 | 
			
		||||
 | 
			
		||||
   settextstyle( texttypeinfo.font, texttypeinfo.direction, texttypeinfo.charsize );
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
   if ( optar != ENCUADRE )
 | 
			
		||||
   {
 | 
			
		||||
    ok = 0;   	       while( kbhit() ) getch();  // Limpiamos posibles teclas en BUFFER
 | 
			
		||||
    do {
 | 
			
		||||
      switch( Comprueba_Secuencia( SEC_OPTAR, NULL ) )
 | 
			
		||||
      {
 | 
			
		||||
        case  0:				  // No se pulso ningun BOTON
 | 
			
		||||
        case -2:
 | 
			
		||||
        case -1:
 | 
			
		||||
	       while( kbhit() ) getch();  // Limpiamos posibles teclas en BUFFER
 | 
			
		||||
               if ( optar == 0 ) ok = 1;
 | 
			
		||||
	       break;
 | 
			
		||||
        case  1:
 | 
			
		||||
                DEV = 1; ok = 1;
 | 
			
		||||
                break;
 | 
			
		||||
        case  2:
 | 
			
		||||
                DEV = 0; ok = 1;
 | 
			
		||||
                break;
 | 
			
		||||
      }
 | 
			
		||||
    }while( !ok );
 | 
			
		||||
 | 
			
		||||
    putimage( 170, 165, fondo      , COPY_PUT );
 | 
			
		||||
    putimage( 170, 320, fd_aceptar , COPY_PUT );
 | 
			
		||||
    putimage( 370, 320, fd_cancelar, COPY_PUT );
 | 
			
		||||
 | 
			
		||||
   farfree( fondo       );
 | 
			
		||||
   farfree( fd_aceptar  );
 | 
			
		||||
   farfree( fd_cancelar );
 | 
			
		||||
 | 
			
		||||
   Memoria = 0;
 | 
			
		||||
 | 
			
		||||
   }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 } else {
 | 
			
		||||
     farfree( fondo       );
 | 
			
		||||
     farfree( fd_aceptar  );
 | 
			
		||||
     farfree( fd_cancelar );
 | 
			
		||||
 }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 return DEV;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,9 @@
 | 
			
		||||
#LLAVE 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
*10/06/1992* 
 | 
			
		||||
 
 | 
			
		||||
ToDo: wwtcf? 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user