commit 4cb68e1ee9b64ff40e8eb4460deb745247ef3b89 Author: jdg Date: Fri Sep 3 17:09:36 2021 +0200 First commit d diff --git a/AGEND.IMG b/AGEND.IMG new file mode 100644 index 0000000..177919c --- /dev/null +++ b/AGEND.IMG @@ -0,0 +1,115 @@ +*********** Este codigo debe ser modificado para LEFT UP RIGHT DOWN + +#1 + +1 + + +****************** HOJA 1 **************** +& 40, 20, 315, 450, 7, 63, 56, 2, 2 +****************** ANILLAS **************** +& 50, 300, 310, 80, 0, 56, 63, 1, 2 +& 90, 300, 310, 120, 0, 56, 63, 1, 2 +& 130, 300, 310, 160, 0, 56, 63, 1, 2 +& 170, 300, 310, 200, 0, 56, 63, 1, 2 +& 210, 300, 310, 240, 0, 56, 63, 1, 2 +& 250, 300, 310, 280, 0, 56, 63, 1, 2 +& 290, 300, 310, 320, 0, 56, 63, 1, 2 +& 330, 300, 310, 360, 0, 56, 63, 1, 2 +& 370, 300, 310, 400, 0, 56, 63, 1, 2 +& 410, 300, 310, 440, 0, 56, 63, 1, 2 + +****************** HOJA 2 **************** +& 40, 325, 620, 450, 7, 63, 56, 2, 1 +****************** ANILLAS **************** +& 50, 330, 340, 80, 0, 56, 63, 1, 1 +& 90, 330, 340, 120, 0, 56, 63, 1, 1 +& 130, 330, 340, 160, 0, 56, 63, 1, 1 +& 170, 330, 340, 200, 0, 56, 63, 1, 1 +& 210, 330, 340, 240, 0, 56, 63, 1, 1 +& 250, 330, 340, 280, 0, 56, 63, 1, 1 +& 290, 330, 340, 320, 0, 56, 63, 1, 1 +& 330, 330, 340, 360, 0, 56, 63, 1, 1 +& 370, 330, 340, 400, 0, 56, 63, 1, 1 +& 410, 330, 340, 440, 0, 56, 63, 1, 1 + +************ Union de anillas ************* +************ entre Hoja 1 y 2 ************* + +& 60, 305, 335, 70, 56, 7, 7, 0, 1 +& 100, 305, 335, 110, 56, 7, 7, 0, 1 +& 140, 305, 335, 150, 56, 7, 7, 0, 1 +& 180, 305, 335, 190, 56, 7, 7, 0, 1 +& 220, 305, 335, 230, 56, 7, 7, 0, 1 +& 260, 305, 335, 270, 56, 7, 7, 0, 1 +& 300, 305, 335, 310, 56, 7, 7, 0, 1 +& 340, 305, 335, 350, 56, 7, 7, 0, 1 +& 380, 305, 335, 390, 56, 7, 7, 0, 1 +& 420, 305, 335, 430, 56, 7, 7, 0, 1 + + +************ Recuadro de Nombre ************ +& 49, 395, 487, 65, 0, 63, 56, 0, 2 +& 67, 395, 487, 83, 0, 63, 56, 0, 2 +& 67, 488, 580, 83, 0, 63, 56, 0, 2 +************ Recuadro de Calle ************ +& 89, 395, 580, 105, 0, 63, 56, 0, 2 +************ Recuadro de Nmero ************ +& 107, 395, 415, 123, 0, 63, 56, 0, 2 +************ Recuadro de Piso ************ +& 107, 450, 470, 123, 0, 63, 56, 0, 2 + +*| 405, 107, 2, 4, 0, 0, Piso, + + + +!1,6 +****************** Botones **************** +****** RePg ***** +$ 420, 25, 125, 445, 7, 56, 63, 2, 2, 00, 67 +****** AvPg ***** +$ 420, 515, 615, 445, 7, 56, 63, 2, 1, 00, 67 + +****** Aadir **** +$ 45, 585, 615, 105, 7, 56, 63, 1, 1, 00, 67 +****** Supr. **** +$ 110, 585, 615, 180, 7, 56, 63, 1, 1, 00, 67 +****** Buscar **** +$ 185, 585, 615, 245, 7, 56, 63, 1, 1, 00, 67 +****** Salir **** +$ 250, 585, 615, 310, 7, 56, 63, 1, 1, 00, 67 + + +* & 40, 325, 620, 450, 7, 63, 56, 2, 1 + +11 + +| 30, 422, 2, 6, 0, 1, RePg, +| 520, 422, 2, 6, 0, 1, AvPg, + +| 587, 50, 2, 5, 1, 1, Aadir, +| 598, 50, 2, 5, 1, 1, F9 , + +| 587, 115, 2, 5, 1, 1, Suprimir, +| 598, 115, 2, 5, 1, 1, F10 , + +| 587, 190, 2, 5, 1, 1, Buscar, +| 598, 190, 2, 5, 1, 1, F5 , + +| 587, 255, 2, 5, 1, 1, Salir, +| 598, 255, 2, 5, 1, 1, F1 , + + +| 330, 50, 2, 4, 0, 0, Nombre, + +| 330, 90, 2, 4, 0, 0, Calle, +| 330, 107, 2, 4, 0, 0, n, +| 405, 107, 2, 4, 0, 0, Piso, + +* | 397, 50, 2, 4, 0, 63, MMMMMMMMM-MMMMMMMMM-MMMMMMMMM-, + + + +* x y fuente tamao orientacion color texto + + diff --git a/AGENDA.IMG b/AGENDA.IMG new file mode 100644 index 0000000..0a6d619 --- /dev/null +++ b/AGENDA.IMG @@ -0,0 +1,111 @@ +** Codigo fuente para MAKE_BOTON + +** Make BOTON es un programa realizado por Jos David Guilln + +#1 +!1,1 +$ 0, 0, 0, 0, 7, 63, 56, 2, 2, 000, 000 + + +1 +* Fondo Total +& 0, 0, 639, 479, 7, 56, 63, 0, 2 +* Cuadro de titulo +& 5, 5, 300, 25, 7, 63, 56, 0, 2 +| 5, 5, 2, 6, 0, 1, Registro General de Hermanos, +* Linea de fondo para ayudas +& 5, 455, 500, 475, 0, 63, 56, 0, 2 +& 505, 455, 635, 475, 63, 0, 56, 0, 2 +* Cuadro de vistazo rapido +& 5, 310, 635, 325, 7, 56, 63, 1, 1 +| 10, 310, 2, 5, 0, 1, N Hno Nombre Apellidos Direccion Telefono, +& 5, 325, 635, 450, 63, 56, 0, 1, 1 + +& 605, 5, 635, 25, 7, 63, 56, 0, 2 +| 609, 7, 2, 5, 0, 1, >, +& 570, 5, 600, 25, 7, 63, 56, 0, 2 +| 574, 7, 2, 5, 0, 1, >>, +& 535, 5, 565, 25, 7, 63, 56, 0, 2 +| 539, 7, 2, 5, 0, 1, <<, +& 500, 5, 530, 25, 7, 63, 56, 0, 2 +| 504, 7, 2, 5, 0, 1, <, + +& 500, 30, 565, 50, 7, 63, 56, 0, 2 +& 570, 30, 635, 50, 7, 63, 56, 0, 2 +| 572, 32, 2, 5, 0, 1, F2 Menu, + + + +| 10, 55, 2, 5, 0, 1, Nmero de Hermano, +& 150, 53, 300, 72, 63, 56, 0, 0, 2 +| 10, 80, 2, 5, 0, 1, Nombre, +& 150, 78, 300, 97, 63, 56, 0, 0, 2 +| 10, 105, 2, 5, 0, 1, Primer Apellido, +& 150, 103, 300, 122, 63, 56, 0, 0, 2 +| 320, 105, 2, 5, 0, 1, Segundo Apellido, +& 480, 103, 630, 122, 63, 56, 0, 0, 2 +| 10, 130, 2, 5, 0, 1, Direccin, +& 150, 128, 390, 147, 63, 56, 0, 0, 2 +| 390, 130, 2, 5, 0, 1, N, +& 425, 128, 460, 147, 63, 56, 0, 0, 2 +| 460, 130, 2, 5, 0, 1, Piso, +& 530, 128, 630, 147, 63, 56, 0, 0, 2 + +| 10, 155, 2, 5, 0, 1, C.P., +& 60, 153, 140, 172, 63, 56, 0, 0, 2 +| 150, 155, 2, 5, 0, 1, Poblacin, +& 230, 153, 390, 172, 63, 56, 0, 0, 2 +| 400, 155, 2, 5, 0, 1, Provincia, +& 480, 153, 630, 172, 63, 56, 0, 0, 2 + +* Cuadro para enmarcar FN, Ant, R, UP, P +& 10, 180, 300, 305, 7, 56, 63, 1, 1 + +| 10, 185, 2, 5, 0, 1, Fecha de Nacimiento, +& 170, 183, 290, 202, 63, 56, 0, 0, 2 +| 10, 210, 2, 5, 0, 1, Antigedad, +& 170, 208, 290, 227, 63, 56, 0, 0, 2 +| 10, 235, 2, 5, 0, 1, Reserva, +& 271, 233, 290, 252, 63, 56, 0, 0, 2 +| 10, 260, 2, 5, 0, 1, Ultima Posicin, +& 150, 258, 290, 277, 63, 56, 0, 0, 2 +| 10, 285, 2, 5, 0, 1, Posicin, +& 150, 283, 290, 302, 63, 56, 0, 0, 2 + + +| 400, 185, 2, 5, 0, 1, Telfono 1, +& 480, 183, 630, 202, 63, 56, 0, 0, 2 +| 400, 210, 2, 5, 0, 1, Telfono 2, +& 480, 208, 630, 227, 63, 56, 0, 0, 2 + +* Cuadro para englobar todo lo de abajo +& 360, 230, 630, 305, 7, 56, 63, 1, 1 + +| 400, 230, 2, 5, 0, 1, Acogido a cuota familiar?, +& 380, 232, 390, 242, 63, 56, 0, 0, 2 +| 400, 241, 2, 5, 0, 1, Recibe notificaciones?, +& 380, 243, 390, 253, 63, 56, 0, 0, 2 +| 400, 252, 2, 5, 0, 1, Tiene posibilidad de votar?, +& 380, 254, 390, 264, 63, 56, 0, 0, 2 +| 400, 263, 2, 5, 0, 1, Realiz la est. de penitencia?, +& 380, 265, 390, 275, 63, 56, 0, 0, 2 +| 400, 274, 2, 5, 0, 1, Posee tunica de propiedad?, +& 380, 276, 390, 286, 63, 56, 0, 0, 2 +| 400, 285, 2, 5, 0, 1, Cristo ? Virgen ?, +& 380, 287, 390, 297, 63, 56, 0, 0, 2 +& 520, 287, 530, 297, 63, 56, 0, 0, 2 + + +*** CREACION DE UNA VENTANA +*& 50, 50, 350, 200, 7, 63, 56, 0, 2 +*& 52, 52, 348, 75, 1, 56, 63, 0, 2 + +*& 51, 100, 101, 99, -1, 56, 63, 0, 2 + + + + + + + + diff --git a/EGAVGA.BGI b/EGAVGA.BGI new file mode 100644 index 0000000..8001631 Binary files /dev/null and b/EGAVGA.BGI differ diff --git a/HERM.IMG b/HERM.IMG new file mode 100644 index 0000000..25b2aef --- /dev/null +++ b/HERM.IMG @@ -0,0 +1,103 @@ +** Codigo fuente para MAKE_BOTON + +** Make BOTON es un programa realizado por Jos David Guilln + +#1 +!1,1 +$ 0, 0, 0, 0, 7, 63, 56, 2, 2, 000, 000 + + +1 +* Fondo Total +& 0, 0, 639, 479, 7, 56, 63, 0, 2 +* Cuadro de titulo +& 5, 5, 300, 25, 7, 63, 56, 0, 2 +| 5, 5, 2, 6, 0, 1, Registro General de Hermanos, +* Linea de fondo para ayudas +& 5, 455, 500, 475, 0, 63, 56, 0, 2 +& 505, 455, 635, 475, 63, 0, 56, 0, 2 +* Cuadro de vistazo rapido +& 5, 310, 635, 325, 7, 56, 63, 1, 1 +| 10, 310, 2, 5, 0, 1, N Hno Nombre Apellidos Direccion Telefono, +& 5, 325, 635, 450, 63, 56, 0, 1, 1 + +& 605, 5, 635, 25, 7, 63, 56, 0, 2 +| 609, 7, 2, 5, 0, 1, >, +& 570, 5, 600, 25, 7, 63, 56, 0, 2 +| 574, 7, 2, 5, 0, 1, >>, +& 535, 5, 565, 25, 7, 63, 56, 0, 2 +| 539, 7, 2, 5, 0, 1, <<, +& 500, 5, 530, 25, 7, 63, 56, 0, 2 +| 504, 7, 2, 5, 0, 1, <, + +& 500, 30, 565, 50, 7, 63, 56, 0, 2 +& 570, 30, 635, 50, 7, 63, 56, 0, 2 +| 572, 32, 2, 5, 0, 1, F2 Menu, + + + +| 10, 55, 2, 5, 0, 1, Nmero de Hermano, +& 150, 53, 300, 72, 63, 56, 0, 0, 2 +| 10, 80, 2, 5, 0, 1, Nombre, +& 150, 78, 300, 97, 63, 56, 0, 0, 2 +| 10, 105, 2, 5, 0, 1, Primer Apellido, +& 150, 103, 300, 122, 63, 56, 0, 0, 2 +| 320, 105, 2, 5, 0, 1, Segundo Apellido, +& 480, 103, 630, 122, 63, 56, 0, 0, 2 +| 10, 130, 2, 5, 0, 1, Direccin, +& 150, 128, 390, 147, 63, 56, 0, 0, 2 +| 390, 130, 2, 5, 0, 1, N, +& 425, 128, 460, 147, 63, 56, 0, 0, 2 +| 460, 130, 2, 5, 0, 1, Piso, +& 530, 128, 630, 147, 63, 56, 0, 0, 2 + +| 10, 155, 2, 5, 0, 1, C.P., +& 60, 153, 140, 172, 63, 56, 0, 0, 2 +| 150, 155, 2, 5, 0, 1, Poblacin, +& 230, 153, 390, 172, 63, 56, 0, 0, 2 +| 400, 155, 2, 5, 0, 1, Provincia, +& 480, 153, 630, 172, 63, 56, 0, 0, 2 + +* Cuadro para enmarcar FN, Ant, R, UP, P +& 10, 180, 300, 305, 7, 56, 63, 1, 1 + +| 10, 185, 2, 5, 0, 1, Fecha de Nacimiento, +& 170, 183, 290, 202, 63, 56, 0, 0, 2 +| 10, 210, 2, 5, 0, 1, Antigedad, +& 170, 208, 290, 227, 63, 56, 0, 0, 2 +| 10, 235, 2, 5, 0, 1, Reserva, +& 271, 233, 290, 252, 63, 56, 0, 0, 2 +| 10, 260, 2, 5, 0, 1, Ultima Posicin, +& 150, 258, 290, 277, 63, 56, 0, 0, 2 +| 10, 285, 2, 5, 0, 1, Posicin, +& 150, 283, 290, 302, 63, 56, 0, 0, 2 + + +| 400, 185, 2, 5, 0, 1, Telfono 1, +& 480, 183, 630, 202, 63, 56, 0, 0, 2 +| 400, 210, 2, 5, 0, 1, Telfono 2, +& 480, 208, 630, 227, 63, 56, 0, 0, 2 + +* Cuadro para englobar todo lo de abajo +& 360, 230, 630, 305, 7, 56, 63, 1, 1 + +| 400, 230, 2, 5, 0, 1, Acogido a cuota familiar?, +& 380, 232, 390, 242, 63, 56, 0, 0, 2 +| 400, 241, 2, 5, 0, 1, Recibe notificaciones?, +& 380, 243, 390, 253, 63, 56, 0, 0, 2 +| 400, 252, 2, 5, 0, 1, Tiene posibilidad de votar?, +& 380, 254, 390, 264, 63, 56, 0, 0, 2 +| 400, 263, 2, 5, 0, 1, Realiz la est. de penitencia?, +& 380, 265, 390, 275, 63, 56, 0, 0, 2 +| 400, 274, 2, 5, 0, 1, Posee tunica de propiedad?, +& 380, 276, 390, 286, 63, 56, 0, 0, 2 +| 400, 285, 2, 5, 0, 1, Cristo ? Virgen ?, +& 380, 287, 390, 297, 63, 56, 0, 0, 2 +& 520, 287, 530, 297, 63, 56, 0, 0, 2 + + +*** CREACION DE UNA VENTANA +*& 50, 50, 350, 200, 7, 63, 56, 0, 2 +*& 52, 52, 348, 75, 1, 56, 63, 0, 2 + +*& 51, 100, 101, 99, -1, 56, 63, 0, 2 diff --git a/LITT.CHR b/LITT.CHR new file mode 100644 index 0000000..08c3067 Binary files /dev/null and b/LITT.CHR differ diff --git a/MAKE_BOT.OBJ b/MAKE_BOT.OBJ new file mode 100644 index 0000000..aea51bc Binary files /dev/null and b/MAKE_BOT.OBJ differ diff --git a/P.EXE b/P.EXE new file mode 100644 index 0000000..b8c17f8 Binary files /dev/null and b/P.EXE differ diff --git a/PRUEBA_B.CPP b/PRUEBA_B.CPP new file mode 100644 index 0000000..e15ca65 --- /dev/null +++ b/PRUEBA_B.CPP @@ -0,0 +1,49 @@ +#include // Para getch(); +#include // Para outtextxy(...); y cleardevice(...); + +#include "..\libs\make_bot\make_bot.h" // Fuciones de MAKE_BOTON + + +int main(void){ + + + Initialize( 9, 2 ); // Inicializa el Modo Grfico + carga_botones("Agenda.img"); // Carga botones del fichero "botones.p1" + + + Imprime_Estaticos( 1, "Agenda.img"); // Imprime botones estaticos 'Seccion 1' + + Imprime_Secuencia(1); // Imprime secuencia 1. + + Imprime_Estaticos(11, "Agenda.img"); // Imprime Textos ( 1 ), secuencia 1 +/* +while(1){ // Bucle infinito + + switch( Comprueba_Secuencia( 1 ) ) { // Iniciamos comprobacion + + case 0: // No se pulso ningun BOTON + while( kbhit() ) getch(); // Limpiamos posibles teclas en BUFFER + break; + case -1: // Hay una tecla especial en BUFFER + getch(); // La eliminamos + break; + case 1: + Ayuda(); + cleardevice(); + Imprime_Estaticos( 1, "botones.p1"); // Devolvemos el aspecto inicial + Imprime_Secuencia(1); + break; + case 2: + restorecrtmode(); + return 0; + default: + break; + } + +} +*/ +getch(); +restorecrtmode(); +return 0; + +} diff --git a/PRUEBA_B.PRJ b/PRUEBA_B.PRJ new file mode 100644 index 0000000..be6dca3 Binary files /dev/null and b/PRUEBA_B.PRJ differ diff --git a/R.BAT b/R.BAT new file mode 100644 index 0000000..018aa6f --- /dev/null +++ b/R.BAT @@ -0,0 +1 @@ +edit agenda.img diff --git a/SM2.CPP b/SM2.CPP new file mode 100644 index 0000000..842a991 --- /dev/null +++ b/SM2.CPP @@ -0,0 +1,261 @@ +// Demostracin del uso del RATON en SVGA +// Jos David Guilln +// +// +// FuTuReViSiOn +// +// +// +// +// +// +// +// + +#include +#include +#include +#include + +void InicializaSVGA(void); +void PreparaCuadricula256col(void); +extern int far _Cdecl Svga256_fdriver[]; +int huge DetectVGA256(){ return 2; } + +#define T 255 +#define C1 31 +#define C2 4 +#define C3 12 + + +#define Ancho_Pantalla 640 +#define Largo_Pantalla 640 + +unsigned char Puntero [ /* 21 * 28 */ ] = { + T, T, T, T, T, T, C1, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T + , T, T, T, T, T, C1, C2, C1, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T + , T, T, T, T, C1, C2, C2, C2, C1, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T + , T, T, T, C1, C3, C2, C2, C2, C2, C1, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T + , T, T, C1, C3, C3, C2, C2, C2, C2, C2, C1, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T + , T, C1, C3, C3, C2, C2, C2, C2, C2, C2, C2, C1, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T + , T, C1, C1, C1, C1, C2, C2, C2, C1, C1, C1, C1, T, T, T, T, T, C1, C1, C1, C1, C1, C1, C1, C1, T, T, T + , T, T, T, T, C1, C3, C2, C2, C1, T, T, T, T, T, T, T, C1, C2, C2, C2, C2, C2, C2, C2, C2, C1, T, T + , T, T, T, T, C1, C3, C2, C2, C1, T, T, T, T, T, T, C1, C2, C2, C2, C1, C1, C1, C1, C2, C2, C2, C1, T + , T, T, T, T, C1, C3, C2, C2, C1, T, T, T, T, T, C1, C2, C2, C2, C1, T, T, T, T, C1, C2, C2, C2, C1 + , T, T, T, T, C1, C3, C2, C2, C1, T, T, T, T, T, T, C1, C2, C2, C1, T, T, T, T, C1, C2, C2, C1, T + , T, T, T, C1, C3, C2, C2, C2, C2, C1, T, T, T, T, T, T, C1, C1, T, T, T, T, C1, C2, C2, C1, T, T + , T, T, C1, C3, C2, C2, C1, C2, C2, C2, C1, T, T, T, T, T, T, T, T, T, T, C1, C2, C2, C1, T, T, T + , T, C1, C3, C2, C2, C1, T, C1, C2, C2, C2, C1, T, T, T, T, T, T, T, T, C1, C2, C2, C1, T, T, T, T + , C1, C3, C2, C2, C1, T, T, T, C1, C2, C2, C2, C1, T, T, T, T, T, T, C1, C2, C2, C1, T, T, T, T, T + , T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, C1, C2, C2, C1, T, T, T, T, T + , T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, C1, C1, T, T, T, T, T, T + , T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T + , T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, C1, C1, T, T, T, T, T, T + , T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, C1, C2, C2, C1, T, T, T, T, T + , T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, T, C1, C1, T, T, T, T, T, T + }; + +char raton = 0; +unsigned char *Fondo_Raton; + +int X_Mouse, Y_Mouse; + +int Anclar_Raton(void); +void Inicializa_Raton(int x1, int y1, int x2, int y2); +unsigned char Pon_Pixel( unsigned long y, unsigned long x, unsigned char color ); + +void main( void ) + { + char Resultado; + + InicializaSVGA(); + + PreparaCuadricula256col(); + + Inicializa_Raton( 10, 10, 630, 470); + + if ( !raton ) return; + + Resultado = Anclar_Raton(); + + // Regresamos al modo texto + restorecrtmode(); + + if ( Resultado ) + { + if ( X_Mouse == Y_Mouse && Y_Mouse == -1 ) + cprintf( " Se pulso una tecla, 1Scan Code: % 3d \n\r", getch() ); + else + cprintf( " Se pulso un Boton en X: % 3d -- Y: % 3d \n\r", X_Mouse, Y_Mouse ); + } + else + cprintf( " Error Interno de asignacion de memoria \n\r" ); + + } + + +// los parmetros son las cotas para el raton +void Inicializa_Raton(int x1, int y1, int x2, int y2) +{ + +int px = 50, py = 50; + +if ( Y_Mouse != -1 && X_Mouse != -1 ) + { + px = X_Mouse; py = Y_Mouse; + } + + union REGS ent, sal; + long dir; + + ent.x.ax = 0; + int86(0x33, &ent, &sal); /* averigua si hay ratn conectado */ + + raton = sal.x.ax; /* indica a la variable global el estado + del raton */ + + if(raton!=0) { + + ent.x.ax = 15; + ent.x.cx = 5; + ent.x.dx = 11; + int86(0x33, &ent, &sal); /* fija la razn mickey/pixel */ + + ent.x.ax = 7; + ent.x.cx = x1; + ent.x.dx = x2; + int86(0x33, &ent, &sal); /* fija la posicin mx. y mn. horizontal */ + + ent.x.ax = 8; + ent.x.cx = y1; + ent.x.dx = y2; + int86(0x33, &ent, &sal); /* fija la posicin mx. y mn. vertical */ + + ent.x.ax = 4; + ent.x.cx = px; + ent.x.dx = py; + int86(0x33, &ent, &sal); /* fija la posicin del ratn */ + + ent.x.ax = 2; + int86(0x33, &ent, &ent); + + } +} + + +// De esta funcin solo se regresa cuando se pulse una tecla o un Boton. +// Devuelve 1 si todo va bien, o 0 si hay un error interno de gestin. +int Anclar_Raton(void) + { + char i,j; + union REGS io; + io.x.ax = 3; + + static int Old_X_Mouse = X_Mouse, Old_Y_Mouse = Y_Mouse; + char ok = 0, Draw = 1; + + + if ( ( Fondo_Raton = (char *)malloc( 28*21 ) ) == NULL ) + return 0; + + do{ + if( Draw ) + { + + for( i = 0; i < 21; i++) + for( j = 0; j < 28; j++ ) + { + Fondo_Raton[ i*28 + j ] = getpixel( (j + X_Mouse), (i + Y_Mouse) ); + if( Puntero[ i*28 + j ] != 255 ) + putpixel( (j + X_Mouse), (i + Y_Mouse), Puntero[ i*28 + j ] ); + } + + } + Draw = 0; + + // Esperamos a que se mueva el raton / pulse un boton o una tecla + do{ + // Gestionamos las teclas + if ( kbhit() ) + { + X_Mouse = Y_Mouse = -1; + ok = 1; + break; + // Si no hay teclas, los parmetros del RATON habrn cambiado + } else { + int86(0x33, &io, &io); // lee posicin y estados del botn + X_Mouse = io.x.cx; + Y_Mouse = io.x.dx; + // Se Puls Un BOTON ? + // B.Izquierdo B. Derecho + if ( (io.x.bx & 1) != 0 || ( (io.x.bx >> 1) & 1 ) != 0 ) + { + ok = 1; + break; + } else + /* Se movi el Puntero ? */ + if ( X_Mouse != Old_X_Mouse || Y_Mouse != Old_Y_Mouse ) + { + // Restauramos el contenido de la pantalla + for( i = 0; i < 21; i++) + for( j = 0; j < 28; j++ ) + putpixel( ( j + Old_X_Mouse), (i + Old_Y_Mouse), Fondo_Raton[ i*28 + j ] ); + + Old_X_Mouse = X_Mouse; + Old_Y_Mouse = Y_Mouse; + Draw = 1; + break; + } + } + }while( 1 ); + + }while(!ok); + + // Restauramos el contenido de la pantalla + for( i = 0; i < 21; i++) + for( j = 0; j < 28; j++ ) + putpixel( ( j + Old_X_Mouse), (i + Old_Y_Mouse), Fondo_Raton[ i*28 + j ] ); + + free( Fondo_Raton ); + return 1; + + } + + + + +void InicializaSVGA(void) { + + int Gd = DETECT, Gm; + int Drv, errorcode; + + installuserdriver("Svga256",DetectVGA256); + + initgraph(&Gd,&Gm,""); + + errorcode = graphresult(); + +if (errorcode != grOk) +{ + cprintf("Graphics error: %s\n", grapherrormsg(errorcode)); + cprintf("Presione una tecla para finalizar:"); + getch(); + exit(1); +} + +} + +void PreparaCuadricula256col(void) + { + int x, y, color = 0; + + for( y = 0; y < 16; y++ ) + for( x = 0; x < 16; x++ ) + { + setcolor(color); + setfillstyle( SOLID_FILL, color ); + bar( 40*x, 30*y, 40+40*x+40, 30+30*y); + color++; + } + + }